aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZiemowit Laski <zlaski@apple.com>2004-08-04 20:52:18 +0000
committerZiemowit Laski <zlaski@apple.com>2004-08-04 20:52:18 +0000
commit6f7b952085033c8d3cd11d5348d5038bbe8e022d (patch)
treeda43ec591b86fc256537be0514e0f14ce000d14d
parent6c453efa63ef0d9a6a9320a7749e0344e9463de4 (diff)
[ChangeLog.objc-improvements]
2004-08-04 Ziemowit Laski <zlaski@apple.com> Sync up with HEAD:2004-08-01T04:30:02+0000. Neither the source nor the merged result bootstraps on Darwin. [gcc/objcp/ChangeLog.objc-improvements] 2004-08-04 Ziemowit Laski <zlaski@apple.com> * config-lang.in (gtfiles): Add $(srcdir)/cp/typeck2.c and $(srcdir)/c-lex.c. * objcp-decl.c (objcp_start_struct): Add call to xref_basetypes(). (objcp_finish_struct): Pass attributes to finish_struct(). (objcp_build_compound_expr): Remove. * objcp-decl.h (objcp_build_compound_expr, build_compound_expr): Remove. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/objc-improvements-branch@85573 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libbanshee/engine/ChangeLog4
-rw-r--r--libbanshee/engine/util.c5
-rw-r--r--libcpp/ChangeLog33
-rw-r--r--libcpp/directives.c10
-rw-r--r--libcpp/expr.c28
-rw-r--r--libcpp/files.c5
-rw-r--r--libcpp/include/cpplib.h5
-rw-r--r--libcpp/include/line-map.h1
-rw-r--r--libcpp/init.c4
-rw-r--r--libcpp/internal.h10
-rw-r--r--libcpp/lex.c4
-rw-r--r--libcpp/macro.c2
-rw-r--r--libf2c/ChangeLog2423
-rw-r--r--libf2c/Makefile.in276
-rw-r--r--libf2c/README109
-rw-r--r--libf2c/TODO14
-rw-r--r--libf2c/aclocal.m4236
-rw-r--r--libf2c/changes.netlib3026
-rw-r--r--libf2c/configure.in121
-rw-r--r--libf2c/disclaimer.netlib15
-rw-r--r--libf2c/f2c.h64
-rw-r--r--libf2c/f2cext.c582
-rw-r--r--libf2c/g2c.hin234
-rw-r--r--libf2c/libF77/F77_aloc.c24
-rw-r--r--libf2c/libF77/Makefile.in255
-rw-r--r--libf2c/libF77/Notice23
-rw-r--r--libf2c/libF77/README.netlib112
-rw-r--r--libf2c/libF77/Version.c94
-rw-r--r--libf2c/libF77/abort_.c11
-rw-r--r--libf2c/libF77/c_abs.c9
-rw-r--r--libf2c/libF77/c_cos.c12
-rw-r--r--libf2c/libF77/c_div.c43
-rw-r--r--libf2c/libF77/c_exp.c14
-rw-r--r--libf2c/libF77/c_log.c13
-rw-r--r--libf2c/libF77/c_sin.c12
-rw-r--r--libf2c/libF77/c_sqrt.c30
-rw-r--r--libf2c/libF77/cabs.c24
-rw-r--r--libf2c/libF77/configure.in111
-rw-r--r--libf2c/libF77/d_abs.c9
-rw-r--r--libf2c/libF77/d_acos.c9
-rw-r--r--libf2c/libF77/d_asin.c9
-rw-r--r--libf2c/libF77/d_atan.c9
-rw-r--r--libf2c/libF77/d_atn2.c9
-rw-r--r--libf2c/libF77/d_cnjg.c9
-rw-r--r--libf2c/libF77/d_cos.c9
-rw-r--r--libf2c/libF77/d_cosh.c9
-rw-r--r--libf2c/libF77/d_dim.c7
-rw-r--r--libf2c/libF77/d_exp.c9
-rw-r--r--libf2c/libF77/d_imag.c7
-rw-r--r--libf2c/libF77/d_int.c9
-rw-r--r--libf2c/libF77/d_lg10.c11
-rw-r--r--libf2c/libF77/d_log.c9
-rw-r--r--libf2c/libF77/d_mod.c33
-rw-r--r--libf2c/libF77/d_nint.c9
-rw-r--r--libf2c/libF77/d_prod.c7
-rw-r--r--libf2c/libF77/d_sign.c9
-rw-r--r--libf2c/libF77/d_sin.c9
-rw-r--r--libf2c/libF77/d_sinh.c9
-rw-r--r--libf2c/libF77/d_sqrt.c9
-rw-r--r--libf2c/libF77/d_tan.c9
-rw-r--r--libf2c/libF77/d_tanh.c9
-rw-r--r--libf2c/libF77/derf_.c8
-rw-r--r--libf2c/libF77/derfc_.c9
-rw-r--r--libf2c/libF77/dtime_.c49
-rw-r--r--libf2c/libF77/ef1asc_.c15
-rw-r--r--libf2c/libF77/ef1cmc_.c10
-rw-r--r--libf2c/libF77/erf_.c8
-rw-r--r--libf2c/libF77/erfc_.c8
-rw-r--r--libf2c/libF77/etime_.c43
-rw-r--r--libf2c/libF77/exit_.c25
-rw-r--r--libf2c/libF77/f2ch.add163
-rw-r--r--libf2c/libF77/getarg_.c25
-rw-r--r--libf2c/libF77/getenv_.c49
-rw-r--r--libf2c/libF77/h_abs.c9
-rw-r--r--libf2c/libF77/h_dim.c7
-rw-r--r--libf2c/libF77/h_dnnt.c9
-rw-r--r--libf2c/libF77/h_indx.c23
-rw-r--r--libf2c/libF77/h_len.c7
-rw-r--r--libf2c/libF77/h_mod.c7
-rw-r--r--libf2c/libF77/h_nint.c9
-rw-r--r--libf2c/libF77/h_sign.c9
-rw-r--r--libf2c/libF77/hl_ge.c8
-rw-r--r--libf2c/libF77/hl_gt.c8
-rw-r--r--libf2c/libF77/hl_le.c8
-rw-r--r--libf2c/libF77/hl_lt.c8
-rw-r--r--libf2c/libF77/i_abs.c9
-rw-r--r--libf2c/libF77/i_dim.c7
-rw-r--r--libf2c/libF77/i_dnnt.c9
-rw-r--r--libf2c/libF77/i_indx.c23
-rw-r--r--libf2c/libF77/i_len.c7
-rw-r--r--libf2c/libF77/i_mod.c7
-rw-r--r--libf2c/libF77/i_nint.c9
-rw-r--r--libf2c/libF77/i_sign.c9
-rw-r--r--libf2c/libF77/iargc_.c8
-rw-r--r--libf2c/libF77/l_ge.c8
-rw-r--r--libf2c/libF77/l_gt.c8
-rw-r--r--libf2c/libF77/l_le.c8
-rw-r--r--libf2c/libF77/l_lt.c8
-rw-r--r--libf2c/libF77/lbitbits.c58
-rw-r--r--libf2c/libF77/lbitshft.c7
-rw-r--r--libf2c/libF77/main.c35
-rw-r--r--libf2c/libF77/makefile.netlib103
-rw-r--r--libf2c/libF77/pow_ci.c16
-rw-r--r--libf2c/libF77/pow_dd.c9
-rw-r--r--libf2c/libF77/pow_di.c32
-rw-r--r--libf2c/libF77/pow_hh.c31
-rw-r--r--libf2c/libF77/pow_ii.c31
-rw-r--r--libf2c/libF77/pow_qq.c31
-rw-r--r--libf2c/libF77/pow_ri.c32
-rw-r--r--libf2c/libF77/pow_zi.c50
-rw-r--r--libf2c/libF77/pow_zz.c25
-rw-r--r--libf2c/libF77/qbitbits.c62
-rw-r--r--libf2c/libF77/qbitshft.c7
-rw-r--r--libf2c/libF77/r_abs.c9
-rw-r--r--libf2c/libF77/r_acos.c9
-rw-r--r--libf2c/libF77/r_asin.c9
-rw-r--r--libf2c/libF77/r_atan.c9
-rw-r--r--libf2c/libF77/r_atn2.c9
-rw-r--r--libf2c/libF77/r_cnjg.c9
-rw-r--r--libf2c/libF77/r_cos.c9
-rw-r--r--libf2c/libF77/r_cosh.c9
-rw-r--r--libf2c/libF77/r_dim.c7
-rw-r--r--libf2c/libF77/r_exp.c9
-rw-r--r--libf2c/libF77/r_imag.c7
-rw-r--r--libf2c/libF77/r_int.c9
-rw-r--r--libf2c/libF77/r_lg10.c11
-rw-r--r--libf2c/libF77/r_log.c9
-rw-r--r--libf2c/libF77/r_mod.c33
-rw-r--r--libf2c/libF77/r_nint.c9
-rw-r--r--libf2c/libF77/r_sign.c9
-rw-r--r--libf2c/libF77/r_sin.c9
-rw-r--r--libf2c/libF77/r_sinh.c9
-rw-r--r--libf2c/libF77/r_sqrt.c9
-rw-r--r--libf2c/libF77/r_tan.c9
-rw-r--r--libf2c/libF77/r_tanh.c9
-rw-r--r--libf2c/libF77/s_cat.c70
-rw-r--r--libf2c/libF77/s_cmp.c49
-rw-r--r--libf2c/libF77/s_copy.c50
-rw-r--r--libf2c/libF77/s_paus.c71
-rw-r--r--libf2c/libF77/s_rnge.c22
-rw-r--r--libf2c/libF77/s_stop.c32
-rw-r--r--libf2c/libF77/setarg.c14
-rw-r--r--libf2c/libF77/setsig.c86
-rw-r--r--libf2c/libF77/sig_die.c37
-rw-r--r--libf2c/libF77/signal1.h5
-rw-r--r--libf2c/libF77/signal1.h026
-rw-r--r--libf2c/libF77/signal_.c11
-rw-r--r--libf2c/libF77/system_.c28
-rw-r--r--libf2c/libF77/z_abs.c8
-rw-r--r--libf2c/libF77/z_cos.c11
-rw-r--r--libf2c/libF77/z_div.c41
-rw-r--r--libf2c/libF77/z_exp.c13
-rw-r--r--libf2c/libF77/z_log.c59
-rw-r--r--libf2c/libF77/z_sin.c11
-rw-r--r--libf2c/libF77/z_sqrt.c25
-rw-r--r--libf2c/libI77/Makefile.in169
-rw-r--r--libf2c/libI77/Notice23
-rw-r--r--libf2c/libI77/README.netlib225
-rw-r--r--libf2c/libI77/Version.c324
-rw-r--r--libf2c/libI77/backspace.c81
-rw-r--r--libf2c/libI77/close.c101
-rw-r--r--libf2c/libI77/configure.in222
-rw-r--r--libf2c/libI77/dfe.c156
-rw-r--r--libf2c/libI77/dolio.c10
-rw-r--r--libf2c/libI77/due.c80
-rw-r--r--libf2c/libI77/endfile.c130
-rw-r--r--libf2c/libI77/err.c279
-rw-r--r--libf2c/libI77/f2ch.add163
-rw-r--r--libf2c/libI77/fio.h104
-rw-r--r--libf2c/libI77/fmt.c602
-rw-r--r--libf2c/libI77/fmt.h92
-rw-r--r--libf2c/libI77/fmtlib.c46
-rw-r--r--libf2c/libI77/fp.h28
-rw-r--r--libf2c/libI77/ftell_.c35
-rw-r--r--libf2c/libI77/iio.c157
-rw-r--r--libf2c/libI77/ilnw.c70
-rw-r--r--libf2c/libI77/inquire.c143
-rw-r--r--libf2c/libI77/lio.h64
-rw-r--r--libf2c/libI77/lread.c845
-rw-r--r--libf2c/libI77/lwrite.c277
-rw-r--r--libf2c/libI77/makefile.netlib104
-rw-r--r--libf2c/libI77/open.c301
-rw-r--r--libf2c/libI77/rdfmt.c615
-rw-r--r--libf2c/libI77/rewind.c25
-rw-r--r--libf2c/libI77/rsfe.c97
-rw-r--r--libf2c/libI77/rsli.c99
-rw-r--r--libf2c/libI77/rsne.c599
-rw-r--r--libf2c/libI77/sfe.c44
-rw-r--r--libf2c/libI77/sue.c93
-rw-r--r--libf2c/libI77/typesize.c14
-rw-r--r--libf2c/libI77/uio.c60
-rw-r--r--libf2c/libI77/util.c52
-rw-r--r--libf2c/libI77/wref.c306
-rw-r--r--libf2c/libI77/wrtfmt.c401
-rw-r--r--libf2c/libI77/wsfe.c79
-rw-r--r--libf2c/libI77/wsle.c38
-rw-r--r--libf2c/libI77/wsne.c22
-rw-r--r--libf2c/libI77/xwsne.c71
-rw-r--r--libf2c/libU77/COPYING.LIB504
-rw-r--r--libf2c/libU77/Makefile.in187
-rw-r--r--libf2c/libU77/PROJECTS10
-rw-r--r--libf2c/libU77/README40
-rw-r--r--libf2c/libU77/Version.c1
-rw-r--r--libf2c/libU77/access_.c84
-rw-r--r--libf2c/libU77/acconfig.h11
-rw-r--r--libf2c/libU77/aclocal.m469
-rw-r--r--libf2c/libU77/alarm_.c57
-rw-r--r--libf2c/libU77/chdir_.c50
-rw-r--r--libf2c/libU77/chmod_.c82
-rw-r--r--libf2c/libU77/configure.in124
-rw-r--r--libf2c/libU77/ctime_.c51
-rw-r--r--libf2c/libU77/date_.c56
-rw-r--r--libf2c/libU77/datetime_.c109
-rw-r--r--libf2c/libU77/dtime_.c174
-rw-r--r--libf2c/libU77/etime_.c163
-rw-r--r--libf2c/libU77/fdate_.c55
-rw-r--r--libf2c/libU77/fgetc_.c63
-rw-r--r--libf2c/libU77/flush1_.c40
-rw-r--r--libf2c/libU77/fnum_.c38
-rw-r--r--libf2c/libU77/fputc_.c56
-rw-r--r--libf2c/libU77/fstat_.c66
-rw-r--r--libf2c/libU77/gerror_.c44
-rw-r--r--libf2c/libU77/getcwd_.c88
-rw-r--r--libf2c/libU77/getgid_.c38
-rw-r--r--libf2c/libU77/getlog_.c69
-rw-r--r--libf2c/libU77/getpid_.c32
-rw-r--r--libf2c/libU77/getuid_.c38
-rw-r--r--libf2c/libU77/gmtime_.c52
-rw-r--r--libf2c/libU77/hostnm_.c51
-rw-r--r--libf2c/libU77/idate_.c54
-rw-r--r--libf2c/libU77/ierrno_.c29
-rw-r--r--libf2c/libU77/irand_.c48
-rw-r--r--libf2c/libU77/isatty_.c39
-rw-r--r--libf2c/libU77/itime_.c48
-rw-r--r--libf2c/libU77/kill_.c38
-rw-r--r--libf2c/libU77/link_.c63
-rw-r--r--libf2c/libU77/lnblnk_.c38
-rw-r--r--libf2c/libU77/lstat_.c78
-rw-r--r--libf2c/libU77/ltime_.c52
-rw-r--r--libf2c/libU77/mclock_.c44
-rw-r--r--libf2c/libU77/perror_.c44
-rw-r--r--libf2c/libU77/rand_.c51
-rw-r--r--libf2c/libU77/rename_.c53
-rw-r--r--libf2c/libU77/secnds_.c51
-rw-r--r--libf2c/libU77/second_.c28
-rw-r--r--libf2c/libU77/sleep_.c33
-rw-r--r--libf2c/libU77/srand_.c33
-rw-r--r--libf2c/libU77/stat_.c71
-rw-r--r--libf2c/libU77/symlnk_.c61
-rw-r--r--libf2c/libU77/sys_clock_.c79
-rw-r--r--libf2c/libU77/time_.c43
-rw-r--r--libf2c/libU77/ttynam_.c61
-rw-r--r--libf2c/libU77/u77-test.f415
-rw-r--r--libf2c/libU77/umask_.c30
-rw-r--r--libf2c/libU77/unlink_.c51
-rw-r--r--libf2c/libU77/vxtidate_.c65
-rw-r--r--libf2c/libU77/vxttime_.c51
-rw-r--r--libf2c/permission.netlib23
-rw-r--r--libf2c/readme.netlib791
-rw-r--r--libffi/ChangeLog10
-rw-r--r--libffi/src/powerpc/ffi_darwin.c10
-rw-r--r--libffi/src/s390/ffi.c18
-rw-r--r--libgfortran/ChangeLog62
-rw-r--r--libgfortran/Makefile.am2
-rw-r--r--libgfortran/Makefile.in2
-rwxr-xr-xlibgfortran/configure467
-rw-r--r--libgfortran/configure.ac5
-rw-r--r--libgfortran/generated/exp_c4.c9
-rw-r--r--libgfortran/generated/exp_c8.c9
-rw-r--r--libgfortran/intrinsics/args.c200
-rw-r--r--libgfortran/intrinsics/rand.c2
-rw-r--r--libgfortran/io/transfer.c11
-rw-r--r--libgfortran/io/unix.c53
-rw-r--r--libgfortran/io/write.c6
-rw-r--r--libgfortran/libgfortran.h1
-rw-r--r--libgfortran/m4/cexp.m49
-rw-r--r--libgfortran/runtime/normalize.c4
-rw-r--r--libiberty/ChangeLog19
-rw-r--r--libiberty/cp-demangle.c2
-rw-r--r--libiberty/cp-demangle.h20
-rw-r--r--libiberty/lrealpath.c30
-rw-r--r--libiberty/testsuite/demangle-expected5
-rw-r--r--libjava/ChangeLog1962
-rw-r--r--libjava/Makefile.am98
-rw-r--r--libjava/Makefile.in204
-rw-r--r--libjava/NEWS90
-rw-r--r--libjava/README37
-rw-r--r--libjava/THANKS269
-rw-r--r--libjava/acinclude.m4136
-rw-r--r--libjava/aclocal.m41586
-rwxr-xr-xlibjava/configure1386
-rw-r--r--libjava/configure.host8
-rw-r--r--libjava/configure.in199
-rw-r--r--libjava/defineclass.cc2
-rw-r--r--libjava/gcj/Makefile.am3
-rw-r--r--libjava/gcj/Makefile.in26
-rw-r--r--libjava/gcj/field.h11
-rw-r--r--libjava/gcj/javaprims.h1
-rw-r--r--libjava/gij.cc2
-rw-r--r--libjava/gnu/awt/xlib/XCanvasPeer.java4
-rw-r--r--libjava/gnu/awt/xlib/XOffScreenImage.java111
-rw-r--r--libjava/gnu/gcj/convert/UnicodeCharacterDatabase-3.0.0.html345
-rw-r--r--libjava/gnu/gcj/convert/UnicodeData-3.0.0.txt10617
-rw-r--r--libjava/gnu/gcj/runtime/FinalizerThread.java55
-rw-r--r--libjava/gnu/gcj/runtime/FirstThread.java98
-rw-r--r--libjava/gnu/gcj/runtime/VMClassLoader.java38
-rw-r--r--libjava/gnu/gcj/runtime/natFinalizerThread.cc44
-rw-r--r--libjava/gnu/gcj/runtime/natFirstThread.cc48
-rw-r--r--libjava/gnu/gcj/xlib/GC.java5
-rw-r--r--libjava/gnu/gcj/xlib/natGC.cc9
-rw-r--r--libjava/gnu/java/awt/ClasspathToolkit.java14
-rw-r--r--libjava/gnu/java/awt/ComponentDataBlitOp.java9
-rw-r--r--libjava/gnu/java/awt/EmbeddedWindow.java35
-rw-r--r--libjava/gnu/java/awt/image/ImageDecoder.java2
-rw-r--r--libjava/gnu/java/awt/natEmbeddedWindow.cc18
-rw-r--r--libjava/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java4
-rw-r--r--libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java21
-rw-r--r--libjava/gnu/java/awt/peer/gtk/GtkContainerPeer.java1
-rw-r--r--libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java72
-rw-r--r--libjava/gnu/java/awt/peer/gtk/GtkImage.java4
-rw-r--r--libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java1
-rw-r--r--libjava/gnu/java/awt/peer/gtk/GtkPanelPeer.java15
-rw-r--r--libjava/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java9
-rw-r--r--libjava/gnu/java/awt/peer/gtk/GtkToolkit.java117
-rw-r--r--libjava/gnu/java/beans/ExplicitBeanInfo.java6
-rw-r--r--libjava/gnu/java/beans/IntrospectionIncubator.java20
-rw-r--r--libjava/gnu/java/beans/editors/ColorEditor.java2
-rw-r--r--libjava/gnu/java/beans/editors/FontEditor.java2
-rw-r--r--libjava/gnu/java/beans/editors/NativeBooleanEditor.java2
-rw-r--r--libjava/gnu/java/beans/editors/NativeByteEditor.java2
-rw-r--r--libjava/gnu/java/beans/editors/NativeDoubleEditor.java2
-rw-r--r--libjava/gnu/java/beans/editors/NativeFloatEditor.java2
-rw-r--r--libjava/gnu/java/beans/editors/NativeIntEditor.java2
-rw-r--r--libjava/gnu/java/beans/editors/NativeLongEditor.java2
-rw-r--r--libjava/gnu/java/beans/editors/NativeShortEditor.java2
-rw-r--r--libjava/gnu/java/beans/editors/StringEditor.java2
-rw-r--r--libjava/gnu/java/io/ClassLoaderObjectInputStream.java5
-rw-r--r--libjava/gnu/java/lang/CharData.java1571
-rw-r--r--libjava/gnu/java/lang/ClassHelper.java10
-rw-r--r--libjava/gnu/java/locale/Calendar.java2
-rw-r--r--libjava/gnu/java/locale/Calendar_de.java2
-rw-r--r--libjava/gnu/java/locale/Calendar_en.java1
-rw-r--r--libjava/gnu/java/locale/Calendar_nl.java2
-rw-r--r--libjava/gnu/java/locale/LocaleInformation_de.java1
-rw-r--r--libjava/gnu/java/locale/LocaleInformation_en.java2
-rw-r--r--libjava/gnu/java/locale/LocaleInformation_nl.java2
-rw-r--r--libjava/gnu/java/net/protocol/file/Connection.java66
-rw-r--r--libjava/gnu/java/net/protocol/gcjlib/Connection.java19
-rw-r--r--libjava/gnu/java/net/protocol/http/Connection.java35
-rw-r--r--libjava/gnu/java/net/protocol/jar/Connection.java52
-rw-r--r--libjava/gnu/java/nio/SelectorImpl.java2
-rw-r--r--libjava/gnu/java/nio/channels/FileChannelImpl.java17
-rw-r--r--libjava/gnu/java/nio/channels/natFileChannelPosix.cc5
-rw-r--r--libjava/gnu/regexp/CharIndexedInputStream.java2
-rw-r--r--libjava/include/Makefile.am3
-rw-r--r--libjava/include/Makefile.in26
-rw-r--r--libjava/include/java-chartables.h1535
-rw-r--r--libjava/include/java-interp.h1
-rw-r--r--libjava/include/jvm.h21
-rw-r--r--libjava/include/s390-signal.h167
-rw-r--r--libjava/include/win32.h2
-rw-r--r--libjava/interpret.cc86
-rw-r--r--libjava/java/awt/Component.java403
-rw-r--r--libjava/java/awt/Container.java12
-rw-r--r--libjava/java/awt/DefaultKeyboardFocusManager.java34
-rw-r--r--libjava/java/awt/Event.java3
-rw-r--r--libjava/java/awt/Font.java5
-rw-r--r--libjava/java/awt/Frame.java95
-rw-r--r--libjava/java/awt/GridBagLayout.java2
-rw-r--r--libjava/java/awt/KeyboardFocusManager.java5
-rw-r--r--libjava/java/awt/Panel.java63
-rw-r--r--libjava/java/awt/ScrollPane.java26
-rw-r--r--libjava/java/awt/Window.java52
-rw-r--r--libjava/java/awt/event/InvocationEvent.java9
-rw-r--r--libjava/java/awt/im/InputContext.java4
-rw-r--r--libjava/java/awt/image/BufferedImage.java54
-rw-r--r--libjava/java/awt/image/ColorModel.java5
-rw-r--r--libjava/java/awt/image/MemoryImageSource.java45
-rw-r--r--libjava/java/awt/image/RGBImageFilter.java4
-rw-r--r--libjava/java/io/BufferedWriter.java2
-rw-r--r--libjava/java/io/File.java23
-rw-r--r--libjava/java/io/FilterWriter.java2
-rw-r--r--libjava/java/io/ObjectInputStream.java16
-rw-r--r--libjava/java/io/ObjectOutputStream.java26
-rw-r--r--libjava/java/io/ObjectStreamClass.java47
-rw-r--r--libjava/java/io/ObjectStreamField.java1
-rw-r--r--libjava/java/io/PrintWriter.java4
-rw-r--r--libjava/java/io/RandomAccessFile.java28
-rw-r--r--libjava/java/lang/Class.h7
-rw-r--r--libjava/java/lang/Runtime.java2
-rw-r--r--libjava/java/lang/String.java40
-rw-r--r--libjava/java/lang/System.java17
-rw-r--r--libjava/java/lang/natClass.cc3
-rw-r--r--libjava/java/lang/natClassLoader.cc13
-rw-r--r--libjava/java/net/DatagramPacket.java3
-rw-r--r--libjava/java/net/DatagramSocket.java5
-rw-r--r--libjava/java/net/Socket.java17
-rw-r--r--libjava/java/net/URL.java27
-rw-r--r--libjava/java/net/URLConnection.java55
-rw-r--r--libjava/java/net/URLStreamHandler.java20
-rw-r--r--libjava/java/nio/Buffer.java113
-rw-r--r--libjava/java/nio/ByteBuffer.java49
-rw-r--r--libjava/java/nio/ByteBufferHelper.java50
-rw-r--r--libjava/java/nio/ByteBufferImpl.java24
-rw-r--r--libjava/java/nio/ByteOrder.java15
-rw-r--r--libjava/java/nio/CharBuffer.java52
-rw-r--r--libjava/java/nio/CharBufferImpl.java29
-rw-r--r--libjava/java/nio/CharViewBufferImpl.java16
-rw-r--r--libjava/java/nio/DirectByteBufferImpl.java24
-rw-r--r--libjava/java/nio/DoubleBuffer.java42
-rw-r--r--libjava/java/nio/DoubleBufferImpl.java26
-rw-r--r--libjava/java/nio/DoubleViewBufferImpl.java14
-rw-r--r--libjava/java/nio/FloatBuffer.java42
-rw-r--r--libjava/java/nio/FloatBufferImpl.java26
-rw-r--r--libjava/java/nio/FloatViewBufferImpl.java14
-rw-r--r--libjava/java/nio/IntBuffer.java42
-rw-r--r--libjava/java/nio/IntBufferImpl.java28
-rw-r--r--libjava/java/nio/IntViewBufferImpl.java14
-rw-r--r--libjava/java/nio/LongBuffer.java42
-rw-r--r--libjava/java/nio/LongBufferImpl.java28
-rw-r--r--libjava/java/nio/LongViewBufferImpl.java14
-rw-r--r--libjava/java/nio/MappedByteBufferImpl.java24
-rw-r--r--libjava/java/nio/ShortBuffer.java42
-rw-r--r--libjava/java/nio/ShortBufferImpl.java28
-rw-r--r--libjava/java/nio/ShortViewBufferImpl.java14
-rw-r--r--libjava/java/nio/charset/CharsetDecoder.java1
-rw-r--r--libjava/java/security/AccessControlContext.java86
-rw-r--r--libjava/java/security/SecureClassLoader.java55
-rw-r--r--libjava/java/security/Security.java20
-rw-r--r--libjava/java/sql/Timestamp.java49
-rw-r--r--libjava/java/text/BreakIterator.java2
-rw-r--r--libjava/java/text/CollationElementIterator.java45
-rw-r--r--libjava/java/text/Collator.java2
-rw-r--r--libjava/java/text/DateFormat.java9
-rw-r--r--libjava/java/text/DateFormatSymbols.java2
-rw-r--r--libjava/java/text/DecimalFormatSymbols.java2
-rw-r--r--libjava/java/text/MessageFormat.java69
-rw-r--r--libjava/java/text/NumberFormat.java2
-rw-r--r--libjava/java/text/RuleBasedCollator.java43
-rw-r--r--libjava/java/util/Calendar.java76
-rw-r--r--libjava/java/util/Currency.java2
-rw-r--r--libjava/java/util/GregorianCalendar.java2
-rw-r--r--libjava/java/util/Locale.java35
-rw-r--r--libjava/java/util/ResourceBundle.java353
-rw-r--r--libjava/java/util/zip/DeflaterOutputStream.java72
-rw-r--r--libjava/java/util/zip/GZIPInputStream.java53
-rw-r--r--libjava/java/util/zip/GZIPOutputStream.java106
-rw-r--r--libjava/java/util/zip/Inflater.java2
-rw-r--r--libjava/java/util/zip/InflaterInputStream.java107
-rw-r--r--libjava/javax/swing/AbstractButton.java216
-rw-r--r--libjava/javax/swing/ActionMap.java215
-rw-r--r--libjava/javax/swing/Box.java6
-rw-r--r--libjava/javax/swing/ComponentInputMap.java153
-rw-r--r--libjava/javax/swing/DefaultDesktopManager.java24
-rw-r--r--libjava/javax/swing/ImageIcon.java65
-rw-r--r--libjava/javax/swing/InputMap.java224
-rw-r--r--libjava/javax/swing/JButton.java25
-rw-r--r--libjava/javax/swing/JCheckBox.java64
-rw-r--r--libjava/javax/swing/JCheckBoxMenuItem.java110
-rw-r--r--libjava/javax/swing/JComponent.java1
-rw-r--r--libjava/javax/swing/JDialog.java6
-rw-r--r--libjava/javax/swing/JEditorPane.java22
-rw-r--r--libjava/javax/swing/JFormattedTextField.java22
-rw-r--r--libjava/javax/swing/JList.java27
-rw-r--r--libjava/javax/swing/JMenu.java121
-rw-r--r--libjava/javax/swing/JMenuBar.java82
-rw-r--r--libjava/javax/swing/JMenuItem.java118
-rw-r--r--libjava/javax/swing/JOptionPane.java334
-rw-r--r--libjava/javax/swing/JPopupMenu.java132
-rw-r--r--libjava/javax/swing/JRadioButton.java7
-rw-r--r--libjava/javax/swing/JRadioButtonMenuItem.java88
-rw-r--r--libjava/javax/swing/JRootPane.java209
-rw-r--r--libjava/javax/swing/JScrollPane.java9
-rw-r--r--libjava/javax/swing/JTabbedPane.java4
-rw-r--r--libjava/javax/swing/JTable.java215
-rw-r--r--libjava/javax/swing/JTextArea.java25
-rw-r--r--libjava/javax/swing/JTextField.java62
-rw-r--r--libjava/javax/swing/JToggleButton.java18
-rw-r--r--libjava/javax/swing/JToolBar.java733
-rw-r--r--libjava/javax/swing/JTree.java116
-rw-r--r--libjava/javax/swing/JViewport.java8
-rw-r--r--libjava/javax/swing/JWindow.java2
-rw-r--r--libjava/javax/swing/LookAndFeel.java28
-rw-r--r--libjava/javax/swing/MenuSelectionManager.java113
-rw-r--r--libjava/javax/swing/RepaintManager.java16
-rw-r--r--libjava/javax/swing/ScrollPaneLayout.java127
-rw-r--r--libjava/javax/swing/SwingUtilities.java41
-rw-r--r--libjava/javax/swing/Timer.java1
-rw-r--r--libjava/javax/swing/ToolTipManager.java240
-rw-r--r--libjava/javax/swing/UIDefaults.java58
-rw-r--r--libjava/javax/swing/UIManager.java77
-rw-r--r--libjava/javax/swing/ViewportLayout.java23
-rw-r--r--libjava/javax/swing/border/TitledBorder.java20
-rw-r--r--libjava/javax/swing/plaf/basic/BasicArrowButton.java67
-rw-r--r--libjava/javax/swing/plaf/basic/BasicButtonUI.java55
-rw-r--r--libjava/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java15
-rw-r--r--libjava/javax/swing/plaf/basic/BasicInternalFrameUI.java232
-rw-r--r--libjava/javax/swing/plaf/basic/BasicLabelUI.java4
-rw-r--r--libjava/javax/swing/plaf/basic/BasicListUI.java21
-rw-r--r--libjava/javax/swing/plaf/basic/BasicLookAndFeel.java14
-rw-r--r--libjava/javax/swing/plaf/basic/BasicMenuBarUI.java21
-rw-r--r--libjava/javax/swing/plaf/basic/BasicMenuItemUI.java113
-rw-r--r--libjava/javax/swing/plaf/basic/BasicMenuUI.java49
-rw-r--r--libjava/javax/swing/plaf/basic/BasicOptionPaneUI.java38
-rw-r--r--libjava/javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.java2
-rw-r--r--libjava/javax/swing/plaf/basic/BasicPopupMenuUI.java205
-rw-r--r--libjava/javax/swing/plaf/basic/BasicProgressBarUI.java2
-rw-r--r--libjava/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java14
-rw-r--r--libjava/javax/swing/plaf/basic/BasicRootPaneUI.java10
-rw-r--r--libjava/javax/swing/plaf/basic/BasicScrollBarUI.java33
-rw-r--r--libjava/javax/swing/plaf/basic/BasicScrollPaneUI.java29
-rw-r--r--libjava/javax/swing/plaf/basic/BasicSeparatorUI.java6
-rw-r--r--libjava/javax/swing/plaf/basic/BasicSliderUI.java94
-rw-r--r--libjava/javax/swing/plaf/basic/BasicSplitPaneDivider.java24
-rw-r--r--libjava/javax/swing/plaf/basic/BasicSplitPaneUI.java14
-rw-r--r--libjava/javax/swing/plaf/basic/BasicTabbedPaneUI.java2
-rw-r--r--libjava/javax/swing/plaf/basic/BasicTextUI.java218
-rw-r--r--libjava/javax/swing/plaf/basic/BasicToolBarUI.java1277
-rw-r--r--libjava/javax/swing/plaf/basic/BasicViewportUI.java1
-rw-r--r--libjava/javax/swing/table/DefaultTableColumnModel.java206
-rw-r--r--libjava/javax/swing/table/TableColumn.java263
-rw-r--r--libjava/javax/swing/table/TableColumnModel.java26
-rw-r--r--libjava/javax/swing/table/TableModel.java22
-rw-r--r--libjava/javax/swing/text/AbstractDocument.java557
-rw-r--r--libjava/javax/swing/text/AttributeSet.java16
-rw-r--r--libjava/javax/swing/text/CharacterIterator.java53
-rw-r--r--libjava/javax/swing/text/ComponentView.java1
-rw-r--r--libjava/javax/swing/text/DefaultCaret.java32
-rw-r--r--libjava/javax/swing/text/DefaultEditorKit.java55
-rw-r--r--libjava/javax/swing/text/Document.java12
-rw-r--r--libjava/javax/swing/text/EditorKit.java52
-rw-r--r--libjava/javax/swing/text/JTextComponent.java164
-rw-r--r--libjava/javax/swing/text/PlainDocument.java14
-rw-r--r--libjava/javax/swing/text/PlainEditorKit.java103
-rw-r--r--libjava/javax/swing/text/Position.java16
-rw-r--r--libjava/javax/swing/text/Segment.java38
-rw-r--r--libjava/javax/swing/text/StyledEditorKit.java411
-rw-r--r--libjava/javax/swing/text/TextAction.java45
-rw-r--r--libjava/javax/swing/text/View.java114
-rw-r--r--libjava/javax/swing/text/ViewFactory.java9
-rw-r--r--libjava/jni.cc372
-rw-r--r--libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c30
-rw-r--r--libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c194
-rw-r--r--libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c2
-rw-r--r--libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c2
-rw-r--r--libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c20
-rw-r--r--libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c182
-rw-r--r--libjava/prims.cc50
-rwxr-xr-xlibjava/scripts/unicode-muncher.pl191
-rw-r--r--libjava/sysdep/powerpc/locks.h24
-rw-r--r--libjava/testsuite/Makefile.am3
-rw-r--r--libjava/testsuite/Makefile.in20
-rw-r--r--libjava/testsuite/libjava.compile/inner_data.java6
-rw-r--r--libjava/testsuite/libjava.compile/pr10459.java7
-rw-r--r--libjava/testsuite/libjava.compile/pr10459_2.java10
-rw-r--r--libjava/testsuite/libjava.jacks/jacks.exp18
-rw-r--r--libjava/testsuite/libjava.jacks/jacks.xfail80
-rw-r--r--libjava/testsuite/libjava.lang/TLtest.java2
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Alive.java3
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Interrupt.java63
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Join.java1
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Monitor.java1
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Sleep.java5
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Wait.java1
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Wait_2.java1
-rw-r--r--libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java1
-rw-r--r--libjava/testsuite/libjava.lang/pr179.java2
-rw-r--r--libjava/win32.cc2
-rw-r--r--libmudflap/ChangeLog113
-rw-r--r--libmudflap/Makefile.am15
-rw-r--r--libmudflap/Makefile.in16
-rw-r--r--libmudflap/ansidecl.h0
-rwxr-xr-xlibmudflap/configure12
-rw-r--r--libmudflap/configure.ac6
-rw-r--r--libmudflap/libiberty.h0
-rw-r--r--libmudflap/mf-hooks2.c5
-rw-r--r--libmudflap/mf-hooks3.c10
-rw-r--r--libmudflap/mf-impl.h13
-rw-r--r--libmudflap/mf-runtime.c659
-rw-r--r--libmudflap/mf-runtime.h.in10
-rw-r--r--libmudflap/testsuite/Makefile.in1
-rw-r--r--libmudflap/testsuite/libmudflap.c++/c++frags.exp4
-rw-r--r--libobjc/ChangeLog62
-rw-r--r--libobjc/encoding.c7
-rw-r--r--libobjc/thr.c4
-rw-r--r--libstdc++-v3/ChangeLog443
-rw-r--r--libstdc++-v3/Makefile.in1
-rw-r--r--libstdc++-v3/acinclude.m434
-rw-r--r--libstdc++-v3/config/linker-map.gnu5
-rw-r--r--libstdc++-v3/config/locale/gnu/monetary_members.cc12
-rwxr-xr-xlibstdc++-v3/configure21855
-rw-r--r--libstdc++-v3/configure.ac6
-rw-r--r--libstdc++-v3/configure.host29
-rw-r--r--libstdc++-v3/crossconfig.m416
-rw-r--r--libstdc++-v3/docs/doxygen/mainpage.html9
-rw-r--r--libstdc++-v3/docs/doxygen/stdheader.cc34
-rw-r--r--libstdc++-v3/docs/doxygen/style.css49
-rw-r--r--libstdc++-v3/docs/doxygen/user.cfg.in369
-rw-r--r--libstdc++-v3/docs/html/abi.html20
-rw-r--r--libstdc++-v3/docs/html/debug.html3
-rw-r--r--libstdc++-v3/docs/html/ext/howto.html8
-rw-r--r--libstdc++-v3/docs/html/ext/lwg-active.html5292
-rw-r--r--libstdc++-v3/docs/html/ext/lwg-defects.html4271
-rw-r--r--libstdc++-v3/docs/html/ext/mt_allocator.html62
-rw-r--r--libstdc++-v3/docs/html/faq/index.html41
-rw-r--r--libstdc++-v3/docs/html/faq/index.txt509
-rw-r--r--libstdc++-v3/include/Makefile.am7
-rw-r--r--libstdc++-v3/include/Makefile.in8
-rw-r--r--libstdc++-v3/include/bits/basic_string.h80
-rw-r--r--libstdc++-v3/include/bits/c++config2
-rw-r--r--libstdc++-v3/include/bits/concurrence.h30
-rw-r--r--libstdc++-v3/include/bits/cpp_type_traits.h318
-rw-r--r--libstdc++-v3/include/bits/deque.tcc165
-rw-r--r--libstdc++-v3/include/bits/gslice.h181
-rw-r--r--libstdc++-v3/include/bits/gslice_array.h30
-rw-r--r--libstdc++-v3/include/bits/indirect_array.h1
-rw-r--r--libstdc++-v3/include/bits/list.tcc2
-rw-r--r--libstdc++-v3/include/bits/locale_facets.tcc233
-rw-r--r--libstdc++-v3/include/bits/mask_array.h7
-rw-r--r--libstdc++-v3/include/bits/slice_array.h28
-rw-r--r--libstdc++-v3/include/bits/sstream.tcc22
-rw-r--r--libstdc++-v3/include/bits/stl_algobase.h386
-rw-r--r--libstdc++-v3/include/bits/stl_bvector.h3
-rw-r--r--libstdc++-v3/include/bits/stl_construct.h34
-rw-r--r--libstdc++-v3/include/bits/stl_deque.h49
-rw-r--r--libstdc++-v3/include/bits/stl_list.h6
-rw-r--r--libstdc++-v3/include/bits/stl_pair.h3
-rw-r--r--libstdc++-v3/include/bits/stl_tree.h4
-rw-r--r--libstdc++-v3/include/bits/stl_uninitialized.h156
-rw-r--r--libstdc++-v3/include/bits/stl_vector.h58
-rw-r--r--libstdc++-v3/include/bits/type_traits.h20
-rw-r--r--libstdc++-v3/include/bits/valarray_after.h395
-rw-r--r--libstdc++-v3/include/bits/valarray_array.h390
-rw-r--r--libstdc++-v3/include/bits/valarray_before.h228
-rw-r--r--libstdc++-v3/include/bits/vector.tcc180
-rw-r--r--libstdc++-v3/include/c_std/std_cwchar.h2
-rw-r--r--libstdc++-v3/include/debug/map.h2
-rw-r--r--libstdc++-v3/include/debug/safe_base.h21
-rw-r--r--libstdc++-v3/include/ext/hashtable.h6
-rw-r--r--libstdc++-v3/include/ext/memory34
-rw-r--r--libstdc++-v3/include/ext/mt_allocator.h51
-rw-r--r--libstdc++-v3/include/ext/pool_allocator.h2
-rw-r--r--libstdc++-v3/include/ext/rope8
-rw-r--r--libstdc++-v3/include/ext/ropeimpl.h10
-rw-r--r--libstdc++-v3/include/ext/slist10
-rw-r--r--libstdc++-v3/include/std/std_valarray.h164
-rw-r--r--libstdc++-v3/libmath/Makefile.in1
-rw-r--r--libstdc++-v3/libsupc++/Makefile.in1
-rw-r--r--libstdc++-v3/libsupc++/cxxabi.h9
-rw-r--r--libstdc++-v3/libsupc++/guard.cc12
-rw-r--r--libstdc++-v3/libsupc++/tinfo.cc21
-rw-r--r--libstdc++-v3/libsupc++/vec.cc6
-rw-r--r--libstdc++-v3/po/Makefile.in1
-rwxr-xr-xlibstdc++-v3/scripts/create_testsuite_files2
-rw-r--r--libstdc++-v3/src/Makefile.in1
-rw-r--r--libstdc++-v3/src/allocator.cc2
-rw-r--r--libstdc++-v3/src/locale_init.cc9
-rw-r--r--libstdc++-v3/src/localename.cc6
-rw-r--r--libstdc++-v3/testsuite/20_util/allocator/1.cc71
-rw-r--r--libstdc++-v3/testsuite/20_util/allocator/10378.cc51
-rw-r--r--libstdc++-v3/testsuite/20_util/allocator/14176.cc42
-rw-r--r--libstdc++-v3/testsuite/20_util/allocator/8230.cc59
-rw-r--r--libstdc++-v3/testsuite/20_util/auto_ptr/1.cc95
-rw-r--r--libstdc++-v3/testsuite/20_util/auto_ptr/2.cc85
-rw-r--r--libstdc++-v3/testsuite/20_util/auto_ptr/3.cc87
-rw-r--r--libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc45
-rw-r--r--libstdc++-v3/testsuite/20_util/auto_ptr/4.cc83
-rw-r--r--libstdc++-v3/testsuite/20_util/auto_ptr/5.cc87
-rw-r--r--libstdc++-v3/testsuite/20_util/auto_ptr/6.cc91
-rw-r--r--libstdc++-v3/testsuite/20_util/auto_ptr/7.cc91
-rw-r--r--libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc50
-rw-r--r--libstdc++-v3/testsuite/20_util/comparisons.cc53
-rw-r--r--libstdc++-v3/testsuite/20_util/pair/1.cc79
-rw-r--r--libstdc++-v3/testsuite/20_util/pair/2.cc60
-rw-r--r--libstdc++-v3/testsuite/20_util/pair/3.cc79
-rw-r--r--libstdc++-v3/testsuite/20_util/pair/4.cc67
-rw-r--r--libstdc++-v3/testsuite/20_util/raw_storage_iterator.cc48
-rw-r--r--libstdc++-v3/testsuite/20_util/temporary_buffer.cc50
-rw-r--r--libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread.cc67
-rw-r--r--libstdc++-v3/testsuite/23_containers/multiset/14340.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/set/14340.cc2
-rw-r--r--libstdc++-v3/testsuite/24_iterators/rel_ops.cc51
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/copy.cc58
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/1.cc1
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/9322.cc4
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/2.cc1
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/3599.cc4
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1057.cc2
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_streambuf/sync/char/1057.cc1
-rw-r--r--libstdc++-v3/testsuite/Makefile.in1
-rw-r--r--libstdc++-v3/testsuite/lib/libstdc++.exp3
-rw-r--r--libstdc++-v3/testsuite/testsuite_abi.cc1
-rw-r--r--libstdc++-v3/testsuite/testsuite_allocator.cc20
-rw-r--r--libstdc++-v3/testsuite/testsuite_allocator.h4
694 files changed, 46944 insertions, 50673 deletions
diff --git a/libbanshee/engine/ChangeLog b/libbanshee/engine/ChangeLog
index 5309328c6fa..b65636ed5e7 100644
--- a/libbanshee/engine/ChangeLog
+++ b/libbanshee/engine/ChangeLog
@@ -1,3 +1,7 @@
+2004-05-28 Aaron W. LaFramboise <aaronraolete36@aaronwl.com>
+
+ * engine/util.c (vfail): Remove unnecessary sync, fsync, and fflush.
+
2003-07-01 Daniel Berlin <dberlin@dberlin.org>
* bool.h: Can't include gcc's system.h and bool.h at the same time.
diff --git a/libbanshee/engine/util.c b/libbanshee/engine/util.c
index 92619801af2..2d723f93343 100644
--- a/libbanshee/engine/util.c
+++ b/libbanshee/engine/util.c
@@ -44,13 +44,8 @@ static void vfail(const char *fmt, va_list args) __attribute__((__noreturn__));
static void vfail(const char *fmt, va_list args)
{
vfprintf(stderr, fmt, args);
- fflush(stdin);
fflush(stderr);
fflush(stdout);
- sync();
- fsync(STDIN_FILENO);
- fsync(STDERR_FILENO);
- fsync(STDOUT_FILENO);
abort();
while (1); /* Work around stupid gcc-2.96-85 bug */
}
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 64f88ad854b..2c568b0473d 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,36 @@
+2004-07-24 Bernardo Innocenti <bernie@develer.com>
+
+ * internal.h (xnew, xcnew, xnewvec, xcnewvec, xobnew): Remove.
+ * directives.c: Use XNEW-family macros from libiberty.
+ * lex.c: Likewise.
+ * macro.c: Likewise.
+ * cpplib.h (cpp_deps_style): Export enum with name.
+
+2004-07-23 Matthias Klose <doko@debian.org>
+
+ init.c (init_library): Use PACKAGE for the text domain.
+
+2004-07-16 Andris Pavenis <pavenis@latnet.lv>
+
+ PR preprocessor/16366
+ * internal.h (struct cpp_reader): New field dir_hash.
+ * files.c (make_cpp_dir): Use dir_hash, not file_hash.
+ (_cpp_init_files, _cpp_cleanup_files): Update for new field.
+
+2004-07-04 Neil Booth <neil@duron.akihabara.co.uk>
+
+ PR preprocessor/16192
+ PR preprocessor/15913
+ PR preprocessor/15572
+ * expr.c (_cpp_parse_expr): Handle remaining cases where an
+ expression is missing.
+ * init.c (post_options): Traditional cpp doesn't do // comments.
+
+2004-06-30 Per Bothner <per@bothner.com>
+
+ * include/line-map.h (fileline): Remove old typedef.
+ * internal.h (struct cpp_reader): Use source_location typedef instead.
+
2004-06-26 Zack Weinberg <zack@codesourcery.com>
Partially revert patch of 2004-06-05.
diff --git a/libcpp/directives.c b/libcpp/directives.c
index 16873dadecf..76055a6fc3a 100644
--- a/libcpp/directives.c
+++ b/libcpp/directives.c
@@ -1077,7 +1077,7 @@ char **
_cpp_save_pragma_names (cpp_reader *pfile)
{
int ct = count_registered_pragmas (pfile->pragmas);
- char **result = xnewvec (char *, ct);
+ char **result = XNEWVEC (char *, ct);
(void) save_registered_pragmas (pfile->pragmas, result);
return result;
}
@@ -1318,11 +1318,11 @@ destringize_and_run (cpp_reader *pfile, const cpp_string *in)
cpp_token *saved_cur_token = pfile->cur_token;
tokenrun *saved_cur_run = pfile->cur_run;
- pfile->context = xnew (cpp_context);
+ pfile->context = XNEW (cpp_context);
pfile->context->macro = 0;
pfile->context->prev = 0;
run_directive (pfile, T_PRAGMA, result, dest - result);
- free (pfile->context);
+ XDELETE (pfile->context);
pfile->context = saved_context;
pfile->cur_token = saved_cur_token;
pfile->cur_run = saved_cur_run;
@@ -1532,7 +1532,7 @@ push_conditional (cpp_reader *pfile, int skip, int type,
struct if_stack *ifs;
cpp_buffer *buffer = pfile->buffer;
- ifs = xobnew (&pfile->buffer_ob, struct if_stack);
+ ifs = XOBNEW (&pfile->buffer_ob, struct if_stack);
ifs->line = pfile->directive_line;
ifs->next = buffer->if_stack;
ifs->skip_elses = pfile->state.skipping || !skip;
@@ -1922,7 +1922,7 @@ cpp_buffer *
cpp_push_buffer (cpp_reader *pfile, const uchar *buffer, size_t len,
int from_stage3)
{
- cpp_buffer *new = xobnew (&pfile->buffer_ob, cpp_buffer);
+ cpp_buffer *new = XOBNEW (&pfile->buffer_ob, cpp_buffer);
/* Clears, amongst other things, if_stack and mi_cmacro. */
memset (new, 0, sizeof (cpp_buffer));
diff --git a/libcpp/expr.c b/libcpp/expr.c
index f49bd082858..47689189b2b 100644
--- a/libcpp/expr.c
+++ b/libcpp/expr.c
@@ -747,18 +747,22 @@ _cpp_parse_expr (cpp_reader *pfile)
}
else if (want_value)
{
- /* Ordering here is subtle and intended to favor the
- missing parenthesis diagnostics over alternatives. */
- if (op.op == CPP_CLOSE_PAREN)
- {
- if (top->op == CPP_OPEN_PAREN)
- SYNTAX_ERROR ("void expression between '(' and ')'");
- }
- else if (top->op == CPP_EOF)
- SYNTAX_ERROR ("#if with no expression");
- if (top->op != CPP_EOF && top->op != CPP_OPEN_PAREN)
- SYNTAX_ERROR2 ("operator '%s' has no right operand",
- cpp_token_as_text (pfile, top->token));
+ /* We want a number (or expression) and haven't got one.
+ Try to emit a specific diagnostic. */
+ if (op.op == CPP_CLOSE_PAREN && top->op == CPP_OPEN_PAREN)
+ SYNTAX_ERROR ("missing expression between '(' and ')'");
+
+ if (op.op == CPP_EOF && top->op == CPP_EOF)
+ SYNTAX_ERROR ("#if with no expression");
+
+ if (top->op != CPP_EOF && top->op != CPP_OPEN_PAREN)
+ SYNTAX_ERROR2 ("operator '%s' has no right operand",
+ cpp_token_as_text (pfile, top->token));
+ else if (op.op == CPP_CLOSE_PAREN || op.op == CPP_EOF)
+ /* Complain about missing paren during reduction. */;
+ else
+ SYNTAX_ERROR2 ("operator '%s' has no left operand",
+ cpp_token_as_text (pfile, op.token));
}
top = reduce (pfile, top, op.op);
diff --git a/libcpp/files.c b/libcpp/files.c
index cd8d077ef71..fc1fa2c7f0e 100644
--- a/libcpp/files.c
+++ b/libcpp/files.c
@@ -884,7 +884,7 @@ make_cpp_dir (cpp_reader *pfile, const char *dir_name, int sysp)
cpp_dir *dir;
hash_slot = (struct file_hash_entry **)
- htab_find_slot_with_hash (pfile->file_hash, dir_name,
+ htab_find_slot_with_hash (pfile->dir_hash, dir_name,
htab_hash_string (dir_name),
INSERT);
@@ -984,6 +984,8 @@ _cpp_init_files (cpp_reader *pfile)
{
pfile->file_hash = htab_create_alloc (127, file_hash_hash, file_hash_eq,
NULL, xcalloc, free);
+ pfile->dir_hash = htab_create_alloc (127, file_hash_hash, file_hash_eq,
+ NULL, xcalloc, free);
allocate_file_hash_entries (pfile);
}
@@ -992,6 +994,7 @@ void
_cpp_cleanup_files (cpp_reader *pfile)
{
htab_delete (pfile->file_hash);
+ htab_delete (pfile->dir_hash);
}
/* Enter a file name in the hash for the sake of cpp_included. */
diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
index dab315714df..547364112f6 100644
--- a/libcpp/include/cpplib.h
+++ b/libcpp/include/cpplib.h
@@ -231,6 +231,9 @@ extern enum cpp_token_fld_kind cpp_token_val_index (cpp_token *tok);
typedef unsigned CPPCHAR_SIGNED_T cppchar_t;
typedef CPPCHAR_SIGNED_T cppchar_signed_t;
+/* Style of header dependencies to generate. */
+enum cpp_deps_style { DEPS_NONE = 0, DEPS_USER, DEPS_SYSTEM };
+
/* This structure is nested inside struct cpp_reader, and
carries all the options visible to the command line. */
struct cpp_options
@@ -378,7 +381,7 @@ struct cpp_options
struct
{
/* Style of header dependencies to generate. */
- enum {DEPS_NONE = 0, DEPS_USER, DEPS_SYSTEM } style;
+ enum cpp_deps_style style;
/* Assume missing files are generated files. */
bool missing_files;
diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h
index 839467734ef..5b4ac1ec743 100644
--- a/libcpp/include/line-map.h
+++ b/libcpp/include/line-map.h
@@ -34,7 +34,6 @@ enum lc_reason {LC_ENTER = 0, LC_LEAVE, LC_RENAME};
/* Long-term, we want to use this to replace struct location_s (in input.h),
and effectively typedef source_location location_t. */
typedef unsigned int source_location;
-typedef source_location fileline; /* deprecated name */
/* Physical source file TO_FILE at line TO_LINE at column 0 is represented
by the logical START_LOCATION. TO_LINE+L at column C is represented by
diff --git a/libcpp/init.c b/libcpp/init.c
index 65cca9b2bab..aaf1d6b353c 100644
--- a/libcpp/init.c
+++ b/libcpp/init.c
@@ -121,7 +121,7 @@ init_library (void)
init_trigraph_map ();
#ifdef ENABLE_NLS
- (void) bindtextdomain ("gcc", LOCALEDIR);
+ (void) bindtextdomain (PACKAGE, LOCALEDIR);
#endif
}
}
@@ -611,6 +611,8 @@ post_options (cpp_reader *pfile)
if (CPP_OPTION (pfile, traditional))
{
+ CPP_OPTION (pfile, cplusplus_comments) = 0;
+
/* Traditional CPP does not accurately track column information. */
CPP_OPTION (pfile, show_column) = 0;
CPP_OPTION (pfile, trigraphs) = 0;
diff --git a/libcpp/internal.h b/libcpp/internal.h
index fd3facf6136..53b02f8c94c 100644
--- a/libcpp/internal.h
+++ b/libcpp/internal.h
@@ -308,7 +308,7 @@ struct cpp_reader
struct line_maps *line_table;
/* The line of the '#' of the current directive. */
- fileline directive_line;
+ source_location directive_line;
/* Memory buffers. */
_cpp_buff *a_buff; /* Aligned permanent storage. */
@@ -334,6 +334,7 @@ struct cpp_reader
/* File and directory hash table. */
struct htab *file_hash;
+ struct htab *dir_hash;
struct file_hash_entry *file_hash_entries;
unsigned int file_hash_entries_allocated, file_hash_entries_used;
@@ -421,7 +422,7 @@ struct cpp_reader
uchar *base;
uchar *limit;
uchar *cur;
- fileline first_line;
+ source_location first_line;
} out;
/* Used for buffer overlays by cpptrad.c. */
@@ -559,11 +560,6 @@ extern const char *_cpp_default_encoding (void);
/* Utility routines and macros. */
#define DSC(str) (const uchar *)str, sizeof str - 1
-#define xnew(T) (T *) xmalloc (sizeof(T))
-#define xcnew(T) (T *) xcalloc (1, sizeof(T))
-#define xnewvec(T, N) (T *) xmalloc (sizeof(T) * (N))
-#define xcnewvec(T, N) (T *) xcalloc (N, sizeof(T))
-#define xobnew(O, T) (T *) obstack_alloc (O, sizeof(T))
/* These are inline functions instead of macros so we can get type
checking. */
diff --git a/libcpp/lex.c b/libcpp/lex.c
index 7eafb13d3b4..914703fde2f 100644
--- a/libcpp/lex.c
+++ b/libcpp/lex.c
@@ -662,7 +662,7 @@ save_comment (cpp_reader *pfile, cpp_token *token, const unsigned char *from,
void
_cpp_init_tokenrun (tokenrun *run, unsigned int count)
{
- run->base = xnewvec (cpp_token, count);
+ run->base = XNEWVEC (cpp_token, count);
run->limit = run->base + count;
run->next = NULL;
}
@@ -673,7 +673,7 @@ next_tokenrun (tokenrun *run)
{
if (run->next == NULL)
{
- run->next = xnew (tokenrun);
+ run->next = XNEW (tokenrun);
run->next->prev = run;
_cpp_init_tokenrun (run->next, 250);
}
diff --git a/libcpp/macro.c b/libcpp/macro.c
index dc58b3180f1..729ea061b8b 100644
--- a/libcpp/macro.c
+++ b/libcpp/macro.c
@@ -919,7 +919,7 @@ next_context (cpp_reader *pfile)
if (result == 0)
{
- result = xnew (cpp_context);
+ result = XNEW (cpp_context);
result->prev = pfile->context;
result->next = 0;
pfile->context->next = result;
diff --git a/libf2c/ChangeLog b/libf2c/ChangeLog
deleted file mode 100644
index b8f07d6fea6..00000000000
--- a/libf2c/ChangeLog
+++ /dev/null
@@ -1,2423 +0,0 @@
-Thu Feb 5 15:08:08 2004 Geoffrey Keating <geoffk@apple.com>
-
- PR 12179
- * aclocal.m4 (GLIBCPP_EXPORT_INSTALL_INFO): Use 'gcc', not 'gcc-lib'.
- Add comment about poorly-named variables.
- * Makefile.in (libsubdir): Use 'gcc', not 'gcc-lib'.
- * configure: Regenerate.
-
-2004-01-14 Kelley Cook <kcook@gcc.gnu.org>
-
- * libF77/configure.in: Update to AC_PREREQ(2.13)
- * libI77/configure.in: Update to AC_PREREQ(2.13)
- * libU77/configure.in: Update to AC_PREREQ(2.13)
- * libU77/configure: Regenerate.
-
-2003-10-14 Nathanael Nerode <neroden@gcc.gnu.org>
-
- * configure: Regenerate.
-
-2003-09-21 Toon Moene <toon@moene.indiv.nluug.nl>
-
- PR libf2c/11918
- * fstat_.c: Call f_init().
- * isatty_.c: Ditto.
- * fnum_.c: Check file descriptor before handing it back.
-
-Tue Sep 9 15:22:57 2003 Alan Modra <amodra@bigpond.net.au>
-
- * configure: Regenerate.
-
-2003-07-04 H.J. Lu <hongjiu.lu@intel.com>
-
- * Makefile.in: Replace PWD with PWD_COMMAND.
-
-2003-06-15 Nathanael Nerode <neroden@gcc.gnu.org>
-
- * libU77/bes.c, libU77/dbes.c: Remove.
- * libU77/Makefile.in: Remove references to bes.c, dbes.c
-
-2003-04-21 Loren J. Rittle <ljrittle@acm.org>
-
- * libI77/configure.in (_XOPEN_SOURCE): Bump to 600.
- * libI77/configure: Regenerate.
- * libU77/configure.in (_XOPEN_SOURCE): Bump to 600.
- * libU77/configure: Regenerate.
-
-2003-04-11 Bud Davis <bdavis9659@comcast.net>
-
- PR Fortran/1832
- * libf2c/libI77/iio.c (z_putc): Check for overflowing length
- of output string.
-
-2003-03-24 Bud Davis <bdavis9659@comcast.net>
-
- PR fortran/10197
- * libI77/open.c (f_open): A DIRECT ACCESS file is
- UNFORMATTED by default.
-
-Wed Mar 12 22:27:14 2003 Andreas Schwab <schwab@suse.de>
-
- * aclocal.m4 (GLIBCPP_EXPORT_INSTALL_INFO): Avoid trailing /. in
- glibcpp_toolexeclibdir.
- * configure: Rebuilt.
-
-2003-02-20 Alexandre Oliva <aoliva@redhat.com>
-
- * configure.in: Propagate ORIGINAL_LD_FOR_MULTILIBS to
- config.status.
- * configure: Rebuilt.
-
-2003-02-03 Andreas Jaeger <aj@suse.de>
-
- * libU77/configure.in (AC_PROG_CC_WORKS): Define _GNU_SOURCE.
- * libU77/config.hin: Regenerated.
- * libU77/configure: Regenerated.
-
-2003-01-27 Alexandre Oliva <aoliva@redhat.com>
-
- * Makefile.in ($(LIBG2C)): -rpath is glibcpp_toolexeclibdir.
- * aclocal.m4 (glibcpp_toolexeclibdir): Instead of
- $(MULTISUBDIR), use `$CC -print-multi-os-directory`, unless
- version_specific_libs is enabled.
- * configure: Rebuilt.
-
-2003-01-09 Christian Cornelssen <ccorn@cs.tu-berlin.de>
-
- * Makefile.in (FLAGS_TO_PASS): Also pass DESTDIR.
- (install, uninstall): Prepend $(DESTDIR) to destination
- paths in all (un)installation commands.
-
-Wed Dec 18 11:33:35 2002 Jason Merrill <jason@redhat.com>
-
- * libU77/date_.c (G77_date_y2kbuggy_0): Declare G77_abort_0 noreturn.
- * libU77/vxtidate_.c (G77_vxtidate_y2kbuggy_0): Likewise.
-
-2002-11-26 Nathanael Nerode <neroden@gcc.gnu.org>
-
- * configure.in: Remove skip-this-dir support.
- * configure: Regenerate.
-
-2002-11-19 Toon Moene <toon@moene.indiv.nluug.nl>
-
- PR fortran/8587
- * libF77/pow_zz.c: Handle (0.0, 0.0) ** power.
-
-2002-10-18 Krister Walfridsson <cato@df.lth.se>
-
- * libU77/configure.in (_XOPEN_SOURCE, _XOPEN_SOURCE_EXTENDED,
- __EXTENSIONS__, _FILE_OFFSET_BITS): Check that _XOPEN_SOURCE 500L
- may be defined before defining these.
- * libU77/configure: Regenerate.
- * libI77/configure.in (_XOPEN_SOURCE, _XOPEN_SOURCE_EXTENDED,
- __EXTENSIONS__, _FILE_OFFSET_BITS): Check that _XOPEN_SOURCE 500L
- may be defined before defining these.
- * libI77/configure: Regenerate.
-
-2002-09-23 Zack Weinberg <zack@codesourcery.com>
-
- * libF77/Version.c: Rename junk to __LIBF77_VERSION__. Add
- external decls for __LIBI77_VERSION__ and __LIBU77_VERSION__.
- Delete __G77_LIBF77_VERSION__
- (g77__fvers__): Print all three __LIB*77_VERSION__ strings,
- and __VERSION__ if we have it; nothing else.
-
- * libI77/Version.c: Provide only __LIBI77_VERSION__ (formerly junk).
- * libU77/Version.c: Provide only __LIBU77_VERSION__ (formerly junk).
-
-Sun Sep 22 23:43:37 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * Makefile.in (all): Fix multilib parallel build.
-
-2002-09-14 Tim Prince <tprince@computer.org>
-
- PR libf2c/7384
- * libU77/datetime_.c: Use GetLocalTime on MS-Windows.
-
-2002-08-31 Toon Moene <toon@moene.indiv.nluug.nl>
-
- PR fortran/6367
- * libI77/rsne.c (x_rsne): Use local variable no2 to count further
- list elements to read.
-
-2002-07-10 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * libI77/open.c (f_open): Do not indicate unformatted file
- if record length is given without a FORMATTED/UNFORMATTED
- specification.
-
-2002-06-25 DJ Delorie <dj@redhat.com>
-
- * aclocal.m4 (GLIBCPP_CONFIGURE): Split out
- GLIBCPP_TOPREL_CONFIGURE.
- * configure.in: Call it before AC_CANONICAL_SYSTEM.
- * configure: Regenerate.
-
-Wed Jun 5 15:05:41 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * f2cext.c (alarm_): Mark parameter(s) with attribute `unused'.
- * libF77/h_len.c (h_len): Likewise.
- * libF77/i_len.c (i_len): Likewise.
- * libI77/rsli.c (i_ungetc): Likewise.
- * libU77/date_.c (G77_date_y2kbuggy_0): Likewise.
- * libU77/fputc_.c (G77_fputc_0): Likewise.
- * libU77/vxtidate_.c (G77_vxtidate_y2kbuggy_0): Likewise.
- * libU77/vxttime_.c (G77_vxttime_0): Likewise.
-
-Mon Jun 3 22:24:48 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * libF77/main.c (f_setarg, f_setsig): Prototype.
- * libI77/lread.c (quad_read): Delete.
- * libI77/uio.c: Include config.h.
- * libI77/wref.c (wrt_E): Cast isdigit arg to unsigned char.
- * libU77/dtime_.c (clk_tck): Move to the scope where it is used.
- * libU77/etime_.c (clk_tck): Likewise.
-
-Mon Jun 3 22:23:03 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * libF77/lbitbits.c (lbit_cshift): disambiguate expressions
- with parentheses.
- * libF77/qbitbits.c (qbit_cshift): Likewise.
- * libI77/inquire.c (f_inqu): Likewise.
- * libI77/rdfmt.c (rd_Z): Likewise.
- * libI77/rsne.c (x_rsne): Likewise.
-
-Mon Jun 3 22:21:23 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * Makefile.in (s-libe77): Add WARN_CFLAGS.
-
-Sun Jun 2 10:32:35 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * libI77/dfe.c (s_rdfe, s_wdfe): Wrap parentheses around
- assignment used as truth value.
- * libI77/due.c (s_rdue, s_wdue): Likewise.
- * libI77/endfile.c (f_end): Likewise.
- * libI77/iio.c (s_rsfi, s_wsfi): Likewise.
- * libI77/lread.c (ERR, l_C, nmL_getc, s_rsle): Likewise.
- * libI77/lwrite.c (l_g, l_put): Likewise.
- * libI77/open.c (f_open): Likewise.
- * libI77/rdfmt.c (rd_Z): Likewise.
- * libI77/rsfe.c (s_rsfe): Likewise.
- * libI77/rsne.c (hash, mk_hashtab, nl_init, getname, getdimen,
- x_rsne, s_rsne): Likewise.
- * libI77/sue.c (s_rsue, s_wsue): Likewise.
- * libI77/wref.c (wrt_E, wrt_F): Likewise.
- * libI77/wsfe.c (s_wsfe): Likewise.
- * libI77/wsle.c (s_wsle): Likewise.
- * libI77/wsne.c (s_wsne): Likewise.
-
-Sun Jun 2 08:59:50 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * libF77/main.c (main): Avoid implicit int.
- * libI77/dfe.c (y_rsk, y_getc, c_dfe): Likewise.
- * libI77/due.c (c_due): Likewise.
- * libI77/err.c (f__canseek, f__nowreading, f__nowwriting):
- Likewise.
- * libI77/fmt.c (op_gen, ne_d, e_d, pars_f, type_f, en_fio):
- Likewise.
- * libI77/iio.c (z_getc, z_rnew, c_si, z_wnew): Likewise.
- * libI77/lread.c (t_getc, c_le, l_read): Likewise.
- * libI77/lwrite.c (l_write): Likewise.
- * libI77/open.c (fk_open): Likewise.
- * libI77/rdfmt.c (rd_ed, rd_ned): Likewise.
- * libI77/rsfe.c (xrd_SL, x_getc, x_endp, x_rev): Likewise.
- * libI77/rsne.c (t_getc, x_rsne): Likewise.
- * libI77/sfe.c (c_sfe): Likewise.
- * libI77/sue.c (c_sue): Likewise.
- * libI77/uio.c (do_us): Likewise.
- * libI77/wref.c (wrt_E, wrt_F): Likewise.
- * libI77/wrtfmt.c (wrt_L, w_ed, w_ned): Likewise.
-
-Sun Jun 2 08:58:05 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * libI77/rdfmt.c (rd_I): Delete unused variable(s).
- * libU77/access_.c (G77_access_0): Likewise.
- * libU77/chdir_.c (G77_chdir_0): Likewise.
- * libU77/chmod_.c (G77_chmod_0): Likewise.
- * libU77/ctime_.c (G77_ctime_0): Likewise.
- * libU77/link_.c (G77_link_0): Likewise.
- * libU77/lstat_.c (G77_lstat_0): Likewise.
- * libU77/rename_.c (G77_rename_0): Likewise.
- * libU77/stat_.c (G77_stat_0): Likewise.
- * libU77/symlnk_.c (G77_symlnk_0): Likewise.
- * libU77/unlink_.c (G77_unlink_0): Likewise.
-
-Sun Jun 2 08:55:20 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * libI77/inquire.c (f_inqu): Avoid ambiguous else clauses.
- * libI77/lread.c (l_C, l_L): Likewise.
- * libI77/open.c (f_open): Likewise.
- * libI77/rsne.c (x_rsne): Likewise.
- * libI77/wref.c (wrt_F): Likewise.
-
-Sun Jun 2 08:53:15 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * libF77/getenv_.c (G77_getenv_0): Avoid signed/unsigned warning.
- * libF77/system_.c (G77_system_0): Likewise.
- * libI77/open.c (f_open): Likewise.
- * libI77/rdfmt.c (rd_Z): Likewise.
- * libI77/uio.c (do_us, do_ud): Likewise.
-
-Sat Jun 1 08:33:14 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * libF77/*: Fix formatting.
- * libI77/*: Likewise.
- * libU77/*: Likewise.
-
-Fri May 31 21:56:30 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * g2c.hin, libF77/d_cnjg.c, libF77/main.c, libF77/r_cnjg.c,
- libF77/s_cat.c, libF77/s_paus.c, libF77/s_rnge.c, libF77/setarg.c,
- libF77/setsig.c, libF77/signal1.h0, libI77/dfe.c, libI77/due.c,
- libI77/err.c, libI77/fio.h, libI77/fmt.c, libI77/iio.c,
- libI77/ilnw.c, libI77/lread.c, libI77/lwrite.c, libI77/rsfe.c,
- libI77/rsli.c, libI77/rsne.c, libI77/sfe.c, libI77/sue.c,
- libI77/util.c, libI77/wrtfmt.c, libI77/wsfe.c, libI77/wsle.c,
- libI77/xwsne.c, libU77/date_.c: Kill VOID, Void and Int.
-
-Fri May 31 21:54:37 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * libF77/F77_aloc.c, libF77/exit_.c, libF77/main.c,
- libF77/s_paus.c, libF77/s_stop.c, libF77/setarg.c,
- libF77/setsig.c, libF77/sig_die.c, libF77/signal1.h0,
- libI77/close.c, libI77/dolio.c, libI77/fio.h, libI77/fmt.h,
- libI77/lio.h: Delete checks on __cplusplus.
-
-Fri May 31 21:50:01 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * libF77/*: Delete KR_headers cruft.
- * libI77/*: Likewise.
- * libU77/*: Likewise.
-
-Thu May 30 23:04:52 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * Makefile.in (WARN_CFLAGS): New.
- (FLAGS_TO_PASS): Add WARN_CFLAGS.
- * libF77/Makefile.in (ALL_CFLAGS): Likewise.
- * libI77/Makefile.in (ALL_CFLAGS): Likewise.
- * libU77/Makefile.in (ALL_CFLAGS): Likewise.
-
-2002-05-30 H.J. Lu (hjl@gnu.org)
-
- * libI77/open.c (_XOPEN_SOURCE): Removed.
-
-Mon May 20 13:03:54 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * libF77/Makefile.in (SHELL): Set to @SHELL@.
- * libI77/Makefile.in (SHELL): Likewise.
- * libU77/Makefile.in (SHELL): Likewise.
-
-2002-05-20 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * Makefile.in: Use @SHELL@, not /bin/sh for SHELL
- definition.
-
-2002-05-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * Makefile.in: Allow for PWDCMD to override hardcoded pwd.
- * aclocal.m4: Likewise.
- * configure: Regenerate.
-
-2002-05-08 Alexandre Oliva <aoliva@redhat.com>
-
- * configure.in (ORIGINAL_LD_FOR_MULTILIBS): Preserve LD at
- script entry, and set LD to it when configuring multilibs.
- * configure: Rebuilt.
-
-2002-05-02 Alexandre Oliva <aoliva@redhat.com>
-
- * Makefile.in: Fix for multilibbed natives.
-
-2002-04-15 Loren J. Rittle <ljrittle@acm.org>
-
- * aclocal.m4 (gcc_version_trigger): Use robust path construction.
- * configure: Rebuilt.
-
-2002-04-11 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * libI77/lio.h: Treat INTEGER*1 as signed char.
-
-2002-03-06 Phil Edwards <pme@gcc.gnu.org>
-
- * libF77/Version.c: Fix misplaced leading blanks on first line.
- * libI77/Version.c: Likewise.
- * libU77/Version.c: Likewise.
-
-2002-01-28 Geoffrey Keating <geoffk@redhat.com>
-
- * aclocal.m4: Replace with version copied from libstdc++-v3.
- * configure.in: Update for changes to aclocal and Makefile.
- * configure: Regenerate.
- * Makefile.in: Correct install and uninstall for cross targets.
- * libU77/configure: Regenerate.
-
-2002-01-20 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * Makefile.in: $(MULTISUBDIR) has an implied leading `/';
- remove duplicates.
- Use libtool for removing libg2c{a|la|so} for the `uninstall' target.
-
-2002-01-18 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * Makefile.in: Add missing `/' separator in last change.
-
-2002-01-18 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * Makefile.in: Install libg2c.{a|la|so} in $(libdir)$(MULTISUBDIR)
- instead of $(libsubdir)$(MULTISUBDIR).
-
-2002-01-15 Loren J. Rittle <ljrittle@acm.org>
-
- * libI77/configure.in: Remove fcntl.h check; never define
- _POSIX_SOURCE, NO_FCNTL or OPEN_DECL. Add check for tmpnam().
- * libI77/configure: Rebuilt.
- * libI77/config.h.in: Rebuilt.
- * libI77/Makefile.in: Remove all traces of rawio.h from
- dependencies lists.
- * libI77/fio.h (FSEEK): Unroll -j1.7 -j1.6 made 2002-01-04.
- * libI77/open.c (f_open): Use HAVE_TMPNAM.
- * libI77/rawio.h: Remove file.
-
-2002-01-14 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * libI77/configure.in (_LARGEFILE_SOURCE): AC_DEFINE.
- * libI77/configure: Rebuilt.
- * libI77/config.h.in: Rebuilt.
-
-2002-01-04 Loren J. Rittle <ljrittle@acm.org>
-
- * libI77/fio.h (FSEEK): Enforce type of second parameter to be
- off_t when prototype is missing from system headers for the
- non-standard function.
-
-2002-01-03 Loren J. Rittle <ljrittle@acm.org>
-
- * Makefile.in ($(LIBG2C):): Let libtool decide when to add -lc.
-
-2001-12-04 Alexandre Oliva <aoliva@redhat.com>
-
- * Makefile.in ($(LIBG2C)): Fix -rpath argument to libtool.
-
- * Makefile.in (AR, RANLIB): Add, for substitutions.
- (all-unilib, $(LIBG2C)): Depend on object lists, not
- convenience libraries.
- (s-libe77): Renamed from libE77.la; build object list.
- (install): Do not move libraries to libdir.
- (mostlyclean, clean): Adjust.
- * libF77/Makefile.in (RANLIB): Add.
- (LINK): Remove.
- (../s-libf77): Renamed from ../libF77.la; build object list.
- (../libfrtbegin.a): Remove target first. Don't use $<.
- (all, clean, distclean): Adjust.
- * libF77/configure.in: Substitute RANLIB.
- * libF77/configure: Rebuilt.
- * libI77/Makefile.in (LINK): Delete.
- (../s-libi77): Renamed from ../libI77.la; build object list.
- (all, clean, distclean): Adjust.
- * libU77/Makefile.in: Likewise.
-
-2001-12-02 Toon Moene <toon@moene.indiv.nluug.nl>
-
- PR fortran/4885
- * endfile.c (t_runc): After ftruncate, seek to end-of-file.
-
-2001-11-25 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * libF77/Makefile.in: Fix non-portable use of `$<' in z_log.c's rule.
-
-2001-11-23 Toon Moene <toon@moene.indiv.nluug.nl>
-
- PR libf2c/4930
- * libF77/Makefile.in: Compile z_log.c with -ffloat-store.
-
-2001-11-16 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * Makefile.in: Add MAKEOVERRIDES= to suppress exporting
- environment to (sub)shells.
-
-2001-11-13 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * Makefile.in: Change dependencies on stamp files
- into dependencies on the generated .la files.
- Get rid of objlist. Update comment.
- * libF77/Makefile.in: Ditto.
- * libI77/Makefile.in: Ditto.
- * libU77/Makefile.in: Ditto.
-
-2001-10-20 Hans-Peter Nilsson <hp@bitrange.com>
-
- * configure.in: Fake AC_EXEEXT invocation.
- * configure: Regenerate.
-
-2001-10-20 David Edelsohn <dje@watson.ibm.com>
-
- * Makefile.in: Do not include SUBDIRS in objlist. Create
- libg2c.so from F2CEXT and SUBDIRS archives.
- * libF77/Makefile.in: Create archive.
- * libI77/Makefile.in: Same.
- * libU77/Makefile.in: Same.
-
-2001-10-05 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * Makefile.in: Move libg2c.so and libg2c.{l}a to
- the same directory at install.
-
-2001-10-03 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * Makefile.in: Add "AR" reference, change
- from frtbegin.o to libfrtbegin.a.
- * libF77/Makefile.in: Ditto.
-
-2001-10-02 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * libF77/Makefile.in: Make .lo the target of compilation.
- * libI77/Makefile.in: Ditto.
- * libU77/Makefile.in: Ditto.
-
-2001-10-01 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * Makefile.in: Set major:minor:sub version number
- of shared libf2c to 0:0:0.
-
-2001-09-29 Juergen Pfeifer <juergen.pfeifer@gmx.net>
- Toon Moene <toon@moene.indiv.nluug.nl>
-
- Make libf2c a shared library.
-
- * aclocal.m4: Get definition of libtool.
- * Makefile.in: Use libtool.
- * configure.in: Use libtool.
- * configure: Regenerated.
- * libF77/Makefile.in: Use libtool; treat main program contained in
- libF77/main.c specially.
- * libF77/configure.in: Use libtool.
- * libF77/configure: Regenerated.
- * libI77/Makefile.in: Use libtool.
- * libI77/configure.in: Use libtool.
- * libI77/configure: Regenerated.
- * libU77/Makefile.in: Use libtool.
- * libU77/configure.in: Use libtool.
- * libU77/configure: Regenerated.
- * libU77/date_.c: Adapt for -fPIC compiling.
- * libU77/vxtidate_.c: Ditto.
-
-2001-09-22 Richard Earnshaw <rearnsha@arm.com>
-
- * libI77/configure.in (__EXTENSIONS__): Define.
- * libI77/config.h.in, libI77/conifgure: regenerate.
- * libU77/configure.in (__EXTENSIONS__): Likewise.
-
-2001-07-18 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * libI77/configure.in (_XOPEN_SOURCE, _FILE_OFFSET_BITS): Move
- these defines before tests which might be affected by them.
- (_XOPEN_SOURCE_EXTENDED): Define.
- * libI77/configure, libI77/config.h.in: Regenerate.
-
-Wed Jul 18 11:14:33 2001 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * libU77/configure.in (_XOPEN_SOURCE, _FILE_OFFSET_BITS): Move
- these defines before tests which might be affected by them.
- (_XOPEN_SOURCE_EXTENDED): Define.
-
- * libU77/configure, libU77/config.hin: Regenerate.
-
-2001-07-10 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * libI77/fio.h: Revert type of url from off_t to int.
- * libI77/dfe.c (c_dfe): Cast offset expression in FSEEK to off_t.
- * libI77/due.c (c_due): Ditto. (e_rdue): Ditto.
- * libI77/ftell_.c (G77_ftell_0): Cast result of FTELL to integer.
- (G77_fseek_0): Cast offset argument of FSEEK to off_t.
-
-2001-07-07 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * libI77/Makefile.in: Update config.h dependencies.
- * libI77/configure.in: Define _XOPEN_SOURCE and
- _FILE_OFFSET_BITS unconditionally.
- * libI77/configure: Rebuilt.
- * libI77/config.h.in: Rebuilt.
- * libI77/endfile.c (t_runc): Replace rewind by FSEEK.
- * libI77/err.c (f__nowwriting): The type of `loc' is off_t.
- * libI77/open.c (f_open): Replace rewind by FSEEK.
- * libI77/rewind.c: Include config.h. (f_rew): Replace
- rewind by FSEEK.
- * libI77/sfe.c: Include config.h.
- * libI77/wsfe.c: Ditto.
- * libU77/configure.in: Define _XOPEN_SOURCE and
- _FILE_OFFSET_BITS unconditionally.
- * libU77/configure: Rebuilt.
- * libU77/config.hin: Rebuilt.
-
-2001-07-07 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * libI77/Makefile.in: Add necessary dependencies on config.h.
-
-2001-07-06 Toon Moene <toon@moene.indiv.nluug.nl>
- Pedro Vazquez <vazquez@penelope.iqm.unicamp.br>
-
- * libI77/configure.in: Check for fseeko, ftello.
- * libI77/configure: Rebuilt.
- * libI77/config.h.in: Rebuilt.
- * libI77/fio.h: Define FSEEK to be fseek or fseeko, depending
- on configure's findings. Ditto for FTELL and ftell / ftello.
- * libI77/backspace.c (f_back): Use FSEEK for fseek, FTELL for ftell.
- * libI77/dfe.c (c_dfe): Ditto.
- * libI77/due.c (c_due, e_rdue): Ditto.
- * libI77/endfile.c (t_runc): Ditto.
- * libI77/err.c (f__nowreading, f__nowwriting): Ditto.
- * libI77/ftell_.c (G77_ftell_0, G77_fseek_0): Ditto.
- * libI77/inquire.c (f_inqu): Ditto.
- * libI77/open.c (f_open): Ditto.
- * libI77/rdfmt.c (rd_ed): Ditto.
- * libI77/sue.c (s_wsue, e_wsue, e_rsue): Ditto.
-
-2001-07-04 Zack Weinberg <zackw@stanford.edu>
-
- * Makefile.in: Take PICFLAG and RUNTESTFLAGS out of FLAGS_TO_PASS.
-
-2001-07-01 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * libI77/fio.h: Include <sys/types.h> for off_t.
-
-2001-07-01 Toon Moene <toon@moene.indiv.nluug.nl>
- Pedro Vazquez <vazquez@penelope.iqm.unicamp.br>
-
- * libI77/fio.h: Use off_t when appropriate.
- * libI77/backspace.c (f_back): Ditto.
- * libI77/endfile.c (t_runc): Ditto.
- * libI77/err.c (f__nowreading): Ditto.
- * libI77/ftell_.c (unit_chk): Ditto.
- * libI77/sue.c (global f__recloc, s_wsue): Ditto.
-
-2001-06-13 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * libI77/inquire.c: Include "config.h".
-
-2001-05-21 Loren J. Rittle <ljrittle@acm.org>
-
- * libI77/Makefile.in (stamp-h): Create in $(objdir) instead
- of $(srcdir).
-
-2001-05-18 Andreas Jaeger <aj@suse.de>
-
- * libI77/Makefile.in (stamp-h): Only create config.h, touch stamp-h.
- (${srcdir}/config.h.in): Add true rule.
-
- * libI77/stamp-h.in: Added.
-
-2001-05-17 Andreas Jaeger <aj@suse.de>
-
- * libI77/Makefile.in: Add rules to rebuild config.h.in when
- needed.
-
-2001-05-16 Andreas Jaeger <aj@suse.de>
-
- * libI77/backspace.c: Include "config.h".
- * libI77/close.c: Likewise.
- * libI77/dfe.c: Likewise.
- * libI77/dolio.c: Likewise.
- * libI77/due.c: Likewise.
- * libI77/err.c: Likewise.
- * libI77/fmt.c: Likewise.
- * libI77/fmtlib.c: Likewise.
- * libI77/ftell_.c: Likewise.
- * libI77/ilnw.c: Likewise.
- * libI77/lread.c: Likewise.
- * libI77/open.c: Likewise.
- * libI77/rdfmt.c: Likewise.
- * libI77/rsfe.c: Likewise.
- * libI77/rsne.c: Likewise.
- * libI77/util.c: Likewise.
- * libI77/wrtfmt.c: Likewise.
- * libI77/wsne.c: Likewise.
- * libI77/xwsne.c: Likewise.
-
- * libI77/config.h.in: Generate with autoheader.
-
- * libI77/configure.in: Add comments for all AC_DEFINES so that
- autoheader can grok it.
- * libI77/configure: Regenerated.
-
-2001-05-16 Andreas Jaeger <aj@suse.de>
-
- * libI77/Makefile.in (endfile.o): Add dependency on config.h.
-
- * libI77/endfile.c: Include config.h and sys/types for off_t.
-
- * libI77/config.h.in: New file.
-
- * libI77/configure.in: Add test for off_t, create config.h file.
- * libI77/configure: Regenerated.
-
-2001-05-15 Loren J. Rittle <ljrittle@acm.org>
-
- * libI77/endfile.c (t_runc): Add cast to help case where
- ftruncate() prototype is somehow missing even though autoconf
- test found it properly.
-
-2001-02-26 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * libI77/configure.in: Test for ftruncate.
- * libI77/configure: Rebuilt.
- * libI77/endfile.c: Use fflush/ftruncate when available.
-
-2001-02-19 Joseph S. Myers <jsm28@cam.ac.uk>
-
- * libF77/Version.c, libI77/Version.c, libU77/Version.c: Update G77
- version number to 0.5.27.
-
-2001-02-08 Geoffrey Keating <geoffk@redhat.com>
-
- * configure.in: Don't run AC_PROG_CC_WORKS, because
- we're not interested in the result and it might fail.
- * libF77/configure.in: Likewise.
- * libI77/configure.in: Likewise.
- * libU77/configure.in: Likewise.
- * configure: Regenerated.
- * libF77/configure: Likewise.
- * libI77/configure: Likewise.
- * libU77/configure: Likewise.
-
-2001-01-29 Phil Edwards <pme@sources.redhat.com>
-
- * libU77/COPYING.LIB: Update to LGPL 2.1 from the FSF.
-
-2001-01-24 Michael Sokolov <msokolov@ivan.Harhan.ORG>
-
- * libU77/alarm_.c: Separate the #ifdef KR_headers logic from the
- G77_alarm_0 function definition. Check for SIG_ERR and provide our own
- if missing.
-
-2001-01-24 David Billinghurst <David.Billinghurst@riotinto.com>
-
- * libU77/Makefile.in: Explicitly generate a.out for check.
-
-2001-01-23 Michael Sokolov <msokolov@ivan.Harhan.ORG>
-
- * libU77/ctime_.c: #include <sys/types.h> for time_t.
- * libU77/datetime_.c: Likewise.
- * libU77/fdate_.c: Likewise.
- * libU77/gmtime_.c: Likewise.
- * libU77/idate_.c: Likewise.
- * libU77/itime_.c: Likewise.
- * libU77/ltime_.c: Likewise.
- * libU77/sys_clock_.c: Likewise.
- * libU77/vxtidate_.c: Likewise.
- * libU77/vxttime_.c: Likewise.
-
- * libU77/sys_clock_.c: #include <sys/param.h> for the clock tick rate.
-
-2000-12-09 Toon Moene <toon@moene.indiv.nluug.nl>
-
- Update to Netlib version 20001205.
- Thanks go to David M. Gay for these updates.
-
- * libF77/Version.c: Update version information.
- * libF77/z_log.c: Improve accuracy of real(log(z)) for
- z near (+-1,eps) with |eps| small.
- * libF77/s_cat.c: Adjust call when ftnint and ftnlen are
- of different size.
- * libF77/dtime_.c, libF77/etime_.c: Use floating point divide.
-
- * libI77/Version.c: Update version information.
- * libI77/rsne.c, libI77/xwsne.c: Adjust code for when ftnint
- and ftnlen differ in size.
- * libI77/lread.c: Fix reading of namelist logical values followed
- by <name>= where <name> starts with T or F.
-
-2000-11-26 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * libI77/Version.c, libF77/Version.c, libU77/Version.c:
- Designate version as (experimental) instead of (prerelease)
-
-2000-11-15 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * libI77/configure.in: See if `mkstemp' is available.
- * libI77/configure: Regenerate.
- * libI77/open.c: Use `mkstemp' to create scratch
- file atomically.
-
-2000-07-03 Donn Terry (donnte@microsoft.com)
- * libU77/aclocal.m4: check for 2 argument gettimeofday without
- struct timezone
-
-2000-07-02 Toon Moene <toon@moene.indiv.nluug.nl>
- * libF77/Version.c: Bumped version number to 0.5.26.
- * libI77/Version.c: Ditto.
- * libU77/Version.c: Ditto.
-
-2000-06-21 Zack Weinberg <zack@wolery.cumb.org>
-
- * libU77/dtime_.c, libU77/etime_.c: Include stdlib.h if
- HAVE_STDLIB_H is defined.
-
-2000-06-11 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
-
- * rdfmt.c (rd_L): Use if-then-else instead of case statement to
- solve problems when sizeof(char) == sizeof(short).
-
-2000-05-18 Chris Demetriou <cgd@sibyte.com>
-
- * configure.in: Test for __g77_integer, __g77_uinteger,
- __g77_longint, and __g77_ulongint builtin types, rather
- than mucking around with compiler headers.
- * configure: Regenerate.
- * g2c.hin (integer, logical, flag, ftnlen, ftnint): Use
- __g77_integer rather than autoconfigured value.
- (uinteger): Use __g77_uinteger rather than autoconfigured value.
- (longint): Use __g77_longint rather than autoconfigured value.
- (ulongint): Use __g77_ulongint rather than autoconfigured value.
-
-Sun Mar 12 20:12;30 2000 Toon Moene <toon@moene.indiv.nluug.nl>
- Based on work done by David M. Gay (Bell Labs)
-
- * libF77/configure.in: Define IEEE_COMPLEX_DIVIDE.
- * libF77/[cz]_div.c: Arrange for compilation under
- -DIEEE_COMPLEX_DIVIDE to make these routines
- avoid calling sig_die when the denominator vanishes.
- * libF77/s_rnge.c: Add casts for the case of
- sizeof(ftnint) == sizeof(int) < sizeof(long).
- * libI77/endfile.c: Set state to writing (b->uwrt = 1) when an
- endfile statement requires copying the file
- Also, supply a missing (long) cast in the sprintf call.
- * libI77/sfe.c: Add #ifdef ALWAYS_FLUSH logic, for formatted I/O.
-
-Wed Feb 16 11:10:05 2000 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * configure.in (gcc_version): When setting, narrow search to
- lines containing `version_string'.
-
-Tue Nov 16 20:39:42 1999 Geoffrey Keating <geoffk@cygnus.com>
-
- * libU77/u77-test.f (wd): Allow for longer working directory
- pathnames.
-
-1999-10-14 Theo Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
-
- * libU77/acconfig.h: Define GETTIMEOFDAY_ONE_ARGUMENT and
- HAVE_TIMEZONE in acconfig.h.
- * libU77/config.hin: Rebuilt.
-
-1999-10-12 Dave Love <fx@gnu.org>
-
- * libU77/aclocal.m4: Re-write, defining LIBU77_GETTIMEOFDAY, not
- LIBU77_HAVE_STRUCT_TIMEZONE.
-
- * libU77/configure.in: Use LIBU77_GETTIMEOFDAY, not
- LIBU77_HAVE_STRUCT_TIMEZONE. Don't check for gettimeofday
- separately.
-
- * libU77/datetime_.c (G77_date_and_time_0): Use
- GETTIMEOFDAY_ONE_ARGUMENT.
-
-Tue Sep 14 01:44:01 1999 Marc Espie <espie@cvs.openbsd.org>
-
- * Makefile.in: Prepend $(SHELL) to move-if-change calls.
-
-Fri Aug 6 23:32:29 1999 Daniel Jacobowitz <drow@drow.them.org>
-
- * Makefile.in (FLAGS_TO_PASS): Include prefix, exec_prefix,
- libdir, libsubdir and tooldir.
-
-Wed Jul 7 15:58:16 1999 Craig Burley <craig@jcb-sc.com>
-
- * libU77/date_.c (G77_date_y2kbug_0): G77_time_0 returns
- longint, not integer, and G77_ctime_0 takes longint, not
- integer, argument.
-
- * libU77/Version.c: Bump version.
-
-Mon Jun 28 21:27:08 1999 Craig Burley <craig@jcb-sc.com>
-
- Update to Netlib version of 1999-06-28:
- * changes.netlib, libI77/Version.c, libI77/rsne.c
- readme.netlib: See changes.netlib for info.
-
-Fri Jun 18 11:38:07 1999 Craig Burley <craig@jcb-sc.com>
-
- * libU77/ttynam_.c: if !defined (HAVE_TTYNAM),
- write all spaces into return value instead of trying
- to return -1 from a void function.
-
-Fri Jun 18 11:22:21 1999 Craig Burley <craig@jcb-sc.com>
-
- Update to Netlib version of 1999-05-10:
- * changes.netlib, libI77/Version.c, libI77/backspace.c
- readme.netlib: See changes.netlib for info.
-
-Fri Jun 18 11:15:24 1999 Craig Burley <craig@jcb-sc.com>
-
- * libI77/backspace.c: Undo Wednesday's change, in
- preparation for slightly different Netlib change.
-
-Wed Jun 16 11:38:58 1999 Craig Burley <craig@jcb-sc.com>
-
- From Ian Watson <WATSON_IAN_A@Lilly.com> 1999-06-12:
- * libI77/backspace.c: Reload file descriptor after
- calling t_runc.
- * libI77/Version.c: Bump libg2c version.
-
-Wed May 26 14:26:35 1999 Craig Burley <craig@jcb-sc.com>
-
- * libF77/Version.c, libI77/Version.c, libU77/Version.c:
- Use 0.5.24 to designate the version of g77 within GCC 2.95.
-
-Thu May 20 03:20:59 1999 Jeffrey A Law (law@cygnus.com)
-
- * configure.in (AC_EXEEXT): Remove call.
- (compiler_name): Explicitly check with no extension and .exe
- extension.
- * configure: Regenerate.
-
-Mon May 10 17:33:45 1999 Craig Burley <craig@jcb-sc.com>
-
- Update to Netlib version of 1999-05-10:
- * changes.netlib, libF77/Version.c, libF77/abort_.c,
- libF77/c_log.c, libF77/ef1asc_.c, libF77/s_rnge.c,
- libF77/s_stop.c, libI77/Version.c, libI77/open.c,
- readme.netlib: See changes.netlib for info.
-
-Fri May 7 9:33:55 1999 Donn Terry (donn@interix.com)
-
- * libU77/dtime_.c (G77_dtime_0): Standard-conforming error check.
- * libU77/etime_.c (G77_etime_0): Likewise.
-
-Mon May 3 19:15:07 1999 Craig Burley <craig@jcb-sc.com>
-
- * libU77/u77-test.f (main): Declare ABORT as intrinsic.
-
-1999-05-03 Craig Burley <craig@jcb-sc.com>
-
- * libU77/u77-test.f: Reverse order of two arguments to
- CTIME_subr, DTIME_subr, ETIME_subr, and TTYNAM_subr.
-
-Mon May 3 11:21:35 1999 Craig Burley <craig@jcb-sc.com>
-
- * libF77/c_log.c: Cope with partial overlap a la z_log.c.
- (Change likely to be made to netlib version shortly.)
-
-Mon May 3 11:12:38 1999 Craig Burley <craig@jcb-sc.com>
-
- Update to Netlib version of 1999-05-03:
- * changes.netlib, libF77/Version.c, libF77/c_cos.c,
- libF77/c_exp.c, libF77/c_sin.c, libF77/d_cnjg.c,
- libF77/dtime_.c, libF77/etime_.c, libF77/getenv_.c,
- libF77/r_cnjg.c, libF77/z_cos.c, libF77/z_exp.c,
- libF77/z_log.c, libF77/z_sin.c, libI77/Version.c,
- libI77/err.c, libI77/open.c, libI77/rdfmt.c, readme.netlib:
- See changes.netlib for info.
-
-Mon May 3 10:52:53 1999 Craig Burley <craig@jcb-sc.com>
-
- * libF77/c_cos.c, libF77/c_div.c, libF77/c_exp.c, libF77/c_log.c,
- libF77/c_sin.c, libF77/c_sqrt.c, libF77/d_cnjg.c, libF77/pow_zi.c,
- libF77/r_cnjg.c, libF77/z_cos.c, libF77/z_div.c, libF77/z_exp.c,
- libF77/z_log.c, libF77/z_sin.c, libF77/z_sqrt.c: Revert back to
- netlib versions as of f2c-19990501.
-
-Sun May 2 01:38:50 1999 Craig Burley <craig@jcb-sc.com>
-
- * libU77/u77-test.f (main): Declare FTELL as intrinsic.
-
-Sun May 2 01:13:37 1999 Craig Burley <craig@jcb-sc.com>
-
- * libU77/u77-test.f (main): List libU77 intrinsics
- not currently tested.
- Add tests for TIME8, CTIME_subr, IARGC, TTYNAM_subr,
- GETENV, FDATE_subr, DTIME_subr, ETIME_subr, DATE, ITIME,
- FTELL_subr, MCLOCK, MCLOCK8, and CPU_TIME.
- Trim blanks off the ends of some printed strings.
-
-Sun May 2 00:06:45 1999 Craig Burley <craig@jcb-sc.com>
-
- * libU77/u77-test.f (main): Just warn about FSTAT gid
- disagreement, as it's expected on some systems.
-
-Sat May 1 23:57:18 1999 Craig Burley <craig@jcb-sc.com>
-
- * libU77/u77-test.f: Generalize sum-checking to
- use a new function, which allows for some slop.
- Clean up some commentary.
- (issum): The new function.
- (sgladd): Deleted subroutine.
-
-Sat May 1 23:35:18 1999 Craig Burley <craig@jcb-sc.com>
-
- * libU77/u77-test.f: Modify to be more like testsuite
- version, bringing patches to that version here.
- Add suitable commentary.
-
-Sat Apr 24 11:02:48 1999 Craig Burley <craig@jcb-sc.com>
-
- * Makefile.in (s-libi77, s-libf77, s-libu77): Revert
- the patch from <hjl@gnu.org>, as per the commentary.
-
-Sat Apr 17 17:33:30 1999 Craig Burley <craig@jcb-sc.com>
-
- From H.J. Lu <hjl@gnu.org>:
- * Makefile.in (s-libi77): Depend on i77.
- (s-libf77): Depend on i77.
- (s-libu77): Depend on u77.
-
-Mon Apr 12 21:38:14 1999 Mumit Khan <khan@xraylith.wisc.edu>
-
- * libF77/getenv_.c: Include stdlib.h.
-
-Sun Apr 11 23:30:42 1999 Mumit Khan <khan@xraylith.wisc.edu>
-
- * libU77/dtime_.c: Handle all variants of WIN32.
- * libU77/etime_.c: Likewise.
-
- * libU77/aclocal.m4: New file.
- * libU77/configure.in (LIBU77_HAVE_STRUCT_TIMEZONE): Add test.
- * libU77/acconfig.h (HAVE_STRUCT_TIMEZONE): Add macro.
- * libU77/datetime_c.c (G77_date_and_time_0): Use.
- * libU77/config.hin: Regenerate.
- * libU77/configure: Likewise.
-
-Wed Mar 31 13:50:24 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * configure.in (extra_includes): Don't attempt to calculate the
- location of the gcc src or obj directories. Instead rely on
- precomputed variables, $topsrcdir and $r, to obtain these values.
- Set -I flags appropriately.
-
-1999-03-28 Dave Love <fx@gnu.org>
-
- * configure: Rebuilt.
-
- * configure.in: Fix integer size tests: sanity check first; search
- toplevel include dir (from Rainer Orth); only mess with ac_cpp
- once; use -DIN_GCC -DHAVE_CONFIG_H.
-
- * configure.in: Use `g77_cv_...', not `f77_cv_...'.
-
-Wed Mar 24 22:41:28 1999 Mumit Khan <khan@xraylith.wisc.edu>
-
- * configure.in (AC_PREREQ): Update to 2.13.
- (AC_EXEEXT): Call to find possible file extension.
- (compiler_name): Use.
- * configure: Regenerate.
-
-1999-03-17 Craig Burley <craig@jcb-sc.com>
-
- Update to Netlib version of 1999-03-17:
- * libF77/F77_aloc.c, libF77/README.netlib, libF77/dtime_.c,
- libF77/etime_.c, libF77/signal1.h0, libI77/Version.c,
- libI77/dfe.c, libI77/endfile.c, libI77/lread.c,
- libI77/sfe.c, readme.netlib, changes.netlib:
- See changes.netlib for info.
-
-1999-03-06 Craig Burley <craig@jcb-sc.com>
-
- Mon Dec 21 23:03:54 1998 Hans-Peter Nilsson <hp@axis.se>:
- * libI77/Makefile.in (all *.o except VersionI.o): Added dependence
- on respective .c file.
- * libF77/Makefile.in (all .o except VersionF.o): Similarly.
- * libU77/Makefile.in (date_.o): Added dependence on date_.c
-
-1999-03-06 Craig Burley <craig@jcb-sc.com>
-
- Rename non-Y2K-compliant intrinsics:
- * Makefile.in (F2CEXT): Now two versions each of
- `date' and `vxtidt'.
- * f2cext.c (date_, vxtidate_): Split into two versions,
- the existing one calling a new "y2kbuggy" routine that
- does not exist, and a new one named with "y2kbug" that
- calls the newly renamed underlying routine.
- * libU77/date_.c (G77_date_y2kbug_0): Rename from G77_date_0.
- * libU77/vxtidate_.c (G77_vxtidate_y2kbug_0): Rename from
- G77_vxtidate_0.
- * libU77/Version.c: Bump version.
-
-1999-03-03 Craig Burley <craig@jcb-sc.com>
-
- * libU77/vxtidate_.c (G77_vxtidate_0): Truncate
- year to last two digits (i.e. modulo 100), as per
- documentation and (documented) Y2K non-compliance.
-
-1999-02-20 Craig Burley <craig@jcb-sc.com>
-
- From Krister Walfridsson <cato@df.lth.se>:
- * libU77/lstat_.c (G77_lstat_0): Kill spurious setting
- of element 6 to zero, as it undid the previous setting.
-
-1999-02-15 Craig Burley <craig@jcb-sc.com>
-
- * f2c.h: Delete my (old) email address.
-
-1999-02-14 Craig Burley <craig@jcb-sc.com>
-
- * libU77/Version.c: Bump ("update" below) to date of last change.
- * libI77/Version.c: Bump to date of last change.
-
-Tue Feb 9 18:13:30 GMT 1999 Nathan Sidwell <nathan@acm.org>
-
- * Makefile.in (distclean): Move Makefile deletion to end of
- commands.
-
-1999-01-15 Dave Love <fx@gnu.org>
-
- * libU77/datetime_.c (G77_date_and_time_0): Return milliseconds as
- such, not as microseconds.
- (s_copy): Declare.
-
-1998-11-26 Manfred Hollstein <manfred@s-direktnet.de>
-
- * configure.in (compiler_name): Add check to detect if this
- language's compiler has been built.
- * configure: Regenerate.
-
-Mon Nov 23 16:52:22 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * configure.in: Use AC_PREREQ(2.12.1).
- * libF77/configure.in: Likewise.
- * libI77/configure.in: Likewise.
- * libU77/configure.in: Likewise.
-
-1998-10-24 Dave Love <d.love@dl.ac.uk>
-
- * configure.in: Touch g2c.h in AC_OUTPUT after multilib
- disturbance.
-
-1998-10-23 Dave Love <d.love@dl.ac.uk>
-
- * f2cext.c: Include math.h.
-
-1998-10-19 Dave Love <d.love@dl.ac.uk>
-
- * configure: Regenerate.
-
- * configure.in: Use AC_CONFIG_AUX_DIR.
-
-1998-10-12 Dave Love <fx@gnu.org>
-
- * libI77/open.c (_XOPEN_SOURCE): Define.
-
-1998-10-12 Dave Love <fx@gnu.org>
-
- * Makefile.in (.SUFFIXES): Don't use any.
- (all-unilib): New target, like old all.
- (all): Use it.
- (.PHONY): Add all-unilib.
-
-1998-10-12 Dave Love <d.love@dl.ac.uk>
-
- * configure.in: Reorder Makefile, g2c.h in AC_OUTPUT.
-
-Tue Oct 6 21:16:58 1998 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.in: Revert last patch.
-
-Mon Oct 5 01:16:10 1998 H.J. Lu (hjl@gnu.org)
-
- * Makefile.in (s-libi77): Depend on i77.
- (s-libf77): Depend on i77.
- (s-libu77): Depend on u77.
-
-1998-09-30 Dave Love <d.love@dl.ac.uk>
-
- * Makefile.in (f2cext.c): Depend on g2c.h.
-
-1998-09-30 Robert Lipe <robertl@dgii.com>
-
- * Makefile.in (all): Correct dependencies so --disable-multilibs
- works again.
- (distclean): Correct typo.
-
-1998-09-28 Dave Love <d.love@dl.ac.uk>
-
- * libI77/open.c: Back out part of last Netlib update affecting
- scratch files which clashed with the g77 variations and broke
- implicit endfile on rewind.
-
-1998-09-21 Dave Love <d.love@dl.ac.uk>
-
- * libI77/Version.c: Update.
-
-Mon Sep 21 12:27:27 1998 Robert Lipe <robertl@dgii.com>
-
- * Makefile.in (distclean, clean, uninstall, install, all): Add
- multilib support.
- * configure.in: Likewise.
- * configure: Regenerate.
- * libF77/Makefile.in, libU77/Makefile.in, libI77/Makefile.in (clean):
- Explictly remove stamp in parent's directory.
-
-1998-09-20 Dave Love <d.love@dl.ac.uk>
-
- * libI77/sfe.c (e_wdfe): Set f__init to avoid spurious recursive
- i/o error from formatted direct i/o.
-
-Thu Sep 10 14:57:25 1998 Kamil Iskra <iskra@student.uci.agh.edu.pl>
-
- * Makefile.in (install): Add missing "else true;".
-
-1998-09-09 Craig Burley <burley@gnu.org>
-
- * configure.in: Test $srcdir, not $subdir (probable typo).
- Clarify commentary, fix a bit of spacing.
-
-1998-09-07 Dave Love <d.love@dl.ac.uk>
-
- * ChangeLog.egcs: Deleted. Entries merged here.
-
-1998-09-07 Dave Love <d.love@dl.ac.uk>
-
- * libI77/sfe.c, libI77/dfe.c: Revert last change.
-
-1998-09-06 Dave Love <d.love@dl.ac.uk>
-
- From Toon to fix spurious recursive i/o errors:
- * libI77/sfe.c (e_wdfe): Set f__init.
-
- * libI77/dfe.c (c_dfe): Check and set f__init.
- (s_rdfe, s_wdfe): Don't check and set f__init.
-
-Fri Sep 4 18:40:32 1998 Craig Burley <burley@gnu.org>
-
- * libU77/sys_clock_.c (G77_system_clock_0): Fix indentation.
-
-Tue Sep 1 10:06:06 1998 Craig Burley <burley@gnu.org>
-
- * libF77/Version.c: Update.
- * libU77/Version.c: Update.
- * libI77/Version.c: Update.
-
-Wed Aug 26 23:19:40 1998 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.in (FLAGS_TO_PASS): Fix typo.
-
-1998-08-11 Dave Love <d.love@dl.ac.uk>
-
- * README: Update from Craig.
-
-1998-07-24 Dave Love <d.love@dl.ac.uk>
-
- * Makefile.in (s-libe77, ${srcdir}/configure, g2c.h, Makefile)
- (config.status, rebuilt): Rely on VPATH, dropping explicit use of
- $(srcdir) in various places.
-
-1998-07-19 Dave Love <d.love@dl.ac.uk>
-
- * Makefile.in (all): Depend on s-libe77, not e77.
- (.PHONY): Remove e77.
-
-Thu Jul 16 00:58:52 1998 Jeffrey A Law (law@cygnus.com)
-
- * libU77/Makefile.in: Missed one config.h.in -> config.hin change.
-
- * g2c.hin: Renamed from g2c.h.in.
- * Makefile.in, configure.in: Changed as needed.
- * configure: Rebuilt.
-
- * libU77/config.hin: Renamed from libU77/config.h.in.
- * Makefile.in, configure.in: Changed as needed.
- * configure: Rebuilt.
-
-Tue Jul 14 21:35:30 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
-
- * Makefile.in (all): Invoke $(MAKE) instead of just make.
-
-Tue Jul 14 02:16:34 1998 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.in: stamp-lib* -> s-lib*.
- * libU77/Makefile.in: Likewise.
- * libF77/Makefile.in: Likewise.
- * libI77/Makefile.in: Likewise.
-
- * libU77/Makefile.in (ALL_CFLAGS): Add -I$(F2C_H_DIR).
-
-Mon Jul 13 13:31:03 1998 Craig Burley <burley@gnu.org>
-
- * libU77/u77-test.f: Double-check ETIME results, just
- like 0.5.24 does.
-
-1998-07-10 Dave Love <d.love@dl.ac.uk>
-
- * Makefile.in: Re-write build procedure mainly to honour
- dependencies correctly but also allow making in the build
- directory by configuring the relevant variables. The lib[FIU]77
- subdirs do dependency checking of their objects. Stamp files
- dictate when to run (new) archive targets in subdirs. Some
- tidying of variables. Supply full set of standard targets.
-
- * configure.in: Move much of testing to new configures in
- subdirs. Tidy up handling of RANLIB etc.
-
- * stamp-h.in, libF77/configure.in, libI77/configure.in:
- * libF77/configure, libI77/configure: New files.
-
- * libF77/Makefile.in, libI77/Makefile.in, libU77/Makefile.in:
- Change in step with libf2c/Makefile.in.
-
-1998-07-09 Dave Love <d.love@dl.ac.uk>
-
- * libU77/Makefile.in (check): Wrap -lg2c ... -lm around $(LIBS) in
- case of static link.
-
- * libU77/Version.c, libI77/Version.c: Update version info.
-
- * libU77/sys_clock_.c: Replace TIMES conditional stuff removed in
- error by last change.
-
-1998-07-06 Mike Stump <mrs@wrs.com>
-
- * Makefile.in (clean): Don't remove Makefiles, that is done in
- distclean.
-
-1998-07-06 Dave Love <d.love@dl.ac.uk>
-
- * libU77/Makefile.in (lib): Change variable lib to LIBS.
-
-1998-07-06 Robert Lipe <robertl@dgii.com>
-
- * libU77/configure.in: Look for -lsocket, add to LIBS if found.
-
- * libU77/Makefile.in (lib): Use LIBS from above.
-
-1998-07-05 Dave Love <d.love@dl.ac.uk>
-
- * f2cext.c (system_clock_): Remove (just f90 intrinsic).
-
- * Makefile.in (F2CEXT): Remove sclock.
- (UOBJ): Add libU77/datetime_.o.
-
- * libU77/config.h.in: Add HAVE_GETTIMEOFDAY.
-
- * libU77/configure.in: Check for gettimeofday.
-
- * libU77/datetime_.c: New file.
-
- * libU77/sys_clock_.c: Allow optional args.
-
- * libU77/Makefile.in (G77DIR): Fix for current directory
- structure.
- (SRCS, OBJS): Add datetime.
-
- * libU77/u77-test.f: Call date_and_time. Call system_clock
- omitting args.
-
-1998-06-29 Dave Love <d.love@dl.ac.uk>
-
- * libI77/wsfe.c (s_wsfe): Fix setting of f__curunit lost in
- previous change.
- * libI77/rsfe.c (s_rsfe): Likewise.
-
-Sat Jun 27 23:04:49 1998 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.in (FLAGS_TO_PASS, case G2C_H_DIR): Use $(TARGET_SUBDIR)
- instead of hardcoding "libraries".
-
-1998-06-26 Manfred Hollstein <manfred@s-direktnet.de>
-
- * Makefile.in (gcc_version_trigger): Add new macro.
- (config.status): Add dependency upon $(gcc_version_trigger).
-
- * configure.in (gcc_version_trigger): New variable; initialize
- using value from toplevel configure; add AC_SUBST for it.
- (gcc_version): Change initialization to use this new variable.
- * configure: Regenerate.
-
-1998-06-24 Manfred Hollstein <manfred@s-direktnet.de>
-
- * Makefile.in (version): Rename to gcc_version.
- * configure.in (version): Likewise.
- (gcc_version): Add code to use an option passed from parent configure.
- * configure: Regenerate.
-
-1998-06-23 Dave Love <d.love@dl.ac.uk>
-
- * libI77/backspace.c, libI77/dfe.c, libI77/due.c, libI77/iio.c:
- * libI77/lread.c, libI77/sfe.c, libI77/sue.c, libI77/wsfe.c: Update
- to Netlib version of 1998-06-18.
-
-1998-06-21 Dave Love <d.love@dl.ac.uk>
-
- * configure.in (version, target_alias): Define.
-
- * Makefile.in (version, target_alias, libsubdir): Define.
- (install): Remove check for libsubdir.
-
-Sat Jun 13 03:46:40 1998 Craig Burley <burley@gnu.org>
-
- * Makefile.in (install): Don't install if $(libsubdir)
- is empty; issue a diagnostic saying top-level Makefile
- must pass it in instead, and exit.
-
- * Makefile.in (g2c.h): Rename from f2c.h.
-
- * Makefile.in, libF77/Makefile.in, libI77/Makefile.in:
- * libU77/Makefile.in: Rewrite config and var assignment
- sections to be even more minimal than before, and to
- more clearly documented what macros are expected to be
- set and to what sorts of values. Eliminate CROSS and
- related stuff, since there's no such things as CROSS
- in egcs. Rename GCC_FOR_TARGET to CC throughout.
- * Makefile.in (stamp-libi77, stamp-libf77, stamp-libu77):
- Eliminate CROSS.
- * configure.in: Eliminate CROSS.
-
- Rename libf2c.a and f2c.h to libg2c.a and g2c.h,
- normalize and simplify g77/libg2c build process:
- * Makefile.in: Remove all stuff pertaining to
- installation, cleaning, and so on. Parent Makefile
- does all that now. Pass F2C_H_DIR,
- G2C_H_DIR, and GCC_H_DIR, the pathnames for the
- directories containing f2c.h, g2c.h, and other
- #include files, to subdirectory Makefiles.
- (stamp-libf77, stamp-libi77, stamp-libu77):
- Don't specify `-f Makefile' anymore, it's not needed
- now that subdirectory makefile's from netlib are
- renamed to makefile.netlib in g77 source (and to
- makefile.ori by configuration process, in case they're
- still around somehow).
- (stamp-libe77): Don't make libE77 dir unless it doesn't
- exist, if it does just delete all objects in it.
- Compile using $(GCC_FOR_TARGET), not $(CC).
- (rebuilt): Remove this and all subordinate targets,
- as parent Makefile now handles all that.
- (*clean): Remove.
- * configure.in (Pad_UDread, ALWAYS_FLUSH, WANT_LEAD_0):
- Remove these and commentary to new f2c.h file.
- AC_OUTPUT g2c.h instead of f2c.h. Remove old commentary
- regarding concatenation.
- * g2c.h.in: Rename from f2c.h.in, add appropriate
- commentary.
- * f2c.h: New file, a wrapper for g2c.h that does
- libg2c-specific stuff.
- * libF77/Makefile.in, libI77/Makefile.in, libU77/Makefile.in:
- Change $(ALL_CFLAGS) to use F2C_H_DIR, G2C_H_DIR, and GCC_H_DIR
- macros. Remove F2C_H macro, replace use with explicit
- dependencies on f2c.h and g2c.h.
- (*clean): Remove.
-
-Mon Apr 27 22:52:31 1998 Richard Henderson <rth@cygnus.com>
-
- * libU77/ltime_.c: Bounce the ftnint argument through a local time_t.
- * libU77/gmtime_.c: Likewise.
-
-Sun Apr 26 18:07:56 1998 Richard Henderson <rth@cygnus.com>
-
- * configure.in: Adjust include paths in F2C_INTEGER and F2C_LONGINT
- tests to work out of the build directory.
-
-1998-05-20 Dave Love <d.love@dl.ac.uk>
-
- * Makefile.in ($(lib)): Use shell loop instead of unportable
- make variable substitution.
-
-Tue May 19 12:50:27 1998 Craig Burley <burley@gnu.org>
-
- Break up main() into separate .o's so making and
- linking against shared libraries with non-Fortran
- main() routines is easier:
- * Makefile.in (MISC): Add setarg.o and setsig.o.
- * libF77/Makefile.in (MISC): Ditto.
- * libF77/setarg.c: New file, contains f_setarg().
- * libF77/setsig.c: New file, contains f_setsig().
- * libF77/getarg_.c: Rename xarg* to f__xarg*.
- * libF77/iargc_.c: Ditto
-
-Sat May 2 16:44:46 1998 Craig Burley <burley@gnu.org>
-
- * libF77/signal_.c, libI77/dfe.c, libI77/due.c,
- libI77/wsfe.c: Tweaks to eliminate unnecessary
- differences vs. netlib libf2c.
-
-Fri May 1 11:57:45 1998 Craig Burley <burley@gnu.org>
-
- Update to Netlib version of 1998-04-20:
- * libF77/dtime_.c, libF77/etime_.c, libF77/h_dnnt.c,
- libF77/h_nint.c, libF77/i_dnnt.c, libF77/i_nint.c,
- libF77/main.c, libF77/s_paus.c, libF77/signal1.h0,
- libI77/backspace.c, libI77/close.c, libI77/dfe.c,
- libI77/endfile.c, libI77/err.c, libI77/fio.h,
- libI77/iio.c, libI77/ilnw.c, libI77/lread.c,
- libI77/lwrite.c, libI77/open.c, libI77/rawio.h,
- libI77/sfe.c, libI77/util.c, libI77/wrtfmt.c,
- libI77/wsfe.c, libI77/wsle.c, libI77/wsne.c:
- See changes.netlib for info.
-
-Sun Apr 26 09:13:41 1998 Craig Burley <burley@gnu.org>
-
- * libU77/hostnm_.c (G77_hostnm_0): Fix off-by-one error
- that was trashing the byte just beyond the CHARACTER*(*)
- argument.
-
-Wed Mar 4 16:32:46 1998 Craig Burley <burley@gnu.org>
-
- * libU77/u77-test.f: Don't bother declaring etime.
- Use `implicit none' and declare mask and lenstr.
- Do ETIME/DTIME consistency check before loop, then
- use loop to verify that dtime "ticks" at some point.
- Check ETIME array-sum using single-precision add, to
- avoid spurious complaint on systems (like x86) that
- use more precision for intermediate results.
- Fix `Results of ETIME and DTIME...' message to print
- pertinent values (r1 and r2 instead of i and j).
- Change loop from 10M to 1K repeated up to 1000 times
- or until dtime "ticks".
- Print the number of 1K loops needed to see this tick.
- Answer a commented question.
- Split up a long line of output and do other prettying.
- Preset lognam in case GETLOG fails to overwrite it.
-
-Sat Feb 28 15:32:15 1998 Craig Burley <burley@gnu.org>
-
- * libI77/open.c (f_open): Use sizeof(buf) instead of
- 256, for the usual reasons.
-
-1998-02-17 Dave Love <d.love@dl.ac.uk>
-
- * libU77/u77-test.f: Tweak some o/p.
-
- * libU77/Makefile.in (check): Use -L for new directory structure.
-
- * Makefile.in (check): Run the u77 check.
- (config.status, Makefile): New targets.
-
-Wed Feb 11 01:46:20 1998 Manfred Hollstein <manfred@s-direktnet.de>
-
- * Makefile.in ($(lib)): Call $(AR) repeatedly to avoid overflowing
- argument size limit on ancious System V.
-
-Sun Feb 8 00:32:17 1998 Manfred Hollstein <manfred@s-direktnet.de>
-
- * Makefile.in: Add `info install-info clean-info check dvi' targets.
-
-Mon Feb 2 11:08:49 1998 Richard Henderson <rth@cygnus.com>
-
- * configure.in: Update F2C_INTEGER and F2C_LONGINT tests
- for the new placement in the hierarchy.
-
-Sun Feb 1 02:36:33 1998 Richard Henderson <rth@cygnus.com>
-
- * Previous contents of gcc/f/runtime moved into toplevel
- "libf2c" directory.
-
-Sun Feb 1 01:42:47 1998 Mumit Khan <khan@xraylith.wisc.edu>
-
- * libU77/configure.in (getlogin,getgid,getuid, kill,link,ttyname):
- Check.
- * libU77/config.h.in (HAVE_GETLOGIN, HAVE_GETGID, HAVE_GETUID,
- HAVE_KILL, HAVE_LINK, HAVE_TTYNAME): New defs.
- * libU77/getlog_.c: Conditionalize for target platform. Set errno
- to ENOSYS if target libc doesn't have the function.
- * libU77/getgid_.c: Likewise.
- * libU77/getuid_.c: Likewise.
- * libU77/kill_.c: Likewise.
- * libU77/link_.c: Likewise.
- * libU77/ttynam_.c: Likewise.
-
-Sun Jan 18 20:01:37 1998 Toon Moene <toon@moene.indiv.nluug.nl>
-
- * libI77/backspace.c: (f_back): Use type `uiolen' to determine size
- of record length specifier.
-
-Sat Jan 17 22:40:31 1998 Mumit Khan <khan@xraylith.wisc.edu>
-
- * libU77/configure.in (sys/param.h,sys/times.h): Check.
- (times,alarm): Likewise.
- * libU77/config.h.in (HAVE_SYS_PARAM_H, HAVE_SYS_TIMES_H)
- (HAVE_ALARM, HAVE_TIMES): New defs.
- * libU77/alarm_.c: Conditionalize for target platform. Set errno
- to ENOSYS if target libc doesn't have the function.
- * libU77/dtime_.c: Likewise.
- * libU77/etime_.c: Likewise.
- * libU77/sys_clock_.c: Likewise.
-
- * configure.in (NON_UNIX_STDIO): Define if MINGW32.
- (NON_ANSI_RW_MODE): Do not define for CYGWIN32 or MINGW32.
-
- * libI77/rawio.h: Don't providing conflicting declarations for
- read() and write(). MINGW32 header files use "const" quals.
-
- * libF77/s_paus.c: _WIN32 does not have pause().
-
-Mon Apr 27 22:52:31 1998 Richard Henderson <rth@cygnus.com>
-
- * libU77/ltime_.c: Bounce the ftnint argument through a local time_t.
- * libU77/gmtime_.c: Likewise.
-
-Sun Apr 26 18:07:56 1998 Richard Henderson <rth@cygnus.com>
-
- * configure.in: Adjust include paths in F2C_INTEGER and F2C_LONGINT
- tests to work out of the build directory.
-
-Tue Dec 23 22:56:01 1997 Craig Burley <burley@gnu.org>
-
- * libF77/signal_.c (G77_signal_0): Return type is
- now `void *', to cope with returning previous signal
- handler on 64-bit systems like Alphas.
- * f2cext.c (signal_): Changed accordingly.
-
-Tue Nov 18 09:49:04 1997 Mumit Khan (khan@xraylith.wisc.edu)
-
- * libI77/close.c (f_exit): Reset f__init so that f_clos does not
- (incorrectly) think there is an I/O recursion when program is
- interrupted.
-
-Sat Nov 1 18:03:42 1997 Jeffrey A Law (law@cygnus.com)
-
- * libF77/signal_.c: Undo last change until we can fix it right.
-
-Wed Oct 29 01:01:04 1997 Mumit Khan <khan@brahma.xraylith.wisc.edu>
-
- * configure.in: Set CC to CC_FOR_TARGET when cross-compiling.
-
-Fri Oct 24 11:15:22 1997 Mumit Khan <khan@brahma.xraylith.wisc.edu>
-
- * libI77/close.c (f_exit): Reset f__init so that f_clos does not
- (incorrectly) think there is an I/O recursion when program is
- interrupted.
-
-Wed Oct 15 10:06:29 1997 Richard Henderson <rth@cygnus.com>
-
- * libF77/signal_.c (G77_signal_0): Make return type sig_pf as well.
- * libI77/fio.h: Include <string.h> if STDC_HEADERS.
- * libU77/chmod_.c: Likewise.
-
-Tue Oct 7 18:22:10 1997 Richard Henderson <rth@cygnus.com>
-
- * Makefile.in (CGFLAGS): Don't force -g0.
- * libF77/Makefile.in, libI77/Makefile.in, libU77/Makefile.in: Likewise.
-
-Mon Oct 6 14:16:46 1997 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.in (distclean): Do a better job at cleaning up.
-
-1997-10-03 Dave Love <d.love@dl.ac.uk>
-
- * configure.in: Check for tempnam (best because it obeys TMPDIR).
- * libI77/open.c: Use it.
- * libI77/err.c: New message # 132.
-
-Wed Oct 1 01:46:16 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
-
- * libU77/sys_clock_.c: File renamed from system_clock_.c.
- * libU77/Makefile.in, Makefile.in : Reference sys_clock_.*, not
- system_clock_.*.
- * libU77/dtime_.c (clk_tck): Try also HZ macro.
- * libU77/access.c (G77_access_0): Check malloc return value against 0,
- not NULL.
- * libU77/getlog_.c, libU77/ttynam_.c, libU77/chdir_.c: Ditto.
- * libU77/chmod_.c, libU77/rename_.c: Ditto.
-
-Tue Sep 30 00:41:39 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- Do a better job of printing the offending FORMAT string
- when producing a diagnostic:
- * libI77/err.c (f__fmtlen): New variable to hold operating
- length of format string.
- (f__fatal): Use new variable to limit length of printed string.
- * libI77/fmt.c (f_s): Don't skip spaces after closing paren,
- so nicer message results (and nested case already skips them).
- (pars_f): Record operating length of format string as indicated
- by a successful call to f_s, or ad-hoc-calculate it if failure,
- limiting the length to 80 characters (and stopping at NUL).
- (do_fio): Use new variable to limit length of printed string.
- * libI77/fmt.h (f__fmtlen): Declare new variable.
- * libI77/lread.c (c_le): Set new variable to known length.
-
-Mon Sep 29 16:30:31 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- Update to Netlib version of 1997-09-23:
- * libF77/dtime_.c (dtime_), libF77/etime_.c (dtime_):
- Return `double' instead of `float' (these are not used
- in g77's version of libf2c).
- * libI77/fmt.c, libI77/fmt.h, libI77/rdfmt.c, libI77/wrtfmt.c:
- Support machines with 64-bit pointers and 32-bit ints (e.g.
- Linux on DEC Alpha).
-
-1997-09-19 Dave Love <d.love@dl.ac.uk>
-
- * libU77/dtime_.c (G77_dtime_0): Fix types in HAVE_GETRUSAGE case
- so as not to truncate results to integer values.
- * libU77/Version.c: Bump.
-
-Thu Sep 18 16:58:46 1997 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.in (stamp-lib): Don't use '$?', explicitly
- list the variables containing the object files to include
- in libf2c.a
-
-Tue Sep 9 00:33:24 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * Version 0.5.21 released.
-
-Mon Sep 8 19:39:01 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libI77/close.c (f_exit): Fix thinko, inverted test
- of whether initialization done, so exiting now closes
- open units again.
-
-Fri Sep 5 00:18:17 1997 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.in (clean): Don't remove config.cache.
- (distclean): Do it here instead.
-
-Tue Aug 26 20:14:08 1997 Robert Lipe (robertl@dgii.com)
-
- * hostnm_.c: Include errno.h
-
-Tue Aug 26 01:42:21 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- From Jim Wilson:
- * configure.in: Make sure RANLIB_TEST is set also.
-
- From Robert Lipe <robertl@dgii.com>:
- * libU77/getcwd_.c, libU77/hostnm_.c, libU77/lstat_.c:
- Also #include <errno.h>, to define ENOSYS.
-
-Tue Aug 26 01:25:58 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * Makefile.in (stamp-lib): Put all f2cext.c objects in
- a temp directory named libE77, then `ar' them all at
- once into libf2c.a, to get the job done a bit faster.
- Still remove the objects (and libE77 directory) afterward.
-
-Mon Aug 25 23:26:05 1997 H.J. Lu (hjl@gnu.ai.mit.edu)
-
- * Makefile.in (mostlyclean, clean): Check if Makefile exists
- before using it. Remove stamp-*.
- (stamp-libi77, stamp-libf77, stamp-libu77): New.
- (stamp-lib): Only depend on stamp-libi77 stamp-libf77
- stamp-libu77
-
-Sun Aug 24 05:04:35 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libU77/rand_.c (G77_rand_0), libU77/dtime_.c (G77_dtime_0),
- libU77/etime_.c (G77_etime_0), libU77/secnds_.c (G77_secnds_0),
- libU77/second_.c (G77_second_0): Really return `double', not
- `doublereal', since the result is cast to `float'.
- * f2cext.c: (rand_, dtime_, etime_, secnds_, second_): Ditto.
- (erf_, erfc_, besj0_, besj1_, besjn_, besy0_, besy1_,
- besyn_, dbesj0_, dbesj1_, dbesjn_, dbesy0_, dbesy1_,
- dbesyn_): All of these return `double', not `doublereal',
- as they either have `float' or `double' results.
- * libU77/bes.c (besj0_, besj1_, besjn_, besy0_, besy1_,
- besyn_): Ditto.
- * libU77/dbes.c (dbesj0_, dbesj1_, dbesjn_, dbesy0_, dbesy1_,
- dbesyn_): Ditto.
-
- Update to Netlib version of 1997-08-16:
- * libI77/iio.c: Fix bug in internal writes to an array
- of character strings.
-
- * Makefile.in (UOBJ): Restore fixes made by Dan Pettet I
- lost, which included the addition of mclock_.o already noted
- below, plus adding symlnk_.o.
-
-Thu Aug 21 03:58:34 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * Makefile.in (UOBJ): Add mclock_.o, thanks to Mumit Khan!
-
-1997-08-21 Dave Love <d.love@dl.ac.uk>
-
- * libU77/alarm_.c: Fix return type: `integer'.
-
-Mon Aug 11 20:12:42 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * Makefile.in ($(lib), stamp-lib): Ensure that library
- gets fully updated even if updating was aborted earlier.
-
- * libU77/hostnm_.c (G77_hostnm_0): Return ENOSYS and stuff
- in errno if system has no gethostname() function.
-
- * libU77/lstat_.c (G77_lstat_0): Return ENOSYS and stuff
- in errno if system has no lstat() function.
-
- * libU77/getcwd_.c (G77_getcwd_0): Return ENOSYS and stuff
- in errno if system has no getcwd() or getwd() function.
- Test HAVE_GETCWD properly.
-
- * libU77/symlnk_.c (G77_symlink_0): Return ENOSYS and stuff
- in errno if system has no symlink() function.
-
- * libU77/mclock_.c (G77_mclock_0): Return -1 if system
- has no clock() function.
-
-Mon Aug 11 01:55:36 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * Makefile.in (F2CEXT): Add `alarm' to this list.
-
- * f2cext.c (alarm_): Fix some typos in this function.
- Delete third `status' argument.
-
- * libU77/alarm_.c: Delete third `status' argument,
- as caller gets this from function result; return
- status value as function result for caller.
-
- * configure.in: Rename `ac_cv_struct_FILE' to
- `g77_cv_struct_FILE' according to 1997-06-26 change.
-
-1997-08-06 Dave Love <d.love@dl.ac.uk>
-
- * libU77/vxtidate_.c: Correct day/month argument order.
- * f2cext.c: Likewise.
-
-1997-07-07 Dave Love <d.love@dl.ac.uk>
-
- * f2cext.c: Add alarm_.
-
- * Makefile.in, libU77/Makefile.in: Add alarm_.
-
- * libU77/alarm_.c: New file.
-
-1997-06-26 Dave Love <d.love@dl.ac.uk>
-
- * configure.in: Generally use prefix `g77_' for cached values
- we've invented, not `ac_'.
-
-Tue Jun 24 18:50:06 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libI77/ilnw.c (s_wsni): Call f_init() here.
- (s_wsli): Ditto.
- (e_wsli): Turn off "doing I/O" flag here.
-
-1997-06-20 Dave Love <d.love@dl.ac.uk>
-
- * runtime/configure.in: Check for cygwin32 after Mumit Khan (but
- differently); if cygwin32 define NON_UNIX_STDIO and don't define
- NON_ANSI_RW_MODES.
-
-Tue Jun 01 06:26:29 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libI77/rsne.c (nl_init): Don't call f_init() here,
- since s_rsne() already does.
- (c_lir): Call f_init() here instead.
- * libI77/rsli.c (e_rsli): Turn off "doing I/O" flag here.
- * libI77/sue.c (e_rsue): Ditto.
-
-Sun Jun 22 23:27:22 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libI77/fio.h (err): Mark I/O as no longer in progress
- before returning a non-zero error indicator (since
- that tells the caller to jump over the remaining I/O
- calls, including the corresponding `e_whatever' call).
- * libI77/err.c (endif): Ditto.
- * libI77/sfe.c (e_wsfe): Ditto.
- * libI77/lread.c (ERR): Ditto.
- * libI77/lread.c (l_read): Ditto by having quad case
- use ERR, not return, to return non-zero error code.
-
-Sat Jun 21 12:31:28 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libI77/open.c (fk_open): Temporarily turn off
- "doing I/O" flag during f_open() call to avoid recursive
- I/O error.
-
-Tue Jun 17 22:40:47 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * err.c, close.c, rewind.c, inquire.c, backspace.c, endfile.c,
- iio.c, open.c, Version.c, sfe.c, wsle.c, rsne.c, sue.c, rsfe.c,
- lread.c, wsfe.c, fio.h, due.c, dfe.c: Change f__init from
- `flag' to `int' and to signal not just whether initialization
- has happened (bit 0), but also whether I/O is in progress
- already (bit 1). Consistently produce a clear diagnostic
- in cases of recursive I/O. Avoid infinite recursion in
- f__fatal, in case sig_die triggers another error. Don't
- output info on internals if not initialized in f__fatal. Don't
- bother closing units in f_exit if initialization hasn't
- happened.
-
-Tue Jun 10 12:57:44 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- Update to Netlib version of 1997-06-09:
- * libI77/err.c, libI77/lread.c, libI77/rdfmt.c,
- libI77/wref.c: Move some #include's around.
-
-Mon Jun 9 18:11:56 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libU77/kill_.c (kill_): KR_headers version needed
- `*' in front of args in decls.
-
-Sun May 25 03:16:53 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- Update to Netlib version of 1997-05-24:
- * libF77/README, libF77/Version.c, libF77/main.c,
- libF77/makefile, libF77/s_paus.c, libF77/signal1.h,
- libF77/signal_.c, libF77/z_div.c, libI77/Notice,
- libI77/README, libI77/Version.c, libI77/dfe.c,
- libI77/err.c, libI77/fmt.c, libI77/makefile,
- libI77/rawio.h: Apply many, but not all, of the changes
- made to libf2c since last update.
- * libF77/Makefile.in (MISC), Makefile.in (MISC): Rename
- exit.o to exit_.o to go along with Netlib.
- * libF77/signal.c: Make the prologue much simpler than
- Netlib has it.
-
-Sun May 18 20:56:02 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libU77/unlink_.c, libU77/stat_.c, libU77/symlnk_.c,
- libU77/chmod_.c: g_char first arg is const.
-
- * libU77/chmod_.c: s_cat expects ftnlen[], not int[] or
- integer[], change types of array and variables
- accordingly.
-
-May 7 1997 Daniel Pettet <dan.pettet@bchydro.bc.ca>
-
- * libU77/dbes_.c: Commented out the code in the
- same way the bes* routines are commented out. This
- was done because corresponding C routines are referenced
- directly in com-rt.def.
-
-Mon May 5 13:56:02 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libU77/stat_.c: Reverse KR/ANSI decls of g_char().
-
-Apr 18 1997 Daniel Pettet <dan.pettet@bchydro.bc.ca>
-
- * libF77/F77_aloc.c, libF77/abort_.c, libF77/derf_.c,
- libF77/derfc_.c, libF77/ef1asc_.c, libF77/ef1cmc_.c,
- libF77/erf_.c, libF77/erfc_.c, libF77/exit.c,
- libF77/getarg_.c, libF77/getenv_.c, libF77/iargc_.c,
- libF77/s_cat.c, libF77/signal_.c, libF77/system_.c,
- libI77/close.c, libI77/ftell_.c, libU77/access_.c,
- libU77/bes.c, libU77/chdir_.c, libU77/chmod_.c, libU77/ctime_.c,
- libU77/date_.c, libU77/dbes.c, libU77/dtime_.c, libU77/etime_.c,
- libU77/fdate_.c, libU77/fgetc_.c, libU77/flush1_.c,
- libU77/fnum_.c, libU77/fputc_.c, libU77/fstat_.c,
- libU77/gerror_.c, libU77/getcwd_.c, libU77/getgid_.c,
- libU77/getlog_.c, libU77/getpid_.c, libU77/getuid_.c,
- libU77/gmtime_.c, libU77/hostnm_.c, libU77/idate_.c,
- libU77/ierrno_.c, libU77/irand_.c, libU77/isatty_.c,
- libU77/itime_.c, libU77/kill_.c, libU77/link_.c,
- libU77/lnblnk_.c, libU77/ltime_.c, libU77/mclock_.c,
- libU77/perror_.c, libU77/rand_.c, libU77/rename_.c,
- libU77/secnds_.c, libU77/second_.c, libU77/sleep_.c,
- libU77/srand_.c, libU77/stat_.c, libU77/symlnk_.c,
- libU77/system_clock_.c, libU77/time_.c, libU77/ttynam_.c,
- libU77/umask_.c, libU77/unlink_.c, libU77/vxtidate_.c,
- libU77/vxttime_.c: Completed renaming routines that are directly
- callable from g77 to internal names of the form
- G77_xxxx_0 that are known as intrinsics by g77.
-
-Apr 8 1997 Daniel Pettet <dan.pettet@bchydro.bc.ca>
-
- * Makefile.in: Add libU77/mclock_.o and libU77/symlnk_.o to UOBJ.
- * libU77/Makefile.in: Add mclock_.c to SRCS.
- Add mclock_.o and symlnk_.o to OBJS.
- Add mclock_.o dependency.
-
-Apr 8 1997 Daniel Pettet <dan.pettet@bchydro.bc.ca>
-
- * libU77/symlnk_.c: Added a couple of (char*) casts to malloc
- to silence the compiler.
-
-1997-03-17 Dave Love <d.love@dl.ac.uk>
-
- * libU77/access_.c, libU77/chdir_.c, libU77/chmod_.c,
- libU77/link_.c, libU77/lstat_.c, libU77/rename_.c, libU77/stat_.c,
- libU77/symlnk_.c, libU77/u77-test.f, libU77/unlink_.c: Strip
- trailing blanks from file names for consistency with other
- implementations (notably Sun's).
-
- * libU77/chmod_.c: Quote the file name given to the shell.
-
-Mon Mar 10 00:19:17 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libI77/uio.c (do_ud) [PAD_UDread]: Add semicolon to err()
- invocation when macro not defined (from Mumit Khan
- <khan@xraylith.wisc.edu>).
-
-Fri Feb 28 13:16:50 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * Version 0.5.20 released.
-
-Wed Feb 26 20:28:53 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * Makefile.in: $(MAKE) invocations now explicitly
- specify `-f Makefile', just in case the `makefile's
- from the netlib distribution would get used instead.
-
-Mon Feb 24 16:43:39 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libU77/Makefile.in (check): Specify driver, and
- don't bother enabling already-enabled intrinsic groups.
- Also, get the $(srcdir) version of u77-test.f.
-
-Sat Feb 22 14:08:42 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libU77/u77-test.f: Explicitly declare intrinsics, get
- rid of useless CHARACTER declarations on intrinsics (maybe
- someday appropriate to implement meaning of that in g77
- and restore them?).
- Add spin loop just to fatten up the timings a bit.
- Clarify ETIME output as having three fields.
- Call TIME with CHARACTER*8, not CHARACTER*6, argument.
- Call new SECOND intrinsic subroutine, after calling
- new DUMDUM subroutine just to ensure the correct value
- doesn't get left around in a register or something.
-
-Thu Feb 20 15:22:42 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libU77/bes.c: Comment out all the code, as g77 avoids actually
- calling it, going directly to the system's library instead.
-
-Mon Feb 17 02:27:41 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libU77/fgetc_.c (fgetc_): Allow return value to be
- CHARACTER*(*), properly handle CHARACTER*0 and blank-pad
- CHARACTER*n where n>1.
-
-Tue Feb 11 14:12:19 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * Makefile.in: Clarify role of $(srcdir) here. Fix
- various targets accordingly. Don't rely at all on
- gcc/f/include/ being a link to gcc/include/ -- just
- use it directly.
- (${srcdir}/configure, ${srcdir}/libU77/configure):
- Remove the config.cache files in build directory before
- cd'ing to source directory as well.
-
- * libF77/Makefile.in, libI77/Makefile.in (ALL_CFLAGS):
- Include `-I.' to pick up build directory.
- Use gcc/include/ directly.
- * libU77/Makefile.in (ALL_CFLAGS): Include `-I$(srcdir)'
- to pick up source directory.
- (OBJS): Fix typo in `chmod_.o' (was `chmod.o').
-
-Mon Feb 10 12:54:47 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * Makefile.in (UOBJ), libU77/Makefile.in (OBJS): Add
- libU77/chmod_.o to list of objects.
- * libU77/chmod_.c: Fix up headers.
- Fix implementation to not prematurely truncate command
- string and make room for trailing null.
-
- * libU77/ctime_.c: Incoming xstime argument is now longint.
- * libU77/mclock_.c: Now returns longint.
- * libU77/time_.c: Now returns longint.
-
-1997-02-10 Dave Love <d.love@dl.ac.uk>
-
- * etime_.c, dtime_.c: Typo rounded times to seconds.
-
- * date_.c: Add missing return.
-
- * hostnm_.c: #include unistd.h.
-
-Sat Feb 8 03:30:19 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- INTEGER*8 support built in to f2c.h and libf2c (since
- gcc will be used to compile relevant code anyway):
- * Makefile.in, libF77/Makefile.in: Add pow_qq.o,
- qbitbits.o, and qbitshft.o to $POW and $F90BIT macros,
- as appropriate.
- * f2c.h.in: Define appropriate types and macros.
- Place #error directive correctly.
- * configure.in: Determine appropriate types for long
- integer (F2C_LONGINT).
- Meanwhile, quote strings in #error, for consistency.
- Fix restoring of ac_cpp macro.
- * configure: Regenerated using autoconf-2.12.
-
- * libF77/Version.c, libI77/Version.c, libU77/Version.c:
- Update version numbers.
- Change names and code for g77-specific version-printing
- routines (shorter names should be safer to link on
- weird, 8-char systems).
-
- * libF77/c_cos.c, libF77/c_div.c, libF77/c_exp.c,
- libF77/c_log.c, libF77/c_sin.c, libF77/c_sqrt.c,
- libF77/d_cnjg.c, libF77/pow_zi.c, libF77/r_cnjg.c,
- libF77/z_cos.c, libF77/z_div.c, libF77/z_exp.c,
- libF77/z_log.c, libF77/z_sin.c, libF77/z_sqrt.c:
- Changed to work properly even when result is aliased
- with any inputs.
-
- * libF77/makefile, libI77/makefile: Leave these in
- the g77 distribution, so it is easier to track changes
- to official libf2c.
-
- * libF77/signal_.c: Eliminate redundant `return 0;'.
-
- * libI77/fio.h (err, errfl): Fix these so they work
- (and must be expressed) as statements.
- Fix up many users of err() to include trailing semicolon.
-
- * Incorporate changes by Bell Labs to libf2c through 1997-02-07.
-
-1997-02-06 Dave Love <d.love@dl.ac.uk>
-
- * libU77/etime_.c, libU77/dtime_.c: Fix getrusage stuff.
-
- * libU77/config.h.in: Regenerate for HAVE_GETRUSAGE.
-
- * libU77/Makefile.in, libI77/Makefile.in, libF77/Makefile.in:
- Redo *clean targets; distclean and maintainer-clean remove the stage?
- and include links. This probably want looking at further.
-
-Wed Feb 5 00:21:23 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- Add libU77 library from Dave Love <d.love@dl.ac.uk>:
- * Makefile.in: Add libU77 directory, rules, etc.
- * configure.in: New libU77 directory, Makefile, etc.
-
- * Makefile.in, libF77/Makefile.in, libI77/Makefile.in,
- libU77/Makefile.in: Reorganize these so $(AR) commands
- handled by the top-level Makefile instead of the
- subordinates. This permits it to do $(AR) only when
- one or more object files actually change, instead of
- having to force-update it as was necessary before.
- And that had the disadvantage of requiring, e.g., user
- root to have access to $(AR) to the library simply to
- install g77, which might be problematic on an NFS setup.
- (mostlyclean, clean, distclean, maintainer-clean):
- Properly handle these rules.
-
- * Makefile.in: Don't invoke config.status here -- let
- compiler-level stuff handle all that.
-
- * libI77/err.c [MISSING_FILE_ELEMS]: Declare malloc in this case
- too, so it doesn't end up as an integer.
-
-Sat Feb 1 02:43:48 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libF77/Makefile.in: More fixup for $(F90BIT) -- wasn't
- in list for ar command, and it wasn't correctly listed
- in the list of things depending on f2c.h.
-
- * f2c.h.in: Fix up #error directive.
-
-1997-01-31 Dave Love <d.love@dl.ac.uk>
-
- * libF77/Makefile.in ($(lib)): Add $(F90BIT); shouldn't exclude
- stuff f2c needs so we can share the library.
-
-Sat Jan 18 19:39:03 1997 Craig Burley <burley@gnu.ai.mit.edu>
-
- * configure.in: No longer define ALWAYS_FLUSH, the
- resulting performance is too low.
-
-Wed Dec 18 12:06:02 1996 Craig Burley <burley@gnu.ai.mit.edu>
-
- Patch from Mumit Khan <khan@xraylith.wisc.edu>:
- * libF77/s_paus.c: Add __CYGWIN32__ to list of macros
- controlling how to pause.
-
-Sun Dec 1 21:25:27 1996 Craig Burley <burley@gnu.ai.mit.edu>
-
- * configure: Regenerated using autoconf-2.12.
-
-Mon Nov 25 21:16:15 1996 Craig Burley <burley@gnu.ai.mit.edu>
-
- * configure: Regenerated using autoconf-2.11.
-
-1996-11-19 Dave Love <d.love@dl.ac.uk>
-
- * libI77/backspace.c: Include sys/types.h for size_t.
-
-Wed Nov 6 14:17:27 1996 Craig Burley <burley@gnu.ai.mit.edu>
-
- * f2c.h.in: Properly comment out the unsupported stuff so
- we don't get build-time errors.
-
- * libF77/Version.c, libI77/Version.c: Restore macro definition
- of version information.
-
- * libI77/Makefile.in (OBJ) [foo]: Add ftell_.o to list of objects.
-
- * libI77/uio.c (do_ud): Fix up casts in PAD_UDread case just
- like they were fixed in the other case.
-
-Thu Oct 31 22:27:45 1996 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libI77/ftell_.c (fseek_): Map incoming whence argument to
- system's actual SEEK_CUR, SEEK_SET, or SEEK_END macro for
- fseek(), and crash (gracefully) if the argument is invalid.
-
-1996-10-19 Dave Love <d.love@dl.ac.uk>
-
- * configure.in: Add check that we have the tools to cross-compile
- if appropriate.
- (NO_EOF_CHAR_CHECK,Skip_f2c_Undefs): Define.
-
- * libF77/Makefile.in (F90BIT): New routines from Netlib.
-
- * f2c.h.in:
- Use more sanitary #error (indented for K&R compliance if necessary) if
- f2c_i2 defined.
- Sync with Netlib: Add `uninteger'. (Commented out) integer*8 stuff.
- bit_{test,clear,set} macros.
-
-1996-10-19 Dave Love <d.love@dl.ac.uk>
-
- Update to Netlib version of 1996-09-26.
-
- * libI77/Version.c: Use <stdio.h>, not "stdio.h".
- * libF77/Version.c: Likewise.
-
-Wed Aug 28 13:25:29 1996 Dave Love <d.love@dl.ac.uk>
-
- * libI77/rsne.c (x_rsne): Use size_t instead of int.
-
- * libI77/endfile.c (copy): Use size_t in place of int.
-
-Wed Aug 28 13:22:20 1996 Dave Love <d.love@dl.ac.uk>
-
- * libI77/backspace.c (f_back): Cast fread arg to size_t.
-
-Tue Aug 27 19:11:30 1996 Dave Love <d.love@dl.ac.uk>
-
- * libI77/Version.c: Supply */ to avoid apparent nested comment.
-
-Tue Aug 20 09:21:43 1996 Dave Love <d.love@dl.ac.uk>
-
- * libF77/Makefile.in (ALL_CFLAGS): Fix missing ../ for include.
- * libI77/Makefile.in (ALL_CFLAGS): Likewise.
-
-Sat Aug 17 13:00:47 1996 Dave Love <d.love@dl.ac.uk>
-
- * libF77/qbitshft.c, libF77/qbitbits.c, libF77/lbitshft.c,
- libF77/lbitbits.c: New file from Netlib. qbit... not currently
- compiled.
-
-Sun Jul 7 18:06:33 1996 Dave Love <d.love@dl.ac.uk>
-
- * libF77/z_sqrt.c, libF77/z_sin.c, libF77/z_exp.c, libF77/z_log.c,
- libF77/system_.c, libF77/z_cos.c, libF77/signal_.c,
- libF77/s_stop.c, libF77/sig_die.c, libF77/s_paus.c,
- libF77/s_rnge.c, libF77/s_cat.c, libF77/r_tan.c, libF77/r_tanh.c,
- libF77/r_sinh.c, libF77/r_sqrt.c, libF77/r_sin.c, libF77/r_mod.c,
- libF77/r_nint.c, libF77/r_lg10.c, libF77/r_log.c, libF77/r_exp.c,
- libF77/r_int.c, libF77/r_cosh.c, libF77/r_atn2.c, libF77/r_cos.c,
- libF77/r_asin.c, libF77/r_atan.c, libF77/r_acos.c,
- libF77/pow_dd.c, libF77/pow_zz.c, libF77/main.c, libF77/i_dnnt.c,
- libF77/i_nint.c, libF77/h_dnnt.c, libF77/h_nint.c, libF77/exit.c,
- libF77/d_tan.c, libF77/d_tanh.c, libF77/d_sqrt.c, libF77/d_sin.c,
- libF77/d_sinh.c, libF77/d_mod.c, libF77/d_nint.c, libF77/d_log.c,
- libF77/d_int.c, libF77/d_lg10.c, libF77/d_cosh.c, libF77/d_exp.c,
- libF77/d_atn2.c, libF77/d_cos.c, libF77/d_atan.c, libF77/d_acos.c,
- libF77/d_asin.c, libF77/c_sqrt.c, libF77/cabs.c, libF77/c_sin.c,
- libF77/c_exp.c, libF77/c_log.c, libF77/c_cos.c, libF77/F77_aloc.c,
- libF77/abort_.c, libI77/xwsne.c, libI77/wref.c, libI77/util.c,
- libI77/uio.c, libI77/rsne.c, libI77/rdfmt.c, libI77/rawio.h,
- libI77/open.c, libI77/lread.c, libI77/inquire.c, libI77/fio.h,
- libI77/err.c, libI77/endfile.c, libI77/close.c:
- Use #include <...>, not #include "..." for mkdeps
-
-Sat Jul 6 21:39:21 1996 Dave Love <d.love@dl.ac.uk>
-
- * libI77/ftell_.c: Added from Netlib distribution.
-
-Sat Mar 30 20:57:24 1996 Dave Love <d.love@dl.ac.uk>
-
- * configure.in: Eliminate explicit use of
- {RANLIB,AR}_FOR_TARGET.
- * Makefile.in: Likewise.
- * libF77/Makefile.in: Likewise.
- * libI77/Makefile.in: Likewise.
- * configure: Regenerated.
-
-Sat Mar 30 21:02:03 1996 Dave Love <d.love@dl.ac.uk>
-
- * Makefile.in: Eliminate explicit use of
- {RANLIB,AR}_FOR_TARGET.
-
-Tue Mar 26 23:39:59 1996 Dave Love <d.love@dl.ac.uk>
-
- * Makefile.in: Remove hardwired RANLIB and RANLIB_TEST (unnoted
- change).
-
-Mon Mar 25 21:04:56 1996 Craig Burley <burley@gnu.ai.mit.edu>
-
- * Incorporate changes by Bell Labs to libf2c through 1996-03-23,
- including changes to dmg and netlib email addresses.
-
-Tue Mar 19 13:10:02 1996 Craig Burley <burley@gnu.ai.mit.edu>
-
- * Incorporate changes by AT&T/Bellcore to libf2c through 1996-03-19.
-
- * Makefile.in (rebuilt): New target.
-
- * libF77/Makefile.in, libI77/Makefile.in: Use $AR_FOR_TARGET, not
- $AR.
-
-Tue Mar 19 12:53:19 1996 Dave Love <d.love@dl.ac.uk>
-
- * configure.in (ac_cpp): #include <stdio.h> instead
- of <features.h>.
-
-Tue Mar 19 12:52:09 1996 Mumit Khan <khan@xraylith.wisc.edu>
-
- * configure.in (ac_cpp): For f2c integer type,
- add -I$srcdir/../.. to make it work on mips-ultrix4.2.
-
-Sat Mar 9 17:37:15 1996 Craig Burley <burley@gnu.ai.mit.edu>
-
- * libI77/Makefile.in (.c.o): Add -DAllow_TYQUAD, to enable
- I/O support for INTEGER*8.
- * f2c.h.in: Turn on longint type.
-
-Fri Dec 29 18:22:01 1995 Craig Burley <burley@gnu.ai.mit.edu>
-
- * Makefile.in: Reorganize the *clean rules to more closely
- parallel gcc's.
-
- * libF77/Makefile.in, libI77/Makefile.in: Ignore error from $(AR)
- command, in case just doing an install and installer has no write
- access to library (this is a kludge fix -- perhaps install targets
- should never try updating anything?).
-
-Sat Nov 18 19:37:22 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * Version 0.5.17 released.
-
-Thu Nov 16 07:20:35 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * Incorporate changes by AT&T/Bellcore to libf2c through 1995-11-15.
-
-Fri Sep 22 02:19:59 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * libI77/backspace.c, libI77/close.c, libI77/endfile.c,
- libI77/fio.h, libI77/inquire.c, libI77/rawio.h,
- libF77/s_paus.c: Not an MSDOS system if GO32
- is defined, in the sense that the run-time environment
- is thus more UNIX-like.
-
-Wed Sep 20 02:24:51 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * libF77/Makefile.in, libI77/Makefile.in: Comment out `ld -r -x'
- and `mv' line pairs, since `-x' isn't supported on systems
- such as Solaris, and these lines don't seem to do anything
- useful after all.
-
-Wed Aug 30 15:58:35 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * Version 0.5.16 released.
-
- * Incorporate changes by AT&T/Bellcore to libf2c through 950829.
-
-Mon Aug 28 12:50:34 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * libF77/Makefile.in, libI77/Makefile.in ($(lib)): Force ar'ing
- and ranlib'ing of libf2c.a, else after rm'ing libf2c.a and
- doing a make, only libI77 or libF77 would be added to
- the newly created archive.
- Also, instead of `$?' list all targets explicitly so all
- objects are updated in libf2c.a even if only one actually
- needs recompiling, for similar reason -- we can't easily tell
- if a given object is really up-to-date in libf2c.a, or even
- present there.
-
-Sun Aug 27 14:54:24 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * libF77/Makefile.in, libI77/Makefile.in: Fix spacing so
- initial tabs are present in all appropriate places.
- Move identical $(AR) commands in if then/else clauses
- to single command preceding if.
- (.c.o, Version[FI].o): Use $@ instead of $* because AIX (RS/6000)
- says $@ means source, not object, basename, and $@ seems to work
- everywhere.
-
-Wed Aug 23 15:44:25 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * libF77/system_.c (system_): Declare as returning `ftnint',
- consistent with signal_, instead of defaulting to `int'.
- Hope dmg@research.att.com agrees, else probably will
- change to whatever he determines is correct (and change
- g77 accordingly).
-
-Thu Aug 17 08:46:17 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * libI77/rsne.c (s_rsne): Call f_init if not already done.
-
-Thu Aug 17 04:35:28 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * Incorporate changes by Bellcore to libf2c through 950817.
- And this text is for EMACS: (foo at bar).
-
-Wed Aug 16 17:33:06 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * libF77/Makefile.in, libI77/Makefile.in (CFLAGS): Put -g1
- after configured CFLAGS but before GCC_CFLAGS, so by default
- the libraries are built with minimal debugging information.
-
-Fri Jul 28 10:30:15 1995 Dave Love <d.love@dl.ac.uk>
-
- * libI77/open.c (f_open): Call f_init if not already done.
-
-Sat Jul 1 19:31:56 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * libF77/system_.c (system_): Make buff one byte bigger so
- following byte doesn't get overwritten by call with large
- string.
-
-Tue Jun 27 23:28:16 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * Incorporate changes by Bellcore to libf2c through 950613.
-
- * libF77/Version.c (__G77_LIBF77_VERSION__): Add this string
- to track g77 mods to libf2c.
-
- * libI77/Version.c (__G77_LIBI77_VERSION__): Add this string
- to track g77 mods to libf2c.
-
- * libI77/rawio.h: #include <rawio.h> only conditionally,
- using macro intended for that purpose.
-
-Fri May 19 11:20:00 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * configure.in: Incorporate change made by d.love,
-
- * configure: Regenerated.
-
-Wed Apr 26 21:08:57 BST 1995 Dave Love <d.love@dl.ac.uk>
-
- * configure.in: Fix quoting problem in atexit check.
-
- * configure: Regenerated (with current autoconf).
-
-Wed Mar 15 12:49:58 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * Incorporate changes by Bellcore to libf2c through 950315.
-
-Sun Mar 5 18:54:29 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * README: Tell people not to read lib[fi]77/README.
-
-Wed Feb 15 14:30:58 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * configure.in: Update copyright notice at top of file.
-
- * f2c.h.in (f2c_i2): Make sure defining this crashes compilations.
-
- * libI77/Makefile.in (F2C_H): Fix typo in definition of this
- symbol (was FF2C_H=...).
-
-Sun Feb 12 13:39:36 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * README: Remove some obsolete items.
- Add date.
-
- * TODO: Add date.
-
-Sat Feb 11 22:07:54 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * Makefile.in (libf77, libi77): Add rules to .PHONY list.
-
- * f2c.h.in (flag): Make same type as friends.
-
- * libF77/Makefile.in (libf77): Rename to $(lib), remove from
- .PHONY list. Fix some typos.
-
- * libI77/Makefile.in (libi77): Rename to $(lib), remove from
- .PHONY list. Fix some typos.
-
-Thu Feb 2 12:22:41 1995 Craig Burley (burley@gnu.ai.mit.edu)
-
- * Makefile.in (libF77/Makefile): Fix typos in this rule's name
- and dependencies.
-
- * libF77/Makefile.in (libf77): Add rule to .PHONY list.
-
- * libI77/Makefile.in (libi77): Add rule to .PHONY list.
-
-Local Variables:
-add-log-time-format: current-time-string
-End:
diff --git a/libf2c/Makefile.in b/libf2c/Makefile.in
deleted file mode 100644
index 120bd7c4017..00000000000
--- a/libf2c/Makefile.in
+++ /dev/null
@@ -1,276 +0,0 @@
-# Makefile for GNU F77 compiler runtime.
-# Copyright (C) 1995-1998, 2001, 2002, 2003 Free Software Foundation, Inc.
-# Contributed by Dave Love (d.love@dl.ac.uk).
-#
-#This file is part of GNU Fortran.
-#
-#GNU Fortran 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 Fortran 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 Fortran; see the file COPYING. If not, write to
-#the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-#02111-1307, USA.
-
-SHELL = @SHELL@
-PWD_COMMAND = $${PWDCMD-pwd}
-MAKEOVERRIDES=
-.NOEXPORTS:
-
-#### Start of system configuration section. ####
-
-srcdir = @glibcpp_srcdir@
-VPATH = @glibcpp_srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-target_alias = @target_alias@
-gcc_version = @gcc_version@
-gcc_version_trigger = @gcc_version_trigger@
-top_srcdir = @top_srcdir@
-toplevel_srcdir = @toplevel_srcdir@
-toolexecdir = @glibcpp_toolexecdir@
-glibcpp_toolexecdir = @glibcpp_toolexecdir@
-glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@
-
-top_builddir = .
-
-libdir = $(exec_prefix)/lib
-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)
-#
-# Versions should start at 0:0:0 - See libtool manual.
-VERSION_MAJOR=0
-VERSION_MINOR=0
-VERSION_SUB=0
-
-# Multilib support variables.
-MULTISRCTOP =
-MULTIBUILDTOP =
-MULTIDIRS =
-MULTISUBDIR =
-MULTIDO = true
-MULTICLEAN = true
-
-# Not configured per top-level version, since that doesn't get passed
-# Versions should start at 0:0:0 - See libtool manual.
-# down at configure time, but overrridden by the top-level install
-# target.
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-LIBTOOL = @LIBTOOL@
-CC = @CC@
-WARN_CFLAGS = -W -Wall
-CFLAGS = @CFLAGS@
-AR = @AR@
-RANLIB = @RANLIB@
-
-# List of variables to pass to sub-makes.
-# Quote this way so that it can be used to set shell variables too.
-FLAGS_TO_PASS= \
- CC='$(CC)' \
- LD='$(LD)' \
- LIBTOOL='$(LIBTOOL)' \
- WARN_CFLAGS='$(WARN_CFLAGS)' \
- CFLAGS='$(CFLAGS)' \
- CPPFLAGS='$(CPPFLAGS)' \
- DESTDIR='$(DESTDIR)' \
- AR='$(AR)' \
- RANLIB='$(RANLIB)' \
- prefix='$(prefix)' \
- exec_prefix='$(exec_prefix)' \
- libdir='$(libdir)' \
- libsubdir='$(libsubdir)' \
- tooldir='$(tooldir)'
-
-LIBG2C_BASE = libg2c
-LIBG2C = $(LIBG2C_BASE).la
-
-SUBDIRS = libI77 libF77 libU77
-
-F2CEXT = abort derf derfc ef1asc ef1cmc erf erfc exit getarg getenv iargc \
- signal system flush ftell fseek access besj0 besj1 besjn besy0 besy1 \
- besyn chdir chmod ctime dbesj0 dbesj1 dbesjn dbesy0 dbesy1 dbesyn \
- dtime etime fdate fgetc fget flush1 fnum fputc fput fstat gerror \
- getcwd getgid getlog getpid getuid gmtime hostnm idate ierrno irand \
- isatty itime kill link lnblnk lstat ltime mclock perror rand rename \
- secnds second sleep srand stat symlnk time ttynam umask unlink \
- vxttim alarm \
- date_y2kbuggy date_y2kbug vxtidt_y2kbuggy vxtidt_y2kbug
-
-.SUFFIXES:
-
-# The logic here is partly dictated by the desire to keep the lib?77
-# subdirs for compatibility with the Netlib version and because libU77
-# has a different copyright; then the libe77 bit (EXTERNALly-callable
-# versions) is funny. Given that, as well as keeping things as simple
-# as possible we want (at least) the following:
-# * Allow make to be run at the top level (all-target-libf2c), at this
-# level, or the subdirs of this level. In the latter case we only
-# compile, rather than updating libg2c.a;
-# * A robust set of dependencies, so that we rebuild (as little as
-# possible) if a configuration file, g2c.h or any lib?77/*.c file
-# changes;
-# * Avoid unnecessary running of ar and ranlib;
-# * Expose parallelism where reasonable, but not as a priority.
-
-# The intended top-level target here does a non-multilib build (via
-# the dependency) and then (perhaps) builds multilibs.
-
-all: all-unilib
- : $(MAKE) ; exec $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO="all-unilib"
-
-# `all-unilib' is the overall target in the absence of multilibs,
-# meant to be invoked via multi-do for multilibs.
-
-# Its dependencies can be satisfied in parallel. The [fiu]77 targets
-# update stamp files (object file lists, actually, see the subdir
-# makefiles) on which the $(LIBG2C) depends. The stamp files
-# s-lib[fiu]77 are intentionally not targets, since we're only meant
-# to come in at the level of this target. The [fiu]77 targets always
-# invoke sub makes to check dependencies in the subdirs, else we'd
-# have to maintain them at this level; we live with the overhead of
-# some recursive makes which may do nothing.
-
-all-unilib: i77 f77 u77 s-libe77
- $(MAKE) $(FLAGS_TO_PASS) $(LIBG2C)
-
-i77 f77 u77: g2c.h
-
-# This target should normally only get invoked via `all-unilib' --
-# after all's well in the subdirs -- actually to assemble the library.
-# The stamp files contain the object lists of each component of the
-# library. The point of breaking them up is to avoid command-line
-# length limitations.
-
-$(LIBG2C): s-libi77 s-libf77 s-libu77 s-libe77
- $(LIBTOOL) --mode=link $(CC) -o $@ \
- -version-info $(VERSION_MAJOR):$(VERSION_MINOR):$(VERSION_SUB) \
- -rpath $(glibcpp_toolexeclibdir) \
- -objectlist s-libe77 \
- -objectlist s-libf77 \
- -objectlist s-libi77 \
- -objectlist s-libu77 \
- -lm
-
-i77:
- cd libI77; $(MAKE) $(FLAGS_TO_PASS) all
-
-f77:
- cd libF77; $(MAKE) $(FLAGS_TO_PASS) all
-
-u77:
- cd libU77; $(MAKE) $(FLAGS_TO_PASS) all
-
-s-libe77: f2cext.c
- if [ -d libE77 ]; then rm -f libE77/*.o libE77/*.lo; else mkdir libE77; fi
- -rm -f $@.T $@
- for name in $(F2CEXT); \
- do \
- echo $${name}; \
- $(LIBTOOL) --mode=compile $(CC) -c -I. -I$(srcdir) -I../../include \
- $(CPPFLAGS) $(WARN_CFLAGS) $(CFLAGS) -DL$${name} $(srcdir)/f2cext.c \
- -o libE77/L$${name}.lo ; \
- if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
- echo libE77/L$${name}.lo >> $@.T; \
- done
- mv $@.T $@
-
-f2cext.c: g2c.h
-
-${srcdir}/configure: configure.in
- rm -f config.cache
- cd $(srcdir) && autoconf
-
-# Dependence on Makefile serializes for parallel make.
-g2c.h: g2c.hin config.status Makefile
-# Might try to avoid rebuilding everything if Makefile or configure
-# changes and g2c.h doesn't; see also the Makefile rule. Should
-# depend on another stamp file rather than using the commented-out
-# lines below, since g2c.h isn't necessarily brought up to date.
-# mv g2c.h g2c.x
- $(SHELL) config.status
-# $(SHELL) $(srcdir)/../move-if-change g2c.h g2c.x && mv g2c.x g2c.h
-
-Makefile: Makefile.in config.status
-# Autoconf doc uses `./config.status'. Is there a good reason to use $(SHELL)?
- $(SHELL) config.status
-
-config.status: configure $(gcc_version_trigger)
-# Make sure we don't pick up a site config file and that configure
-# gets run with correct values of variables such as CC.
- CONFIG_SITE=no-such-file $(FLAGS_TO_PASS) \
- $(SHELL) config.status --recheck
-
-info install-info clean-info dvi TAGS dist installcheck installdirs:
-
-check:
- cd libU77; $(MAKE) G77DIR=../../../gcc/ check
-
-install: all
- $(SHELL) $(toplevel_srcdir)/mkinstalldirs $(DESTDIR)$(glibcpp_toolexeclibdir)
- $(LIBTOOL) --mode=install $(INSTALL) $(LIBG2C) $(DESTDIR)$(glibcpp_toolexeclibdir)
- $(INSTALL_DATA) libfrtbegin.a $(DESTDIR)$(glibcpp_toolexeclibdir)
- $(RANLIB) $(DESTDIR)$(glibcpp_toolexeclibdir)/libfrtbegin.a
- $(INSTALL_DATA) g2c.h $(DESTDIR)$(libsubdir)/include/g2c.h
- $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO="$@"
- @-$(LIBTOOL) --mode=finish $(DESTDIR)$(glibcpp_toolexeclibdir)
-
-install-strip:
- $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
-
-uninstall:
- rm -f $(DESTDIR)$(libsubdir)/include/g2c.h
- rm -f $(DESTDIR)$(glibcpp_toolexeclibdir)/libfrtbegin.a
- $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(glibcpp_toolexeclibdir)$(LIBG2C_BASE).la
- $(MULTIDO) $(FLAGS_TO_PASS) multi-do DO="$@"
-
-mostlyclean:
- rm -f $(LIBG2C) objlist
- $(MAKE) DO=$@ DODIRS="$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do; \
- $(MULTICLEAN) multi-clean DO=$@
- rm -fr libE77 s-libe77
-
-clean: mostlyclean
- rm -f config.log
- $(MAKE) DO=$@ DODIRS="$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do; \
- $(MULTICLEAN) multi-clean DO=$@
- rm -rf .libs
-
-distclean: clean
- rm -f g2c.h s-libe77
- $(MAKE) DO=$@ DODIRS="$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do; \
- $(MULTICLEAN) multi-clean DO=distclean
- rm -f config.cache config.status Makefile
-
-maintainer-clean:
-
-rebuilt: configure
-
-.PHONY: rebuilt mostlyclean clean distclean maintainer-clean all \
- i77 f77 u77 check uninstall install-strip dist \
- installcheck installdirs all-unilib
-
-subdir_do:
- @rootpre=`${PWD_COMMAND}`/; export rootpre; \
- srcrootpre=`cd $(srcdir); ${PWD_COMMAND}`/; export srcrootpre; \
- for i in .. $(DODIRS); do \
- if [ x$$i != x.. ]; then \
- if [ -f ./$$i/Makefile ]; then \
- if (cd ./$$i; $(MAKE) $(FLAGS_TO_PASS) $(DO)); then \
- true; \
- else \
- exit 1; \
- fi; \
- else true; fi; \
- else true; fi; \
- done
-
-# multidoings may be added here by configure.
diff --git a/libf2c/README b/libf2c/README
deleted file mode 100644
index 008654b3c77..00000000000
--- a/libf2c/README
+++ /dev/null
@@ -1,109 +0,0 @@
-1998-08-11
-
-This directory contains the libf2c library packaged for use with g77
-to configure and build automatically (in principle!) as part of the
-top-level configure and make steps. g77 names this library `libg2c'
-to avoid conflicts with existing copies of `libf2c' on a system.
-
-Some small changes have been made vis-a-vis the netlib distribution of
-libf2c, which comes from <ftp:bell-labs.com/netlib/f2c/> and is maintained
-(excellently) by David M. Gay <dmg@bell-labs.com>. See the Notice files
-for copyright information. We usually try to get g77-specific changes
-rolled back into the libf2c distribution.
-
-Files that come directly from netlib are either maintained in the
-libf2c directory under their original names or, if they are not pertinent
-for g77's version of libf2c, under their original names with `.netlib'
-appended. For example, permissions.netlib is a copy of f2c's top-level
-`permissions' file in the netlib distribution. In this case, it applies
-only to the relevant portions of the libF77/ and libI77/ directories; it
-does not apply to the libU77/ directory, which is distributed under
-different licensing arrangements. Similarly, the `makefile.netlib' files
-in the libF77/ and libI77/ subdirectories are copies of the respective
-`makefile' files in the netlib distribution, but are not used when
-building g77's version of libf2c.
-
-The README.netlib files in libF77/ and libI77/ thus might be
-interesting, but should not be taken as guidelines for how to
-configure and build libf2c in g77's distribution.
-
-* Read permissions.netlib for licensing conditions that apply to
- distributing programs containing portions of code in the libF77/ and
- libI77/ subdirectories. Also read disclaimer.netlib.
-
-* Read libU77/COPYING.LIB for licensing conditions that apply to
- distributing programs containing portions of code in the libU77/
- subdirectory.
-
-Among the user-visible changes (choices) g77 makes in its version of libf2c:
-
-- f2c.h configured to default to padding unformatted direct reads
- (#define Pad_UDread), because that's the behavior most users
- expect.
-
-- f2c.h configured to default to outputting leading zeros before
- decimal points in formatted and list-directed output, to be compatible
- with many other compilers (#define WANT_LEAD_0). Either way is
- standard-conforming, however, and you should try to avoid writing
- code that assumes one format or another.
-
-- dtime_() and etime_() are from Dave Love's libU77, not from
- netlib's libF77.
-
-- Routines that are intended to be called directly via user code
- (as in `CALL EXIT', but not the support routines for `OPEN')
- have been renamed from `<name>' to `G77_<name>_0'. This, in
- combination with g77 recognizing these names as intrinsics and
- calling them directly by those names, reduces the likelihood of
- interface mismatches occurring due to use of compiler options
- that change code generation, and permits use of these names as
- both intrinsics and user-supplied routines in applications (as
- required by the Fortran standards). f2cext.c contains "jacket"
- routines named `<name>' that call `G77_<name>_0', to support
- code that relies on calling the relevant routines as `EXTERNAL'
- routines.
-
- Note that the `_0' in the name denotes version 0 of the *interface*,
- not the *implementation*, of a routine. The interface of a
- given routine *must not change* -- instead, introduce a new copy
- of the code, with an increment (e.g. `_1') suffix, having the
- new interface. Whether the previous interface is maintained is
- not as important as ensuring the routine implementing the new
- interface is never successfully linked to a call in existing,
- e.g. previously compiled, code that expects the old interface.
-
-- Version.c in the subdirectories contains g77-specific version
- information and a routine (per subdirectory) to print both the
- netlib and g77 version information when called. The `g77 -v'
- command is designed to trigger this, by compiling, linking, and
- running a small program that calls the routines in sequence.
-
-- libF77/main.c no longer contains the actual code to copy the
- argc and argv values into globals or to set up the signal-handling
- environment. These have been removed to libF77/setarg.c and
- libF77/setsig.c, respectively. libF77/main.c contains procedure
- calls to the new code in place of the code itself. This should
- simplify linking executables with a main() function other than
- that in libF77/main.c (such as one written by the user in C or
- C++). See the g77 documentation for more information.
-
-- Complex-arithmetic support routines in libF77/ take a different approach
- to avoiding problems resulting from aliased input and output arguments,
- which should avoid particularly unusual alias problems that netlib
- libf2c might suffer from.
-
-- libF77/signal_.c supports systems with 64-bit pointers and 32-bit
- integers.
-
-- I/O routines in libI77/ have code to detect attempts to do recursive
- I/O more "directly", mainly to lead to a clearer diagnostic than
- typically occurs under such conditions.
-
-- Formatted-I/O routines in libI77/ have code to pretty-print a FORMAT
- string when printing a fatal diagnostic involving formatted I/O.
-
-- libI77/open.c supports a more robust, perhaps more secure, method
- of naming temporary files on some systems.
-
-- Some g77-specific handling of building under Microsoft operating
- systems exists, mainly in libI77/.
diff --git a/libf2c/TODO b/libf2c/TODO
deleted file mode 100644
index 84cbb0c733d..00000000000
--- a/libf2c/TODO
+++ /dev/null
@@ -1,14 +0,0 @@
-980709
-
-TODO list for the g77 library
-
-* Investigate building shared libraries on systems we know about
- (probably using libtool).
-
-* Better test cases.
-
-* Allow the library to be stripped to save space. (The install-strip
- makefile target now allows this, should it be easily invocable.)
-
-* An interface to IEEE maths functions from libc where this makes
- sense.
diff --git a/libf2c/aclocal.m4 b/libf2c/aclocal.m4
deleted file mode 100644
index b84eda0d2cf..00000000000
--- a/libf2c/aclocal.m4
+++ /dev/null
@@ -1,236 +0,0 @@
-dnl Copyright (C) 1994, 1995-8, 1999, 2001, 2002 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl This program is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-dnl PARTICULAR PURPOSE.
-
-dnl
-dnl Initialize configure bits.
-dnl
-dnl GLIBCPP_TOPREL_CONFIGURE
-AC_DEFUN(GLIBCPP_TOPREL_CONFIGURE, [
- dnl Default to --enable-multilib
- AC_ARG_ENABLE(multilib,
- [ --enable-multilib build hella library versions (default)],
- [case "${enableval}" in
- yes) multilib=yes ;;
- no) multilib=no ;;
- *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
- esac], [multilib=yes])dnl
-
-# When building with srcdir == objdir, links to the source files will
-# be created in directories within the target_subdir. We have to
-# adjust toplevel_srcdir accordingly, so that configure finds
-# install-sh and other auxiliary files that live in the top-level
-# source directory.
-if test "${srcdir}" = "."; then
- if test -z "${with_target_subdir}"; then
- toprel=".."
- else
- if test "${with_target_subdir}" != "."; then
- toprel="${with_multisrctop}../.."
- else
- toprel="${with_multisrctop}.."
- fi
- fi
-else
- toprel=".."
-fi
-AC_CONFIG_AUX_DIR(${srcdir}/$toprel)
-toplevel_srcdir=\${top_srcdir}/$toprel
-AC_SUBST(toplevel_srcdir)
-])
-
-dnl
-dnl Initialize configure bits.
-dnl
-dnl GLIBCPP_CONFIGURE
-AC_DEFUN(GLIBCPP_CONFIGURE, [
-# Export build and source directories.
-# These need to be absolute paths, yet at the same time need to
-# canonicalize only relative paths, because then amd will not unmount
-# drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd.
-glibcpp_builddir=`${PWDCMD-pwd}`
-case $srcdir in
-[\\/$]* | ?:[\\/]*) glibcpp_srcdir=${srcdir} ;;
-*) glibcpp_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
-esac
-AC_SUBST(glibcpp_builddir)
-AC_SUBST(glibcpp_srcdir)
-
-dnl This is here just to satisfy automake.
-ifelse(not,equal,[AC_CONFIG_AUX_DIR(..)])
-
-# Will set LN_S to either 'ln -s' or 'ln'. With autoconf 2.50+, can also
-# be 'cp -p' if linking isn't available.
-#ac_cv_prog_LN_S='cp -p'
-AC_PROG_LN_S
-
-# We use these options to decide which functions to include.
-AC_ARG_WITH(target-subdir,
-[ --with-target-subdir=SUBDIR
- configuring in a subdirectory])
-AC_ARG_WITH(cross-host,
-[ --with-cross-host=HOST configuring with a cross compiler])
-
- # Never versions of autoconf add an underscore to these functions.
- # Prevent future problems ...
- ifdef([AC_PROG_CC_G],[],[define([AC_PROG_CC_G],defn([_AC_PROG_CC_G]))])
- ifdef([AC_PROG_CC_GNU],[],[define([AC_PROG_CC_GNU],defn([_AC_PROG_CC_GNU]))])
- ifdef([AC_PROG_CXX_G],[],[define([AC_PROG_CXX_G],defn([_AC_PROG_CXX_G]))])
- ifdef([AC_PROG_CXX_GNU],[],[define([AC_PROG_CXX_GNU],defn([_AC_PROG_CXX_GNU]))])
-
-# AC_PROG_CC
-
-# FIXME: We temporarily define our own version of AC_PROG_CC. This is
-# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
-# are probably using a cross compiler, which will not be able to fully
-# link an executable. This should really be fixed in autoconf
-# itself.
-
-AC_DEFUN(LIB_AC_PROG_CC,
-[AC_BEFORE([$0], [AC_PROG_CPP])dnl
-dnl Fool anybody using AC_PROG_CC.
-AC_PROVIDE([AC_PROG_CC])
-AC_CHECK_PROG(CC, gcc, gcc)
-if test -z "$CC"; then
- AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
- test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
-fi
-
-AC_PROG_CC_GNU
-
-if test $ac_cv_prog_gcc = yes; then
- GCC=yes
-dnl Check whether -g works, even if CFLAGS is set, in case the package
-dnl plays around with CFLAGS (such as to build both debugging and
-dnl normal versions of a library), tasteless as that idea is.
- ac_test_CFLAGS="${CFLAGS+set}"
- ac_save_CFLAGS="$CFLAGS"
- CFLAGS=
- AC_PROG_CC_G
- if test "$ac_test_CFLAGS" = set; then
- CFLAGS="$ac_save_CFLAGS"
- elif test $ac_cv_prog_cc_g = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-O2"
- fi
-else
- GCC=
- test "${CFLAGS+set}" = set || CFLAGS="-g"
-fi
-])
-
-LIB_AC_PROG_CC
-
- AC_CHECK_TOOL(AS, as)
- AC_CHECK_TOOL(AR, ar)
- AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
- AC_PROG_INSTALL
-
- # We need AC_EXEEXT to keep automake happy in cygnus mode. However,
- # at least currently, we never actually build a program, so we never
- # need to use $(EXEEXT). Moreover, the test for EXEEXT normally
- # fails, because we are probably configuring with a cross compiler
- # which can't create executables. So we include AC_EXEEXT to keep
- # automake happy, but we don't execute it, since we don't care about
- # the result.
- if false; then
- # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
- # to nothing, so nothing would remain between `then' and `fi' if it
- # were not for the `:' below.
- :
- AC_EXEEXT
- fi
-])
-
-
-dnl
-dnl GLIBCPP_EXPORT_INSTALL_INFO
-dnl calculates gxx_install_dir
-dnl exports glibcpp_toolexecdir
-dnl exports glibcpp_toolexeclibdir
-dnl exports glibcpp_prefixdir
-dnl
-dnl Assumes cross_compiling bits already done, and with_cross_host in
-dnl particular
-dnl
-dnl GLIBCPP_EXPORT_INSTALL_INFO
-AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
-# Assumes glibcpp_builddir, glibcpp_srcdir are alreay set up and
-# exported correctly in GLIBCPP_CONFIGURE.
-glibcpp_toolexecdir=no
-glibcpp_toolexeclibdir=no
-glibcpp_prefixdir=${prefix}
-
-AC_MSG_CHECKING([for interface version number])
-libstdcxx_interface=$INTERFACE
-AC_MSG_RESULT($libstdcxx_interface)
-
-# Process the option "--enable-version-specific-runtime-libs"
-AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
-AC_ARG_ENABLE(version-specific-runtime-libs,
-[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
-[case "$enableval" in
- yes) version_specific_libs=yes ;;
- no) version_specific_libs=no ;;
- *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
- esac],
-version_specific_libs=no)dnl
-# Option set, now we can test it.
-AC_MSG_RESULT($version_specific_libs)
-
-gcc_version_trigger=${toplevel_srcdir}/gcc/version.c
-gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([[^ \"]]*\)[[ \"]].*/\1/'`
-gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
-AC_SUBST(gcc_version)
-AC_SUBST(gcc_version_trigger)
-
-if test $version_specific_libs = yes; then
- # Need the gcc compiler version to know where to install libraries
- # and header files if --enable-version-specific-runtime-libs option
- # is selected. FIXME: "toolexecdir" is a misnomer, there are no
- # executables installed there.
- changequote(,)dnl
- glibcpp_toolexecdir='$(libdir)/gcc/$(target_alias)'
- glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
- changequote([,])dnl
-fi
-
-# Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
-# Install a library built with a cross compiler in tooldir, not libdir.
-if test x"$glibcpp_toolexecdir" = x"no"; then
- if test -n "$with_cross_host" &&
- test x"$with_cross_host" != x"no"; then
- glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
- glibcpp_toolexeclibdir='$(toolexecdir)/lib'
- else
- glibcpp_toolexecdir='$(libdir)/gcc/$(target_alias)'
- glibcpp_toolexeclibdir='$(libdir)'
- fi
- multi_os_directory=`$CC -print-multi-os-directory`
- case $multi_os_directory in
- .) ;; # Avoid trailing /.
- *) glibcpp_toolexeclibdir=$glibcpp_toolexeclibdir/$multi_os_directory ;;
- esac
-fi
-
-AC_SUBST(glibcpp_prefixdir)
-AC_SUBST(glibcpp_toolexecdir)
-AC_SUBST(glibcpp_toolexeclibdir)
-])
-
-sinclude(../libtool.m4)
-dnl The lines below arrange for aclocal not to bring an installed
-dnl libtool.m4 into aclocal.m4, while still arranging for automake to
-dnl add a definition of LIBTOOL to Makefile.in.
-ifelse(,,,[AC_SUBST(LIBTOOL)
-AC_DEFUN([AM_PROG_LIBTOOL])
-AC_DEFUN([AC_LIBTOOL_DLOPEN])
-AC_DEFUN([AC_PROG_LD])
-])
diff --git a/libf2c/changes.netlib b/libf2c/changes.netlib
deleted file mode 100644
index 4ec0e7f5825..00000000000
--- a/libf2c/changes.netlib
+++ /dev/null
@@ -1,3026 +0,0 @@
-31 Aug. 1989:
- 1. A(min(i,j)) now is translated correctly (where A is an array).
- 2. 7 and 8 character variable names are allowed (but elicit a
- complaint under -ext).
- 3. LOGICAL*1 is treated as LOGICAL, with just one error message
- per LOGICAL*1 statement (rather than one per variable declared
- in that statement). [Note that LOGICAL*1 is not in Fortran 77.]
- Like f77, f2c now allows the format in a read or write statement
- to be an integer array.
-
-5 Sept. 1989:
- Fixed botch in argument passing of substrings of equivalenced
-variables.
-
-15 Sept. 1989:
- Warn about incorrect code generated when a character-valued
-function is not declared external and is passed as a parameter
-(in violation of the Fortran 77 standard) before it is invoked.
-Example:
-
- subroutine foo(a,b)
- character*10 a,b
- call goo(a,b)
- b = a(3)
- end
-
-18 Sept. 1989:
- Complain about overlapping initializations.
-
-20 Sept. 1989:
- Warn about names declared EXTERNAL but never referenced;
-include such names as externs in the generated C (even
-though most C compilers will discard them).
-
-24 Sept. 1989:
- New option -w8 to suppress complaint when COMMON or EQUIVALENCE
-forces word alignment of a double.
- Under -A (for ANSI C), ensure that floating constants (terminated
-by 'f') contain either a decimal point or an exponent field.
- Repair bugs sometimes encountered with CHAR and ICHAR intrinsic
-functions.
- Restore f77's optimizations for copying and comparing character
-strings of length 1.
- Always assume floating-point valued routines in libF77 return
-doubles, even under -R.
- Repair occasional omission of arguments in routines having multiple
-entry points.
- Repair bugs in computing offsets of character strings involved
-in EQUIVALENCE.
- Don't omit structure qualification when COMMON variables are used
-as FORMATs or internal files.
-
-2 Oct. 1989:
- Warn about variables that appear only in data stmts; don't emit them.
- Fix bugs in character DATA for noncharacter variables
-involved in EQUIVALENCE.
- Treat noncharacter variables initialized (at least partly) with
-character data as though they were equivalenced -- put out a struct
-and #define the variables. This eliminates the hideous and nonportable
-numeric values that were used to initialize such variables.
- Treat IMPLICIT NONE as IMPLICIT UNDEFINED(A-Z) .
- Quit when given invalid options.
-
-8 Oct. 1989:
- Modified naming scheme for generated intermediate variables;
-more are recycled, fewer distinct ones used.
- New option -W nn specifies nn characters/word for Hollerith
-data initializing non-character variables.
- Bug fix: x(i:min(i+10,j)) used to elicit "Can't handle opcode 31 yet".
- Integer expressions of the form (i+const1) - (i+const2), where
-i is a scalar integer variable, are now simplified to (const1-const2);
-this leads to simpler translation of some substring expressions.
- Initialize uninitialized portions of character string arrays to 0
-rather than to blanks.
-
-9 Oct. 1989:
- New option -c to insert comments showing original Fortran source.
- New option -g to insert line numbers of original Fortran source.
-
-10 Oct. 1989:
- ! recognized as in-line comment delimiter (a la Fortran 88).
-
-24 Oct. 1989:
- New options to ease coping with systems that want the structs
-that result from COMMON blocks to be defined just once:
- -E causes uninitialized COMMON blocks to be declared Extern;
-if Extern is undefined, f2c.h #defines it to be extern.
- -ec causes a separate .c file to be emitted for each
-uninitialized COMMON block: COMMON /ABC/ yields abc_com.c;
-thus one can compile *_com.c into a library to ensure
-precisely one definition.
- -e1c is similar to -ec, except that everything goes into
-one file, along with comments that give a sed script for
-splitting the file into the pieces that -ec would give.
-This is for use with netlib's "execute f2c" service (for which
--ec is coerced into -e1c, and the sed script will put everything
-but the COMMON definitions into f2c_out.c ).
-
-28 Oct. 1989:
- Convert "i = i op ..." into "i op= ...;" even when i is a
-dummy argument.
-
-13 Nov. 1989:
- Name integer constants (passed as arguments) c__... rather
-than c_... so
- common /c/stuff
- call foo(1)
- ...
-is translated correctly.
-
-19 Nov. 1989:
- Floating-point constants are now kept as strings unless they
-are involved in constant expressions that get simplified. The
-floating-point constants kept as strings can have arbitrarily
-many significant figures and a very large exponent field (as
-large as long int allows on the machine on which f2c runs).
-Thus, for example, the body of
-
- subroutine zot(x)
- double precision x(6), pi
- parameter (pi=3.1415926535897932384626433832795028841972)
- x(1) = pi
- x(2) = pi+1
- x(3) = 9287349823749272.7429874923740978492734D-298374
- x(4) = .89
- x(5) = 4.0005
- x(6) = 10D7
- end
-
-now gets translated into
-
- x[1] = 3.1415926535897932384626433832795028841972;
- x[2] = 4.1415926535897931;
- x[3] = 9.2873498237492727429874923740978492734e-298359;
- x[4] = (float).89;
- x[5] = (float)4.0005;
- x[6] = 1e8;
-
-rather than the former
-
- x[1] = 3.1415926535897931;
- x[2] = 4.1415926535897931;
- x[3] = 0.;
- x[4] = (float)0.89000000000000003;
- x[5] = (float)4.0004999999999997;
- x[6] = 100000000.;
-
- Recognition of f77 machine-constant intrinsics deleted, i.e.,
-epbase, epprec, epemin, epemax, eptiny, ephuge, epmrsp.
-
-22 Nov. 1989:
- Workarounds for glitches on some Sun systems...
- libf77: libF77/makefile modified to point out possible need
-to compile libF77/main.c with -Donexit=on_exit .
- libi77: libI77/wref.c (and libI77/README) modified so non-ANSI
-systems can compile with USE_STRLEN defined, which will cause
- sprintf(b = buf, "%#.*f", d, x);
- n = strlen(b) + d1;
-rather than
- n = sprintf(b = buf, "%#.*f", d, x) + d1;
-to be compiled.
-
-26 Nov. 1989:
- Longer names are now accepted (up to 50 characters); names may
-contain underscores (in which case they will have two underscores
-appended, to avoid clashes with library names).
-
-28 Nov. 1989:
- libi77 updated:
- 1. Allow 3 (or, on Crays, 4) digit exponents under format Ew.d .
- 2. Try to get things right on machines where ints have 16 bits.
-
-29 Nov. 1989:
- Supplied missing semicolon in parameterless subroutines that
-have multiple entry points (all of them parameterless).
-
-30 Nov. 1989:
- libf77 and libi77 revised to use types from f2c.h.
- f2c now types floating-point valued C library routines as "double"
-rather than "doublereal" (for use with nonstandard C compilers for
-which "double" is IEEE double extended).
-
-1 Dec. 1989:
- f2c.h updated to eliminate #defines rendered unnecessary (and,
-indeed, dangerous) by change of 26 Nov. to long names possibly
-containing underscores.
- libi77 further revised: yesterday's change omitted two tweaks to fmt.h
-(tweaks which only matter if float and real or double and doublereal are
-different types).
-
-2 Dec. 1989:
- Better error message (than "bad tag") for NAMELIST, which no longer
-inhibits C output.
-
-4 Dec. 1989:
- Allow capital letters in hex constants (f77 extension; e.g.,
-x'a012BCd', X'A012BCD' and x'a012bcd' are all treated as the integer
-167848909).
- libi77 further revised: lio.c lio.h lread.c wref.c wrtfmt.c tweaked
-again to allow float and real or double and doublereal to be different.
-
-6 Dec. 1989:
- Revised f2c.h -- required for the following...
- Simpler looking translations for abs, min, max, using #defines in
-revised f2c.h .
- libi77: more corrections to types; additions for NAMELIST.
- Corrected casts in some I/O calls.
- Translation of NAMELIST; libi77 must still be revised. Currently
-libi77 gives you a run-time error message if you attempt NAMELIST I/O.
-
-7 Dec. 1989:
- Fixed bug that prevented local integer variables that appear in DATA
-stmts from being ASSIGNed statement labels.
- Fillers (for DATA statements initializing EQUIVALENCEd variables and
-variables in COMMON) typed integer rather than doublereal (for slightly
-more portability, e.g. to Crays).
- libi77: missing return values supplied in a few places; some tests
-reordered for better working on the Cray.
- libf77: better accuracy for complex divide, complex square root,
-real mod function (casts to double; double temporaries).
-
-9 Dec. 1989:
- Fixed bug that caused needless (albeit harmless) empty lines to be
-inserted in the C output when a comment line contained trailing blanks.
- Further tweak to type of fillers: allow doublereal fillers if the
-struct has doublereal data.
-
-11 Dec. 1989:
- Alteration of rule for producing external (C) names from names that
-contain underscores. Now the external name is always obtained by
-appending a pair of underscores.
-
-12 Dec. 1989:
- C production inhibited after most errors.
-
-15 Dec. 1989:
- Fixed bug in headers for subroutines having two or more character
-strings arguments: the length arguments were reversed.
-
-19 Dec. 1989:
- f2c.h libf77 libi77: adjusted so #undefs in f2c.h should not foil
-compilation of libF77 and libI77.
- libf77: getenv_ adjusted to work with unsorted environments.
- libi77: the iostat= specifier should now work right with internal I/O.
-
-20 Dec. 1989:
- f2c bugs fixed: In the absence of an err= specifier, the iostat=
-specifier was generally set wrong. Character strings containing
-explicit nulls (\0) were truncated at the first null.
- Unlabeled DO loops recognized; must be terminated by ENDDO.
-(Don't ask for CYCLE, EXIT, named DO loops, or DO WHILE.)
-
-29 Dec. 1989:
- Nested unlabeled DO loops now handled properly; new warning for
-extraneous text at end of FORMAT.
-
-30 Dec. 1989:
- Fixed bug in translating dble(real(...)), dble(sngl(...)), and
-dble(float(...)), where ... is either of type double complex or
-is an expression requiring assignment to intermediate variables (e.g.,
-dble(real(foo(x+1))), where foo is a function and x is a variable).
-Regard nonblank label fields on continuation lines as an error.
-
-3 Jan. 1990:
- New option -C++ yields output that should be understood
-by C++ compilers.
-
-6 Jan. 1989:
- -a now excludes variables that appear in a namelist from those
-that it makes automatic. (As before, it also excludes variables
-that appear in a common, data, equivalence, or save statement.)
- The syntactically correct Fortran
- read(*,i) x
- end
-now yields syntactically correct C (even though both the Fortran
-and C are buggy -- no FORMAT has not been ASSIGNed to i).
-
-7 Jan. 1990:
- libi77: routines supporting NAMELIST added. Surrounding quotes
-made optional when no ambiguity arises in a list or namelist READ
-of a character-string value.
-
-9 Jan. 1990:
- f2c.src made available.
-
-16 Jan. 1990:
- New options -P to produce ANSI C or C++ prototypes for procedures
-defined. Change to -A and -C++: f2c tries to infer prototypes for
-invoked procedures unless the new -!P option is given. New warning
-messages for inconsistent calling sequences among procedures within
-a single file. Most of f2c/src is affected.
- f2c.h: typedefs for procedure arguments added; netlib's f2c service
-will insert appropriate typedefs for use with older versions of f2c.h.
-
-17 Jan. 1990:
- f2c/src: defs.h exec.c format.c proc.c putpcc.c version.c xsum0.out
-updated. Castargs and protofile made extern in defs.h; exec.c
-modified so superfluous else clauses are diagnosed; unused variables
-omitted from declarations in format.c proc.c putpcc.c .
-
-21 Jan. 1990:
- No C emitted for procedures declared external but not referenced.
- f2c.h: more new types added for use with -P.
- New feature: f2c accepts as arguments files ending in .p or .P;
-such files are assumed to be prototype files, such as produced by
-the -P option. All prototype files are read before any Fortran files
-and apply globally to all Fortran files. Suitable prototypes help f2c
-warn about calling-sequence errors and can tell f2c how to type
-procedures declared external but not explicitly typed; the latter is
-mainly of interest for users of the -A and -C++ options. (Prototype
-arguments are not available to netlib's "execute f2c" service.)
- New option -it tells f2c to try to infer types of untyped external
-arguments from their use as parameters to prototyped or previously
-defined procedures.
- f2c/src: many minor cleanups; most modules changed. Individual
-files in f2c/src are now in "bundle" format. The former f2c.1 is
-now f2c.1t; "f2c.1t from f2c" and "f2c.1t from f2c/src" are now the
-same, as are "f2c.1 from f2c" and "f2c.1 from f2c/src". People who
-do not obtain a new copy of "all from f2c/src" should at least add
- fclose(sortfp);
-after the call on do_init_data(outfile, sortfp) in format_data.c .
-
-22 Jan. 1990:
- Cleaner man page wording (thanks to Doug McIlroy).
- -it now also applies to all untyped EXTERNAL procedures, not just
-arguments.
-
-23 Jan. 01:34:00 EST 1990:
- Bug fixes: under -A and -C++, incorrect C was generated for
-subroutines having multiple entries but no arguments.
- Under -A -P, subroutines of no arguments were given prototype
-calling sequence () rather than (void).
- Character-valued functions elicited erroneous warning messages
-about inconsistent calling sequences when referenced by another
-procedure in the same file.
- f2c.1t: omit first appearance of libF77.a in FILES section;
-load order of libraries is -lF77 -lI77, not vice versa (bug
-introduced in yesterday's edits); define .F macro for those whose
--man lacks it. (For a while after yesterday's fixes were posted,
-f2c.1t was out of date. Sorry!)
-
-23 Jan. 9:53:24 EST 1990:
- Character substring expressions involving function calls having
-character arguments (including the intrinsic len function) yielded
-incorrect C.
- Procedures defined after invocation (in the same file) with
-conflicting argument types also got an erroneous message about
-the wrong number of arguments.
-
-24 Jan. 11:44:00 EST 1990:
- Bug fixes: -p omitted #undefs; COMMON block names containing
-underscores had their C names incorrectly computed; a COMMON block
-having the name of a previously defined procedure wreaked havoc;
-if all arguments were .P files, f2c tried reading the second as a
-Fortran file.
- New feature: -P emits comments showing COMMON block lengths, so one
-can get warnings of incompatible COMMON block lengths by having f2c
-read .P (or .p) files. Now by running f2c twice, first with -P -!c
-(or -P!c), then with *.P among the arguments, you can be warned of
-inconsistent COMMON usage, and COMMON blocks having inconsistent
-lengths will be given the maximum length. (The latter always did
-happen within each input file; now -P lets you extend this behavior
-across files.)
-
-26 Jan. 16:44:00 EST 1990:
- Option -it made less aggressive: untyped external procedures that
-are invoked are now typed by the rules of Fortran, rather than by
-previous use of procedures to which they are passed as arguments
-before being invoked.
- Option -P now includes information about references, i.e., called
-procedures, in the prototype files (in the form of special comments).
-This allows iterative invocations of f2c to infer more about untyped
-external names, particularly when multiple Fortran files are involved.
- As usual, there are some obscure bug fixes:
-1. Repair of erroneous warning messages about inconsistent number of
-arguments that arose when a character dummy parameter was discovered
-to be a function or when multiple entry points involved character
-variables appearing in a previous entry point.
-2. Repair of memory fault after error msg about "adjustable character
-function".
-3. Under -U, allow MAIN_ as a subroutine name (in the same file as a
-main program).
-4. Change for consistency: a known function invoked as a subroutine,
-then as a function elicits a warning rather than an error.
-
-26 Jan. 22:32:00 EST 1990:
- Fixed two bugs that resulted in incorrect C for substrings, within
-the body of a character-valued function, of the function's name, when
-those substrings were arguments to another function (even implicitly,
-as in character-string assignment).
-
-28 Jan. 18:32:00 EST 1990:
- libf77, libi77: checksum files added; "make check" looks for
-transmission errors. NAMELIST read modified to allow $ rather than &
-to precede a namelist name, to allow $ rather than / to terminate
-input where the name of another variable would otherwise be expected,
-and to regard all nonprinting ASCII characters <= ' ' as spaces.
-
-29 Jan. 02:11:00 EST 1990:
- "fc from f2c" added.
- -it option made the default; -!it turns it off. Type information is
-now updated in a previously missed case.
- -P option tweaked again; message about when rerunning f2c may change
-prototypes or declarations made more accurate.
- New option -Ps implies -P and returns exit status 4 if rerunning
-f2c -P with prototype inputs might change prototypes or declarations.
-Now you can execute a crude script like
-
- cat *.f >zap.F
- rm -f zap.P
- while :; do
- f2c -Ps -!c zap.[FP]
- case $? in 4) ;; *) break;; esac
- done
-
-to get a file zap.P of the best prototypes f2c can determine for *.f .
-
-Jan. 29 07:30:21 EST 1990:
- Forgot to check for error status when setting return code 4 under -Ps;
-error status (1, 2, 3, or, for caught signal, 126) now takes precedence.
-
-Jan 29 14:17:00 EST 1990:
- Incorrect handling of
- open(n,'filename')
-repaired -- now treated as
- open(n,file='filename')
-(and, under -ext, given an error message).
- New optional source file memset.c for people whose systems don't
-provide memset, memcmp, and memcpy; #include <string.h> in mem.c
-changed to #include "string.h" so BSD people can create a local
-string.h that simply says #include <strings.h> .
-
-Jan 30 10:34:00 EST 1990:
- Fix erroneous warning at end of definition of a procedure with
-character arguments when the procedure had previously been called with
-a numeric argument instead of a character argument. (There were two
-warnings, the second one incorrectly complaining of a wrong number of
-arguments.)
-
-Jan 30 16:29:41 EST 1990:
- Fix case where -P and -Ps erroneously reported another iteration
-necessary. (Only harm is the extra iteration.)
-
-Feb 3 01:40:00 EST 1990:
- Supply semicolon occasionally omitted under -c .
- Try to force correct alignment when numeric variables are initialized
-with character data (a non-standard and non-portable practice). You
-must use the -W option if your code has such data statements and is
-meant to run on a machine with other than 4 characters/word; e.g., for
-code meant to run on a Cray, you would specify -W8 .
- Allow parentheses around expressions in output lists (in write and
-print statements).
- Rename source files so their names are <= 12 characters long
-(so there's room to append .Z and still have <= 14 characters);
-renamed files: formatdata.c niceprintf.c niceprintf.h safstrncpy.c .
- f2c material made available by anonymous ftp from research.att.com
-(look in dist/f2c ).
-
-Feb 3 03:49:00 EST 1990:
- Repair memory fault that arose from use (in an assignment or
-call) of a non-argument variable declared CHARACTER*(*).
-
-Feb 9 01:35:43 EST 1990:
- Fix erroneous error msg about bad types in
- subroutine foo(a,adim)
- dimension a(adim)
- integer adim
- Fix improper passing of character args (and possible memory fault)
-in the expression part of a computed goto.
- Fix botched calling sequences in array references involving
-functions having character args.
- Fix memory fault caused by invocation of character-valued functions
-of no arguments.
- Fix botched calling sequence of a character*1-valued function
-assigned to a character*1 variable.
- Fix bug in error msg for inconsistent number of args in prototypes.
- Allow generation of C output despite inconsistencies in prototypes,
-but give exit code 8.
- Simplify include logic (by removing some bogus logic); never
-prepend "/usr/include/" to file names.
- Minor cleanups (that should produce no visible change in f2c's
-behavior) in intr.c parse.h main.c defs.h formatdata.c p1output.c .
-
-Feb 10 00:19:38 EST 1990:
- Insert (integer) casts when floating-point expressions are used
-as subscripts.
- Make SAVE stmt (with no variable list) override -a .
- Minor cleanups: change field to Field in struct Addrblock (for the
-benefit of buggy C compilers); omit system("/bin/cp ...") in misc.c .
-
-Feb 13 00:39:00 EST 1990:
- Error msg fix in gram.dcl: change "cannot make %s parameter"
-to "cannot make into parameter".
-
-Feb 14 14:02:00 EST 1990:
- Various cleanups (invisible on systems with 4-byte ints), thanks
-to Dave Regan: vaxx.c eliminated; %d changed to %ld various places;
-external names adjusted for the benefit of stupid systems (that ignore
-case and recognize only 6 significant characters in external names);
-buffer shortened in xsum.c (e.g. for MS-DOS); fopen modes distinguish
-text and binary files; several unused functions eliminated; missing
-arg supplied to an unlikely fatalstr invocation.
-
-Thu Feb 15 19:15:53 EST 1990:
- More cleanups (invisible on systems with 4 byte ints); casts inserted
-so most complaints from cyntax(1) and lint(1) go away; a few (int)
-versus (long) casts corrected.
-
-Fri Feb 16 19:55:00 EST 1990:
- Recognize and translate unnamed Fortran 8x do while statements.
- Fix bug that occasionally caused improper breaking of character
-strings.
- New error message for attempts to provide DATA in a type-declaration
-statement.
-
-Sat Feb 17 11:43:00 EST 1990:
- Fix infinite loop clf -> Fatal -> done -> clf after I/O error.
- Change "if (addrp->vclass = CLPROC)" to "if (addrp->vclass == CLPROC)"
-in p1_addr (in p1output.c); this was probably harmless.
- Move a misplaced } in lex.c (which slowed initkey()).
- Thanks to Gary Word for pointing these things out.
-
-Sun Feb 18 18:07:00 EST 1990:
- Detect overlapping initializations of arrays and scalar variables
-in previously missed cases.
- Treat logical*2 as logical (after issuing a warning).
- Don't pass string literals to p1_comment().
- Correct a cast (introduced 16 Feb.) in gram.expr; this matters e.g.
-on a Cray.
- Attempt to isolate UNIX-specific things in sysdep.c (a new source
-file). Unless sysdep.c is compiled with SYSTEM_SORT defined, the
-intermediate files created for DATA statements are now sorted in-core
-without invoking system().
-
-Tue Feb 20 16:10:35 EST 1990:
- Move definition of binread and binwrite from init.c to sysdep.c .
- Recognize Fortran 8x tokens < <= == >= > <> as synonyms for
-.LT. .LE. .EQ. .GE. .GT. .NE.
- Minor cleanup in putpcc.c: fully remove simoffset().
- More discussion of system dependencies added to libI77/README.
-
-Tue Feb 20 21:44:07 EST 1990:
- Minor cleanups for the benefit of EBCDIC machines -- try to remove
-the assumption that 'a' through 'z' are contiguous. (Thanks again to
-Gary Word.) Also, change log2 to log_2 (shouldn't be necessary).
-
-Wed Feb 21 06:24:56 EST 1990:
- Fix botch in init.c introduced in previous change; only matters
-to non-ASCII machines.
-
-Thu Feb 22 17:29:12 EST 1990:
- Allow several entry points to mention the same array. Protect
-parameter adjustments with if's (for the case that an array is not
-an argument to all entrypoints).
- Under -u, allow
- subroutine foo(x,n)
- real x(n)
- integer n
- Compute intermediate variables used to evaluate dimension expressions
-at the right time. Example previously mistranslated:
- subroutine foo(x,k,m,n)
- real x(min(k,m,n))
- ...
- write(*,*) x
- Detect duplicate arguments. (The error msg points to the first
-executable stmt -- not wonderful, but not worth fixing.)
- Minor cleanup of min/max computation (sometimes slightly simpler).
-
-Sun Feb 25 09:39:01 EST 1990:
- Minor tweak to multiple entry points: protect parameter adjustments
-with if's only for (array) args that do not appear in all entry points.
- Minor tweaks to format.c and io.c (invisible unless your compiler
-complained at the duplicate #defines of IOSUNIT and IOSFMT or at
-comparisons of p1gets(...) with NULL).
-
-Sun Feb 25 18:40:10 EST 1990:
- Fix bug introduced Feb. 22: if a subprogram contained DATA and the
-first executable statement was labeled, then the label got lost.
-(Just change INEXEC to INDATA in p1output.c; it occurs just once.)
-
-Mon Feb 26 17:45:10 EST 1990:
- Fix bug in handling of " and ' in comments.
-
-Wed Mar 28 01:43:06 EST 1990:
-libI77:
- 1. Repair nasty I/O bug: opening two files and closing the first
-(after possibly reading or writing it), then writing the second caused
-the last buffer of the second to be lost.
- 2. Formatted reads of logical values treated all letters other than
-t or T as f (false).
- libI77 files changed: err.c rdfmt.c Version.c
- (Request "libi77 from f2c" -- you can't get these files individually.)
-
-f2c itself:
- Repair nasty bug in translation of
- ELSE IF (condition involving complicated abs, min, or max)
--- auxiliary statements were emitted at the wrong place.
- Supply semicolon previously omitted from the translation of a label
-(of a CONTINUE) immediately preceding an ELSE IF or an ELSE. This
-bug made f2c produce invalid C.
- Correct a memory fault that occurred (on some machines) when the
-error message "adjustable dimension on non-argument" should be given.
- Minor tweaks to remove some harmless warnings by overly chatty C
-compilers.
- Argument arays having constant dimensions but a variable lower bound
-(e.g., x(n+1:n+3)) had a * omitted from scalar arguments involved in
-the array offset computation.
-
-Wed Mar 28 18:47:59 EST 1990:
-libf77: add exit(0) to end of main [return(0) encounters a Cray bug]
-
-Sun Apr 1 16:20:58 EDT 1990:
- Avoid dereferencing null when processing equivalences after an error.
-
-Fri Apr 6 08:29:49 EDT 1990:
- Calls involving alternate return specifiers omitted processing
-needed for things like min, max, abs, and // (concatenation).
- INTEGER*2 PARAMETERs were treated as INTEGER*4.
- Convert some O(n^2) parsing to O(n).
-
-Tue Apr 10 20:07:02 EDT 1990:
- When inconsistent calling sequences involve differing numbers of
-arguments, report the first differing argument rather than the numbers
-of arguments.
- Fix bug under -a: formatted I/O in which either the unit or the
-format was a local character variable sometimes resulted in invalid C
-(a static struct initialized with an automatic component).
- Improve error message for invalid flag after elided -.
- Complain when literal table overflows, rather than infinitely
-looping. (The complaint mentions the new and otherwise undocumented
--NL option for specifying a larger literal table.)
- New option -h for forcing strings to word (or, with -hd, double-word)
-boundaries where possible.
- Repair a bug that could cause improper splitting of strings.
- Fix bug (cast of c to doublereal) in
- subroutine foo(c,r)
- double complex c
- double precision r
- c = cmplx(r,real(c))
- end
- New include file "sysdep.h" has some things from defs.h (and
-elsewhere) that one may need to modify on some systems.
- Some large arrays that were previously statically allocated are now
-dynamically allocated when f2c starts running.
- f2c/src files changed:
- README cds.c defs.h f2c.1 f2c.1t format.c formatdata.c init.c
- io.c lex.c main.c makefile mem.c misc.c names.c niceprintf.c
- output.c parse_args.c pread.c put.c putpcc.c sysdep.h
- version.c xsum0.out
-
-Wed Apr 11 18:27:12 EDT 1990:
- Fix bug in argument consistency checking of character, complex, and
-double complex valued functions. If the same source file contained a
-definition of such a function with arguments not explicitly typed,
-then subsequent references to the function might get erroneous
-warnings of inconsistent calling sequences.
- Tweaks to sysdep.h for partially ANSI systems.
- New options -kr and -krd cause f2c to use temporary variables to
-enforce Fortran evaluation-order rules with pernicious, old-style C
-compilers that apply the associative law to floating-point operations.
-
-Sat Apr 14 15:50:15 EDT 1990:
- libi77: libI77 adjusted to allow list-directed and namelist I/O
-of internal files; bug in namelist I/O of logical and character arrays
-fixed; list input of complex numbers adjusted to permit d or D to
-denote the start of the exponent field of a component.
- f2c itself: fix bug in handling complicated lower-bound
-expressions for character substrings; e.g., min and max did not work
-right, nor did function invocations involving character arguments.
- Switch to octal notation, rather than hexadecimal, for nonprinting
-characters in character and string constants.
- Fix bug (when neither -A nor -C++ was specified) in typing of
-external arguments of type complex, double complex, or character:
- subroutine foo(c)
- external c
- complex c
-now results in
- /* Complex */ int (*c) ();
-(as, indeed, it once did) rather than
- complex (*c) ();
-
-Sat Apr 14 22:50:39 EDT 1990:
- libI77/makefile: updated "make check" to omit lio.c
- lib[FI]77/makefile: trivial change: define CC = cc, reference $(CC).
- (Request, e.g., "libi77 from f2c" -- you can't ask for individual
-files from lib[FI]77.)
-
-Wed Apr 18 00:56:37 EDT 1990:
- Move declaration of atof() from defs.h to sysdep.h, where it is
-now not declared if stdlib.h is included. (NeXT's stdlib.h has a
-#define atof that otherwise wreaks havoc.)
- Under -u, provide a more intelligible error message (than "bad tag")
-for an attempt to define a function without specifying its type.
-
-Wed Apr 18 17:26:27 EDT 1990:
- Recognize \v (vertical tab) in Hollerith as well as quoted strings;
-add recognition of \r (carriage return).
- New option -!bs turns off recognition of escapes in character strings
-(\0, \\, \b, \f, \n, \r, \t, \v).
- Move to sysdep.c initialization of some arrays whose initialization
-assumed ASCII; #define Table_size in sysdep.h rather than using
-hard-coded 256 in allocating arrays of size 1 << (bits/byte).
-
-Thu Apr 19 08:13:21 EDT 1990:
- Warn when escapes would make Hollerith extend beyond statement end.
- Omit max() definition from misc.c (should be invisible except on
-systems that erroneously #define max in stdlib.h).
-
-Mon Apr 23 22:24:51 EDT 1990:
- When producing default-style C (no -A or -C++), cast switch
-expressions to (int).
- Move "-lF77 -lI77 -lm -lc" to link_msg, defined in sysdep.c .
- Add #define scrub(x) to sysdep.h, with invocations in format.c and
-formatdata.c, so that people who have systems like VMS that would
-otherwise create multiple versions of intermediate files can
-#define scrub(x) unlink(x)
-
-Tue Apr 24 18:28:36 EDT 1990:
- Pass string lengths once rather than twice to a function of character
-arguments involved in comparison of character strings of length 1.
-
-Fri Apr 27 13:11:52 EDT 1990:
- Fix bug that made f2c gag on concatenations involving char(...) on
-some systems.
-
-Sat Apr 28 23:20:16 EDT 1990:
- Fix control-stack bug in
- if(...) then
- else if (complicated condition)
- else
- endif
-(where the complicated condition causes assignment to an auxiliary
-variable, e.g., max(a*b,c)).
-
-Mon Apr 30 13:30:10 EDT 1990:
- Change fillers for DATA with holes from substructures to arrays
-(in an attempt to make things work right with C compilers that have
-funny padding rules for substructures, e.g., Sun C compilers).
- Minor cleanup of exec.c (should not affect generated C).
-
-Mon Apr 30 23:13:51 EDT 1990:
- Fix bug in handling return values of functions having multiple
-entry points of differing return types.
-
-Sat May 5 01:45:18 EDT 1990:
- Fix type inference bug in
- subroutine foo(x)
- call goo(x)
- end
- subroutine goo(i)
- i = 3
- end
-Instead of warning of inconsistent calling sequences for goo,
-f2c was simply making i a real variable; now i is correctly
-typed as an integer variable, and f2c issues an error message.
- Adjust error messages issued at end of declarations so they
-don't blame the first executable statement.
-
-Sun May 6 01:29:07 EDT 1990:
- Fix bug in -P and -Ps: warn when the definition of a subprogram adds
-information that would change prototypes or previous declarations.
-
-Thu May 10 18:09:15 EDT 1990:
- Fix further obscure bug with (default) -it: inconsistent calling
-sequences and I/O statements could interact to cause a memory fault.
-Example:
- SUBROUTINE FOO
- CALL GOO(' Something') ! Forgot integer first arg
- END
- SUBROUTINE GOO(IUNIT,MSG)
- CHARACTER*(*)MSG
- WRITE(IUNIT,'(1X,A)') MSG
- END
-
-Fri May 11 16:49:11 EDT 1990:
- Under -!c, do not delete any .c files (when there are errors).
- Avoid dereferencing 0 when a fatal error occurs while reading
-Fortran on stdin.
-
-Wed May 16 18:24:42 EDT 1990:
- f2c.ps made available.
-
-Mon Jun 4 12:53:08 EDT 1990:
- Diagnose I/O units of invalid type.
- Add specific error msg about dummy arguments in common.
-
-Wed Jun 13 12:43:17 EDT 1990:
- Under -A, supply a missing "[1]" for CHARACTER*1 variables that appear
-both in a DATA statement and in either COMMON or EQUIVALENCE.
-
-Mon Jun 18 16:58:31 EDT 1990:
- Trivial updates to f2c.ps . ("Fortran 8x" --> "Fortran 90"; omit
-"(draft)" from "(draft) ANSI C".)
-
-Tue Jun 19 07:36:32 EDT 1990:
- Fix incorrect code generated for ELSE IF(expression involving
-function call passing non-constant substring).
- Under -h, preserve the property that strings are null-terminated
-where possible.
- Remove spaces between # and define in lex.c output.c parse.h .
-
-Mon Jun 25 07:22:59 EDT 1990:
- Minor tweak to makefile to reduce unnecessary recompilations.
-
-Tue Jun 26 11:49:53 EDT 1990:
- Fix unintended truncation of some integer constants on machines
-where casting a long to (int) may change the value. E.g., when f2c
-ran on machines with 16-bit ints, "i = 99999" was being translated
-to "i = -31073;".
-
-Wed Jun 27 11:05:32 EDT 1990:
- Arrange for CHARACTER-valued PARAMETERs to honor their length
-specifications. Allow CHAR(nn) in expressions defining such PARAMETERs.
-
-Fri Jul 20 09:17:30 EDT 1990:
- Avoid dereferencing 0 when a FORMAT statement has no label.
-
-Thu Jul 26 11:09:39 EDT 1990:
- Remarks about VOID and binread,binwrite added to README.
- Tweaks to parse_args: should be invisible unless your compiler
-complained at (short)*store.
-
-Thu Aug 2 02:07:58 EDT 1990:
- f2c.ps: change the first line of page 5 from
- include stuff
-to
- include 'stuff'
-
-Tue Aug 14 13:21:24 EDT 1990:
- libi77: libI77 adjusted to treat tabs as spaces in list input.
-
-Fri Aug 17 07:24:53 EDT 1990:
- libi77: libI77 adjusted so a blank='ZERO' clause (upper case Z)
-in an open of a currently open file works right.
-
-Tue Aug 28 01:56:44 EDT 1990:
- Fix bug in warnings of inconsistent calling sequences: if an
-argument to a subprogram was never referenced, then a previous
-invocation of the subprogram (in the same source file) that
-passed something of the wrong type for that argument did not
-elicit a warning message.
-
-Thu Aug 30 09:46:12 EDT 1990:
- libi77: prevent embedded blanks in list output of complex values;
-omit exponent field in list output of values of magnitude between
-10 and 1e8; prevent writing stdin and reading stdout or stderr;
-don't close stdin, stdout, or stderr when reopening units 5, 6, 0.
-
-Tue Sep 4 12:30:57 EDT 1990:
- Fix bug in C emitted under -I2 or -i2 for INTEGER*4 FUNCTION.
- Warn of missing final END even if there are previous errors.
-
-Fri Sep 7 13:55:34 EDT 1990:
- Remark about "make xsum.out" and "make f2c" added to README.
-
-Tue Sep 18 23:50:01 EDT 1990:
- Fix null dereference (and, on some systems, writing of bogus *_com.c
-files) under -ec or -e1c when a prototype file (*.p or *.P) describes
-COMMON blocks that do not appear in the Fortran source.
- libi77:
- Add some #ifdef lines (#ifdef MSDOS, #ifndef MSDOS) to avoid
-references to stat and fstat on non-UNIX systems.
- On UNIX systems, add component udev to unit; decide that old
-and new files are the same iff both the uinode and udev components
-of unit agree.
- When an open stmt specifies STATUS='OLD', use stat rather than
-access (on UNIX systems) to check the existence of the file (in case
-directories leading to the file have funny permissions and this is
-a setuid or setgid program).
-
-Thu Sep 27 16:04:09 EDT 1990:
- Supply missing entry for Impldoblock in blksize array of cpexpr
-(in expr.c). No examples are known where this omission caused trouble.
-
-Tue Oct 2 22:58:09 EDT 1990:
- libf77: test signal(...) == SIG_IGN rather than & 01 in main().
- libi77: adjust rewind.c so two successive rewinds after a write
-don't clobber the file.
-
-Thu Oct 11 18:00:14 EDT 1990:
- libi77: minor cleanups: add #include "fcntl.h" to endfile.c, err.c,
-open.c; adjust g_char in util.c for segmented memories; in f_inqu
-(inquire.c), define x appropriately when MSDOS is defined.
-
-Mon Oct 15 20:02:11 EDT 1990:
- Add #ifdef MSDOS pointer adjustments to mem.c; treat NAME= as a
-synonym for FILE= in OPEN statements.
-
-Wed Oct 17 16:40:37 EDT 1990:
- libf77, libi77: minor cleanups: _cleanup() and abort() invocations
-replaced by invocations of sig_die in main.c; some error messages
-previously lost in buffers will now appear.
-
-Mon Oct 22 16:11:27 EDT 1990:
- libf77: separate sig_die from main (for folks who don't want to use
-the main in libF77).
- libi77: minor tweak to comments in README.
-
-Fri Nov 2 13:49:35 EST 1990:
- Use two underscores rather than one in generated temporary variable
-names to avoid conflict with COMMON names. f2c.ps updated to reflect
-this change and the NAME= extension introduced 15 Oct.
- Repair a rare memory fault in io.c .
-
-Mon Nov 5 16:43:55 EST 1990:
- libi77: changes to open.c (and err.c): complain if an open stmt
-specifies new= and the file already exists (as specified by Fortrans 77
-and 90); allow file= to be omitted in open stmts and allow
-status='replace' (Fortran 90 extensions).
-
-Fri Nov 30 10:10:14 EST 1990:
- Adjust malloc.c for unusual systems whose sbrk() can return values
-not properly aligned for doubles.
- Arrange for slightly more helpful and less repetitive warnings for
-non-character variables initialized with character data; these warnings
-are (still) suppressed by -w66.
-
-Fri Nov 30 15:57:59 EST 1990:
- Minor tweak to README (about changing VOID in f2c.h).
-
-Mon Dec 3 07:36:20 EST 1990:
- Fix spelling of "character" in f2c.1t.
-
-Tue Dec 4 09:48:56 EST 1990:
- Remark about link_msg and libf2c added to f2c/README.
-
-Thu Dec 6 08:33:24 EST 1990:
- Under -U, render label nnn as L_nnn rather than Lnnn.
-
-Fri Dec 7 18:05:00 EST 1990:
- Add more names from f2c.h (e.g. integer, real) to the c_keywords
-list of names to which an underscore is appended to avoid confusion.
-
-Mon Dec 10 19:11:15 EST 1990:
- Minor tweaks to makefile (./xsum) and README (binread/binwrite).
- libi77: a few modifications for POSIX systems; meant to be invisible
-elsewhere.
-
-Sun Dec 16 23:03:16 EST 1990:
- Fix null dereference caused by unusual erroneous input, e.g.
- call foo('abc')
- end
- subroutine foo(msg)
- data n/3/
- character*(*) msg
- end
-(Subroutine foo is illegal because the character statement comes after a
-data statement.)
- Use decimal rather than hex constants in xsum.c (to prevent
-erroneous warning messages about constant overflow).
-
-Mon Dec 17 12:26:40 EST 1990:
- Fix rare extra underscore in character length parameters passed
-for multiple entry points.
-
-Wed Dec 19 17:19:26 EST 1990:
- Allow generation of C despite error messages about bad alignment
-forced by equivalence.
- Allow variable-length concatenations in I/O statements, such as
- open(3, file=bletch(1:n) // '.xyz')
-
-Fri Dec 28 17:08:30 EST 1990:
- Fix bug under -p with formats and internal I/O "units" in COMMON,
-as in
- COMMON /FIGLEA/F
- CHARACTER*20 F
- F = '(A)'
- WRITE (*,FMT=F) 'Hello, world!'
- END
-
-Tue Jan 15 12:00:24 EST 1991:
- Fix bug when two equivalence groups are merged, the second with
-nonzero offset, and the result is then merged into a common block.
-Example:
- INTEGER W(3), X(3), Y(3), Z(3)
- COMMON /ZOT/ Z
- EQUIVALENCE (W(1),X(1)), (X(2),Y(1)), (Z(3),X(1))
-***** W WAS GIVEN THE WRONG OFFSET
- Recognize Fortran 90's optional NML= in NAMELIST READs and WRITEs.
-(Currently NML= and FMT= are treated as synonyms -- there's no
-error message if, e.g., NML= specifies a format.)
- libi77: minor adjustment to allow internal READs from character
-string constants in read-only memory.
-
-Fri Jan 18 22:56:15 EST 1991:
- Add comment to README about needing to comment out the typedef of
-size_t in sysdep.h on some systems, e.g. Sun 4.1.
- Fix misspelling of "statement" in an error message in lex.c
-
-Wed Jan 23 00:38:48 EST 1991:
- Allow hex, octal, and binary constants to have the qualifying letter
-(z, x, o, or b) either before or after the quoted string containing the
-digits. For now this change will not be reflected in f2c.ps .
-
-Tue Jan 29 16:23:45 EST 1991:
- Arrange for character-valued statement functions to give results of
-the right length (that of the statement function's name).
-
-Wed Jan 30 07:05:32 EST 1991:
- More tweaks for character-valued statement functions: an error
-check and an adjustment so a right-hand side of nonconstant length
-(e.g., a substring) is handled right.
-
-Wed Jan 30 09:49:36 EST 1991:
- Fix p1_head to avoid printing (char *)0 with %s.
-
-Thu Jan 31 13:53:44 EST 1991:
- Add a test after the cleanup call generated for I/O statements with
-ERR= or END= clauses to catch the unlikely event that the cleanup
-routine encounters an error.
-
-Mon Feb 4 08:00:58 EST 1991:
- Minor cleanup: omit unneeded jumps and labels from code generated for
-some NAMELIST READs and WRITEs with IOSTAT=, ERR=, and/or END=.
-
-Tue Feb 5 01:39:36 EST 1991:
- Change Mktemp to mktmp (for the benefit of systems so brain-damaged
-that they do not distinguish case in external names -- and that for
-some reason want to load mktemp). Try to get xsum0.out right this
-time (it somehow didn't get updated on 4 Feb. 1991).
- Add note to libi77/README about adjusting the interpretation of
-RECL= specifiers in OPENs for direct unformatted I/O.
-
-Thu Feb 7 17:24:42 EST 1991:
- New option -r casts values of REAL functions, including intrinsics,
-to REAL. This only matters for unportable code like
- real r
- r = asin(1.)
- if (r .eq. asin(1.)) ...
-[The behavior of such code varies with the Fortran compiler used --
-and sometimes is affected by compiler options.] For now, the man page
-at the end of f2c.ps is the only part of f2c.ps that reflects this new
-option.
-
-Fri Feb 8 18:12:51 EST 1991:
- Cast pointer differences passed as arguments to the appropriate type.
-This matters, e.g., with MSDOS compilers that yield a long pointer
-difference but have int == short.
- Disallow nonpositive dimensions.
-
-Fri Feb 15 12:24:15 EST 1991:
- Change %d to %ld in sprintf call in putpower in putpcc.c.
- Free more memory (e.g. allowing translation of larger Fortran
-files under MS-DOS).
- Recognize READ (character expression) and WRITE (character expression)
-as formatted I/O with the format given by the character expression.
- Update year in Notice.
-
-Sat Feb 16 00:42:32 EST 1991:
- Recant recognizing WRITE(character expression) as formatted output
--- Fortran 77 is not symmetric in its syntax for READ and WRITE.
-
-Mon Mar 4 15:19:42 EST 1991:
- Fix bug in passing the real part of a complex argument to an intrinsic
-function. Omit unneeded parentheses in nested calls to intrinsics.
-Example:
- subroutine foo(x, y)
- complex y
- x = exp(sin(real(y))) + exp(imag(y))
- end
-
-Fri Mar 8 15:05:42 EST 1991:
- Fix a comment in expr.c; omit safstrncpy.c (which had bugs in
-cases not used by f2c).
-
-Wed Mar 13 02:27:23 EST 1991:
- Initialize firstmemblock->next in mem_init in mem.c . [On most
-systems it was fortuituously 0, but with System V, -lmalloc could
-trip on this missed initialization.]
-
-Wed Mar 13 11:47:42 EST 1991:
- Fix a reference to freed memory.
-
-Wed Mar 27 00:42:19 EST 1991:
- Fix a memory fault caused by such illegal Fortran as
- function foo
- x = 3
- logical foo ! declaration among executables
- foo=.false. ! used to suffer memory fault
- end
-
-Fri Apr 5 08:30:31 EST 1991:
- Fix loss of % in some format expressions, e.g.
- write(*,'(1h%)')
- Fix botch introduced 27 March 1991 that caused subroutines with
-multiple entry points to have extraneous declarations of ret_val.
-
-Fri Apr 5 12:44:02 EST 1991
- Try again to omit extraneous ret_val declarations -- this morning's
-fix was sometimes wrong.
-
-Mon Apr 8 13:47:06 EDT 1991:
- Arrange for s_rnge to have the right prototype under -A -C .
-
-Wed Apr 17 13:36:03 EDT 1991:
- New fatal error message for apparent invocation of a recursive
-statement function.
-
-Thu Apr 25 15:13:37 EDT 1991:
- F2c and libi77 adjusted so NAMELIST works with -i2. (I forgot
-about -i2 when adding NAMELIST.) This required a change to f2c.h
-(that only affects NAMELIST I/O under -i2.) Man-page description of
--i2 adjusted to reflect that -i2 stores array lengths in short ints.
-
-Fri Apr 26 02:54:41 EDT 1991:
- Libi77: fix some bugs in NAMELIST reading of multi-dimensional arrays
-(file rsne.c).
-
-Thu May 9 02:13:51 EDT 1991:
- Omit a trailing space in expr.c (could cause a false xsum value if
-a mailer drops the trailing blank).
-
-Thu May 16 13:14:59 EDT 1991:
- Libi77: increase LEFBL in lio.h to overcome a NeXT bug.
- Tweak for compilers that recognize "nested" comments: inside comments,
-turn /* into /+ (as well as */ into +/).
-
-Sat May 25 11:44:25 EDT 1991:
- libf77: s_rnge: declare line long int rather than int.
-
-Fri May 31 07:51:50 EDT 1991:
- libf77: system_: officially return status.
-
-Mon Jun 17 16:52:53 EDT 1991:
- Minor tweaks: omit unnecessary declaration of strcmp (that caused
-trouble on a system where strcmp was a macro) from misc.c; add
-SHELL = /bin/sh to makefiles.
- Fix a dereference of null when a CHARACTER*(*) declaration appears
-(illegally) after DATA. Complain only once per subroutine about
-declarations appearing after DATA.
-
-Mon Jul 1 00:28:13 EDT 1991:
- Add test and error message for illegal use of subroutine names, e.g.
- SUBROUTINE ZAP(A)
- ZAP = A
- END
-
-Mon Jul 8 21:49:20 EDT 1991:
- Issue a warning about things like
- integer i
- i = 'abc'
-(which is treated as i = ichar('a')). [It might be nice to treat 'abc'
-as an integer initialized (in a DATA statement) with 'abc', but
-other matters have higher priority.]
- Render
- i = ichar('A')
-as
- i = 'A';
-rather than
- i = 65;
-(which assumes ASCII).
-
-Fri Jul 12 07:41:30 EDT 1991:
- Note added to README about erroneous definitions of __STDC__ .
-
-Sat Jul 13 13:38:54 EDT 1991:
- Fix bugs in double type convesions of complex values, e.g.
-sngl(real(...)) or dble(real(...)) (where ... is complex).
-
-Mon Jul 15 13:21:42 EDT 1991:
- Fix bug introduced 8 July 1991 that caused erroneous warnings
-"ichar([first char. of] char. string) assumed for conversion to numeric"
-when a subroutine had an array of character strings as an argument.
-
-Wed Aug 28 01:12:17 EDT 1991:
- Omit an unused function in format.c, an unused variable in proc.c .
- Under -r8, promote complex to double complex (as the man page claims).
-
-Fri Aug 30 17:19:17 EDT 1991:
- f2c.ps updated: slightly expand description of intrinsics and,or,xor,
-not; add mention of intrinsics lshift, rshift; add note about f2c
-accepting Fortran 90 inline comments (starting with !); update Cobalt
-Blue address.
-
-Tue Sep 17 07:17:33 EDT 1991:
- libI77: err.c and open.c modified to use modes "rb" and "wb"
-when (f)opening unformatted files; README updated to point out
-that it may be necessary to change these modes to "r" and "w"
-on some non-ANSI systems.
-
-Tue Oct 15 10:25:49 EDT 1991:
- Minor tweaks that make some PC compilers happier: insert some
-casts, add args to signal functions.
- Change -g to emit uncommented #line lines -- and to emit more of them;
-update fc, f2c.1, f2c.1t, f2c.ps to reflect this.
- Change uchar to Uchar in xsum.c .
- Bring gram.c up to date.
-
-Thu Oct 17 09:22:05 EDT 1991:
- libi77: README, fio.h, sue.c, uio.c changed so the length field
-in unformatted sequential records has type long rather than int
-(unless UIOLEN_int is #defined). This is for systems where sizeof(int)
-can vary, depending on the compiler or compiler options.
-
-Thu Oct 17 13:42:59 EDT 1991:
- libi77: inquire.c: when MSDOS is defined, don't strcmp units[i].ufnm
-when it is NULL.
-
-Fri Oct 18 15:16:00 EDT 1991:
- Correct xsum0.out in "all from f2c/src" (somehow botched on 15 Oct.).
-
-Tue Oct 22 18:12:56 EDT 1991:
- Fix memory fault when a character*(*) argument is used (illegally)
-as a dummy variable in the definition of a statement function. (The
-memory fault occurred when the statement function was invoked.)
- Complain about implicit character*(*).
-
-Thu Nov 14 08:50:42 EST 1991:
- libi77: change uint to Uint in fmt.h, rdfmt.c, wrtfmt.c; this change
-should be invisible unless you're running a brain-damaged system.
-
-Mon Nov 25 19:04:40 EST 1991:
- libi77: correct botches introduced 17 Oct. 1991 and 14 Nov. 1991
-(change uint to Uint in lwrite.c; other changes that only matter if
-sizeof(int) != sizeof(long)).
- Add a more meaningful error message when bailing out due to an attempt
-to invoke a COMMON variable as a function.
-
-Sun Dec 1 19:29:24 EST 1991:
- libi77: uio.c: add test for read failure (seq. unformatted reads);
-adjust an error return from EOF to off end of record.
-
-Tue Dec 10 17:42:28 EST 1991:
- Add tests to prevent memory faults with bad uses of character*(*).
-
-Thu Dec 12 11:24:41 EST 1991:
- libi77: fix bug with internal list input that caused the last
-character of each record to be ignored; adjust error message in
-internal formatted input from "end-of-file" to "off end of record"
-if the format specifies more characters than the record contains.
-
-Wed Dec 18 17:48:11 EST 1991:
- Fix bug in translating nonsensical ichar invocations involving
-concatenations.
- Fix bug in passing intrinsics lle, llt, lge, lgt as arguments;
-hl_le was being passed rather than l_le, etc.
- libf77: adjust length parameters from long to ftnlen, for
-compiling with f2c_i2 defined.
-
-Sat Dec 21 15:30:57 EST 1991:
- Allow DO nnn ... to end with an END DO statement labelled nnn.
-
-Tue Dec 31 13:53:47 EST 1991:
- Fix bug in handling dimension a(n**3,2) -- pow_ii was called
-incorrectly.
- Fix bug in translating
- subroutine x(abc,n)
- character abc(n)
- write(abc,'(i10)') 123
- end
-(omitted declaration and initialiation of abc_dim1).
- Complain about dimension expressions of such invalid types
-as complex and logical.
-
-Fri Jan 17 11:54:20 EST 1992:
- Diagnose some illegal uses of main program name (rather than
-memory faulting).
- libi77: (1) In list and namelist input, treat "r* ," and "r*,"
-alike (where r is a positive integer constant), and fix a bug in
-handling null values following items with repeat counts (e.g.,
-2*1,,3). (2) For namelist reading of a numeric array, allow a new
-name-value subsequence to terminate the current one (as though the
-current one ended with the right number of null values).
-(3) [lio.h, lwrite.c]: omit insignificant zeros in list and namelist
-output. (Compile with -DOld_list_output to get the old behavior.)
-
-Sat Jan 18 15:58:01 EST 1992:
- libi77: make list output consistent with F format by printing .1
-rather than 0.1 (introduced yesterday).
-
-Wed Jan 22 08:32:43 EST 1992:
- libi77: add comment to README pointing out preconnection of
-Fortran units 5, 6, 0 to stdin, stdout, stderr (respectively).
-
-Mon Feb 3 11:57:53 EST 1992:
- libi77: fix namelist read bug that caused the character following
-a comma to be ignored.
-
-Fri Feb 28 01:04:26 EST 1992:
- libf77: fix buggy z_sqrt.c (double precision square root), which
-misbehaved for arguments in the southwest quadrant.
-
-Thu Mar 19 15:05:18 EST 1992:
- Fix bug (introduced 17 Jan 1992) in handling multiple entry points
-of differing types (with implicitly typed entries appearing after
-the first executable statement).
- Fix memory fault in the following illegal Fortran:
- double precision foo(i)
-* illegal: above should be "double precision function foo(i)"
- foo = i * 3.2
- entry moo(i)
- end
- Note about ANSI_Libraries (relevant, e.g., to IRIX 4.0.1 and AIX)
-added to README.
- Abort zero divides during constant simplification.
-
-Sat Mar 21 01:27:09 EST 1992:
- Tweak ckalloc (misc.c) for systems where malloc(0) = 0; this matters
-for subroutines with multiple entry points but no arguments.
- Add "struct memblock;" to init.c (irrelevant to most compilers).
-
-Wed Mar 25 13:31:05 EST 1992:
- Fix bug with IMPLICIT INTEGER*4(...): under -i2 or -I2, the *4 was
-ignored.
-
-Tue May 5 09:53:55 EDT 1992:
- Tweaks to README; e.g., ANSI_LIbraries changed to ANSI_Libraries .
-
-Wed May 6 23:49:07 EDT 1992
- Under -A and -C++, have subroutines return 0 (even if they have
-no * arguments).
- Adjust libi77 (rsne.c and lread.c) for systems where ungetc is
-a macro. Tweak lib[FI]77/makefile to use unique intermediate file
-names (for parallel makes).
-
-Tue May 19 09:03:05 EDT 1992:
- Adjust libI77 to make err= work with internal list and formatted I/O.
-
-Sat May 23 18:17:42 EDT 1992:
- Under -A and -C++, supply "return 0;" after the code generated for
-a STOP statement -- the C compiler doesn't know that s_stop won't
-return.
- New (mutually exclusive) options:
- -f treats all input lines as free-format lines,
- honoring text that appears after column 72
- and not padding lines shorter than 72 characters
- with blanks (which matters if a character string
- is continued across 2 or more lines).
- -72 treats text appearing after column 72 as an error.
-
-Sun May 24 09:45:37 EDT 1992:
- Tweak description of -f in f2c.1 and f2c.1t; update f2c.ps .
-
-Fri May 29 01:17:15 EDT 1992:
- Complain about externals used as variables. Example
- subroutine foo(a,b)
- external b
- a = a*b ! illegal use of b; perhaps should be b()
- end
-
-Mon Jun 15 11:15:27 EDT 1992:
- Fix bug in handling namelists with names that have underscores.
-
-Sat Jun 27 17:30:59 EDT 1992:
- Under -A and -C++, end Main program aliases with "return 0;".
- Under -A and -C++, use .P files and usage in previous subprograms
-in the current file to give prototypes for functions declared EXTERNAL
-but not invoked.
- Fix memory fault under -d1 -P .
- Under -A and -C++, cast arguments to the right types in calling
-a function that has been defined in the current file or in a .P file.
- Fix bug in handling multi-dimensional arrays with array references
-in their leading dimensions.
- Fix bug in the intrinsic cmplx function when the first argument
-involves an expression for which f2c generates temporary variables,
-e.g. cmplx(abs(real(a)),1.) .
-
-Sat Jul 18 07:36:58 EDT 1992:
- Fix buglet with -e1c (invisible on most systems) temporary file
-f2c_functions was unlinked before being closed.
- libf77: fix bugs in evaluating m**n for integer n < 0 and m an
-integer different from 1 or a real or double precision 0.
-Catch SIGTRAP (to print "Trace trap" before aborting). Programs
-that previously erroneously computed 1 for 0**-1 may now fault.
-Relevant routines: main.c pow_di.c pow_hh.c pow_ii.c pow_ri.c .
-
-Sat Jul 18 08:40:10 EDT 1992:
- libi77: allow namelist input to end with & (e.g. &end).
-
-Thu Jul 23 00:14:43 EDT 1992
- Append two underscores rather than one to C keywords used as
-local variables to avoid conflicts with similarly named COMMON blocks.
-
-Thu Jul 23 11:20:55 EDT 1992:
- libf77, libi77 updated to assume ANSI prototypes unless KR_headers
-is #defined.
- libi77 now recognizes a Z format item as in Fortran 90;
-the implementation assumes 8-bit bytes and botches character strings
-on little-endian machines (by printing their bytes from right to
-left): expect this bug to persist; fixing it would require a
-change to the I/O calling sequences.
-
-Tue Jul 28 15:18:33 EDT 1992:
- libi77: insert missed "#ifdef KR_headers" lines around getnum
-header in rsne.c. Version not updated.
-
-NOTE: "index from f2c" now ends with current timestamps of files in
-"all from f2c/src", sorted by time. To bring your source up to date,
-obtain source files with a timestamp later than the time shown in your
-version.c.
-
-Fri Aug 14 08:07:09 EDT 1992:
- libi77: tweak wrt_E in wref.c to avoid signing NaNs.
-
-Sun Aug 23 19:05:22 EDT 1992:
- fc: supply : after O in getopt invocation (for -O1 -O2 -O3).
-
-Mon Aug 24 18:37:59 EDT 1992:
- Recant above tweak to fc: getopt is dumber than I thought;
-it's necessary to say -O 1 (etc.).
- libF77/README: add comments about ABORT, ERF, DERF, ERFC, DERFC,
-GETARG, GETENV, IARGC, SIGNAL, and SYSTEM.
-
-Tue Oct 27 01:57:42 EST 1992:
- libf77, libi77:
- 1. Fix botched indirection in signal_.c.
- 2. Supply missing l_eof = 0 assignment to s_rsne() in rsne.c (so
-end-of-file on other files won't confuse namelist reads of external
-files).
- 3. Prepend f__ to external names that are only of internal
-interest to lib[FI]77.
-
-Thu Oct 29 12:37:18 EST 1992:
- libf77: Fix botch in signal_.c when KR_headers is #defined;
-add CFLAGS to makefile.
- libi77: trivial change to makefile for consistency with
-libF77/makefile.
-
-Wed Feb 3 02:05:16 EST 1993:
- Recognize types INTEGER*1, LOGICAL*1, LOGICAL*2, INTEGER*8.
-INTEGER*8 is not well tested and will only work reasonably on
-systems where int = 4 bytes, long = 8 bytes; on such systems,
-you'll have to modify f2c.h appropriately, changing integer
-from long to int and adding typedef long longint. You'll also
-have to compile libI77 with Allow_TYQUAD #defined and adjust
-libF77/makefile to compile pow_qq.c. In the f2c source, changes
-for INTEGER*8 are delimited by #ifdef TYQUAD ... #endif. You
-can omit the INTEGER*8 changes by compiling with NO_TYQUAD
-#defined. Otherwise, the new command-line option -!i8
-disables recognition of INTEGER*8.
- libf77: add pow_qq.c
- libi77: add #ifdef Allow_TYQUAD stuff. Changes for INTEGER*1,
-LOGICAL*1, and LOGICAL*2 came last 23 July 1992. Fix bug in
-backspace (that only bit when the last character of the second
-or subsequent buffer read was the previous newline). Guard
-against L_tmpnam being too small in endfile.c. For MSDOS,
-close and reopen files when copying to truncate. Lengthen
-LINTW (buffer size in lwrite.c).
- Add \ to the end of #define lines that get broken.
- Fix bug in handling NAMELIST of items in EQUIVALENCE.
- Under -h (or -hd), convert Hollerith to integer in general expressions
-(e.g., assignments), not just when they're passed as arguments, and
-blank-pad rather than 0-pad the Hollerith to a multiple of
-sizeof(integer) or sizeof(doublereal).
- Add command-line option -s, which instructs f2c preserve multi-
-dimensional subscripts (by emitting and using appropriate #defines).
- Fix glitch (with default type inferences) in examples like
- call foo('abc')
- end
- subroutine foo(goo)
- end
-This gave two warning messages:
- Warning on line 4 of y.f: inconsistent calling sequences for foo:
- here 1, previously 2 args and string lengths.
- Warning on line 4 of y.f: inconsistent calling sequences for foo:
- here 2, previously 1 args and string lengths.
-Now the second Warning is suppressed.
- Complain about all inconsistent arguments, not just the first.
- Switch to automatic creation of "all from f2c/src". For folks
-getting f2c source via ftp, this means f2c/src/all.Z is now an
-empty file rather than a bundle.
- Separate -P and -A: -P no longer implies -A.
-
-Thu Feb 4 00:32:20 EST 1993:
- Fix some glitches (introduced yesterday) with -h .
-
-Fri Feb 5 01:40:38 EST 1993:
- Fix bug in types conveyed for namelists (introduced 3 Feb. 1993).
-
-Fri Feb 5 21:26:43 EST 1993:
- libi77: tweaks to NAMELIST and open (after comments by Harold
-Youngren):
- 1. Reading a ? instead of &name (the start of a namelist) causes
- the namelist being sought to be written to stdout (unit 6);
- to omit this feature, compile rsne.c with -DNo_Namelist_Questions.
- 2. Reading the wrong namelist name now leads to an error message
- and an attempt to skip input until the right namelist name is found;
- to omit this feature, compile rsne.c with -DNo_Bad_Namelist_Skip.
- 3. Namelist writes now insert newlines before each variable; to omit
- this feature, compile xwsne.c with -DNo_Extra_Namelist_Newlines.
- 4. For OPEN of sequential files, ACCESS='APPEND' (or
- access='anything else starting with "A" or "a"') causes the file to
- be positioned at end-of-file, so a write will append to the file.
- (This is nonstandard, but does not require modifying data
- structures.)
-
-Mon Feb 8 14:40:37 EST 1993:
- Increase number of continuation lines allowed from 19 to 99,
-and allow changing this limit with -NC (e.g. -NC200 for 200 lines).
- Treat control-Z (at the beginning of a line) as end-of-file: see
-the new penultimate paragraph of README.
- Fix a rarely seen glitch that could make an error messages to say
-"line 0".
-
-Tue Feb 9 02:05:40 EST 1993
- libi77: change some #ifdef MSDOS lines to #ifdef NON_UNIX_STDIO,
-and, in err.c under NON_UNIX_STDIO, avoid close(creat(name,0666))
-when the unit has another file descriptor for name.
-
-Tue Feb 9 17:12:49 EST 1993
- libi77: more tweaks for NON_UNIX_STDIO: use stdio routines
-rather than open, close, creat, seek, fdopen (except for f__isdev).
-
-Fri Feb 12 15:49:33 EST 1993
- Update src/gram.c (which was forgotten in the recent updates).
-Most folks regenerate it anyway (wity yacc or bison).
-
-Thu Mar 4 17:07:38 EST 1993
- Increase default max labels in computed gotos and alternate returns
-to 257, and allow -Nl1234 to specify this number.
- Tweak put.c to check p->tag == TADDR in realpart() and imagpart().
- Adjust fc script to allow .r (RATFOR) files and -C (check subscripts).
- Avoid declaring strchr in niceprintf.c under -DANSI_Libraries .
- gram.c updated again.
- libi77: err.c, open.c: take declaration of fdopen from rawio.h.
-
-Sat Mar 6 07:09:11 EST 1993
- libi77: uio.c: adjust off-end-of-record test for sequential
-unformatted reads to respond to err= rather than end= .
-
-Sat Mar 6 16:12:47 EST 1993
- Treat scalar arguments of the form (v) and v+0, where v is a variable,
-as expressions: assign to a temporary variable, and pass the latter.
- gram.c updated.
-
-Mon Mar 8 09:35:38 EST 1993
- "f2c.h from f2c" updated to add types logical1 and integer1 for
-LOGICAL*1 and INTEGER*1. ("f2c.h from f2c" is supposed to be the
-same as "f2c.h from f2c/src", which was updated 3 Feb. 1993.)
-
-Mon Mar 8 17:57:55 EST 1993
- Fix rarely seen bug that could cause strange casts in function
-invocations (revealed by an example with msdos/f2c.exe).
- msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only).
-
-Fri Mar 12 12:37:01 EST 1993
- Fix bug with -s in handling subscripts involving min, max, and
-complicated expressions requiring temporaries.
- Fix bug in handling COMMONs that need padding by a char array.
- msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only).
-
-Fri Mar 12 17:16:16 EST 1993
- libf77, libi77: updated for compiling under C++.
-
-Mon Mar 15 16:21:37 EST 1993
- libi77: more minor tweaks (for -DKR_headers); Version.c not changed.
-
-Thu Mar 18 12:37:30 EST 1993
- Flag -r (for discarding carriage-returns on systems that end lines
-with carriage-return/newline pairs, e.g. PCs) added to xsum, and
-xsum.c converted to ANSI/ISO syntax (with K&R syntax available with
--DKR_headers). [When time permits, the f2c source will undergo a
-similar conversion.]
- libi77: tweaks to #includes in endfile.c, err.c, open.c, rawio.h;
-Version.c not changed.
- f2c.ps updated (to pick up revision of 2 Feb. 1993 to f2c.1).
-
-Fri Mar 19 09:19:26 EST 1993
- libi77: add (char *) casts to malloc and realloc invocations
-in err.c, open.c; Version.c not changed.
-
-Tue Mar 30 07:17:15 EST 1993
- Fix bug introduced 6 March 1993: possible memory corruption when
-loops in data statements involve constant subscripts, as in
- DATA (GUNIT(1,I),I=0,14)/15*-1/
-
-Tue Mar 30 16:17:42 EST 1993
- Fix bug with -s: (floating-point array item)*(complex item)
-generates an _subscr() reference for the floating-point array,
-but a #define for the _subscr() was omitted.
-
-Tue Apr 6 12:11:22 EDT 1993
- libi77: adjust error returns for formatted inputs to flush the current
-input line when err= is specified. To restore the old behavior (input
-left mid-line), either adjust the #definition of errfl in fio.h or omit
-the invocation of f__doend in err__fl (in err.c).
-
-Tue Apr 6 13:30:04 EDT 1993
- Fix bug revealed in
- subroutine foo(i)
- call goo(int(i))
- end
-which now passes a copy of i, rather than i itself.
-
-Sat Apr 17 11:41:02 EDT 1993
- Adjust appending of underscores to conform with f2c.ps ("A Fortran
-to C Converter"): names that conflict with C keywords or f2c type
-names now have just one underscore appended (rather than two); add
-"integer1", "logical1", "longint" to the keyword list.
- Append underscores to names that appear in EQUIVALENCE and are
-component names in a structure declared in f2c.h, thus avoiding a
-problem caused by the #defines emitted for equivalences. Example:
- complex a
- equivalence (i,j)
- a = 1 ! a.i went awry because of #define i
- j = 2
- write(*,*) a, i
- end
- Adjust line-breaking logic to avoid splitting very long constants
-(and names). Example:
- ! The next line starts with tab and thus is a free-format line.
- a=.012345689012345689012345689012345689012345689012345689012345689012345689
- end
- Omit extraneous "return 0;" from entry stubs emitted for multiple
-entry points of type character, complex, or double complex.
-
-Sat Apr 17 14:35:05 EDT 1993
- Fix bug (introduced 4 Feb.) in separating -P from -A that kept f2c
-from re-reading a .P file written without -A or -C++ describing a
-routine with an external argument. [See the just-added note about
-separating -P from -A in the changes above for 3 Feb. 1993.]
- Fix bug (type UNKNOWN for V in the example below) revealed by
- subroutine a()
- external c
- call b(c)
- end
- subroutine b(v)
- end
-
-Sun Apr 18 19:55:26 EDT 1993
- Fix wrong calling sequence for mem() in yesterday's addition to
-equiv.c .
-
-Wed Apr 21 17:39:46 EDT 1993
- Fix bug revealed in
-
- ASSIGN 10 TO L1
- GO TO 20
- 10 ASSIGN 30 TO L2
- STOP 10
-
- 20 ASSIGN 10 TO L2 ! Bug here because 10 had been assigned
- ! to another label, then defined.
- GO TO L2
- 30 END
-
-Fri Apr 23 18:38:50 EDT 1993
- Fix bug with -h revealed in
- CHARACTER*9 FOO
- WRITE(FOO,'(I6)') 1
- WRITE(FOO,'(I6)') 2 ! struct icilist io___3 botched
- END
-
-Tue Apr 27 16:08:28 EDT 1993
- Tweak to makefile: remove "size f2c".
-
-Tue May 4 23:48:20 EDT 1993
- libf77: tweak signal_ line of f2ch.add .
-
-Tue Jun 1 13:47:13 EDT 1993
- Fix bug introduced 3 Feb. 1993 in handling multiple entry
-points with differing return types -- the postfix array in proc.c
-needed a new entry for integer*8 (which resulted in wrong
-Multitype suffixes for non-integral types).
- For (default) K&R C, generate VOID rather than int functions for
-functions of Fortran type character, complex, and double complex.
- msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only).
-
-Tue Jun 1 23:11:15 EDT 1993
- f2c.h: add Multitype component g and commented type longint.
- proc.c: omit "return 0;" from stubs for complex and double complex
-entries (when entries have multiple types); add test to avoid memory
-fault with illegal combinations of entry types.
-
-Mon Jun 7 12:00:47 EDT 1993
- Fix memory fault in
- common /c/ m
- integer m(1)
- data m(1)/1/, m(2)/2/ ! one too many initializers
- end
- msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only).
-
-Fri Jun 18 13:55:51 EDT 1993
- libi77: change type of signal_ in f2ch.add; change type of il in
-union Uint from long to integer (for machines like the DEC Alpha,
-where integer should be the same as int). Version.c not changed.
- Tweak gram.dcl and gram.head: add semicolons after some rules that
-lacked them, and remove an extraneous semicolon. These changes are
-completely transparent to our local yacc programs, but apparently
-matter on some VMS systems.
-
-Wed Jun 23 01:02:56 EDT 1993
- Update "fc" shell script, and bring f2c.1 and f2c.1t up to date:
-they're meant to be linked with (i.e., the same as) src/f2c.1 and
-src/f2c.1t . [In the last update of f2c.1* (2 Feb. 1993), only
-src/f2c.1 and src/f2c.1t got changed -- a mistake.]
-
-Wed Jun 23 09:04:31 EDT 1993
- libi77: fix bug in format reversions for internal writes.
-Example:
- character*60 lines(2)
- write(lines,"('n =',i3,2(' more text',i3))") 3, 4, 5, 6
- write(*,*) 'lines(1) = ', lines(1)
- write(*,*) 'lines(2) = ', lines(2)
- end
-gave an error message that began "iio: off end of record", rather
-than giving the correct output:
-
- lines(1) = n = 3 more text 4 more text 5
- lines(2) = more text 6 more text
-
-Thu Aug 5 11:31:14 EDT 1993
- libi77: lread.c: fix bug in handling repetition counts for logical
-data (during list or namelist input). Change struct f__syl to
-struct syl (for buggy compilers).
-
-Sat Aug 7 16:05:30 EDT 1993
- libi77: lread.c (again): fix bug in namelist reading of incomplete
-logical arrays.
- Fix minor calling-sequence errors in format.c, output.c, putpcc.c:
-should be invisible.
-
-Mon Aug 9 09:12:38 EDT 1993
- Fix erroneous cast under -A in translating
- character*(*) function getc()
- getc(2:3)=' ' !wrong cast in first arg to s_copy
- end
- libi77: lread.c: fix bug in namelist reading of an incomplete array
-of numeric data followed by another namelist item whose name starts
-with 'd', 'D', 'e', or 'E'.
-
-Fri Aug 20 13:22:10 EDT 1993
- Fix bug in do while revealed by
- subroutine skdig (line, i)
- character line*(*), ch*1
- integer i
- logical isdigit
- isdigit(ch) = ch.ge.'0' .and. ch.le.'9'
- do while (isdigit(line(i:i))) ! ch__1[0] was set before
- ! "while(...) {...}"
- i = i + 1
- enddo
- end
-
-Fri Aug 27 08:22:54 EDT 1993
- Add #ifdefs to avoid declaring atol when it is a macro; version.c
-not updated.
-
-Wed Sep 8 12:24:26 EDT 1993
- libi77: open.c: protect #include "sys/..." with
-#ifndef NON_UNIX_STDIO; Version date not changed.
-
-Thu Sep 9 08:51:21 EDT 1993
- Adjust "include" to interpret file names relative to the directory
-of the file that contains the "include".
-
-Fri Sep 24 00:56:12 EDT 1993
- Fix offset error resulting from repeating the same equivalence
-statement twice. Example:
- real a(2), b(2)
- equivalence (a(2), b(2))
- equivalence (a(2), b(2))
- end
- Increase MAXTOKENLEN (to roughly the largest allowed by ANSI C).
-
-Mon Sep 27 08:55:09 EDT 1993
- libi77: endfile.c: protect #include "sys/types.h" with
-#ifndef NON_UNIX_STDIO; Version.c not changed.
-
-Fri Oct 15 15:37:26 EDT 1993
- Fix rarely seen parsing bug illustrated by
- subroutine foo(xabcdefghij)
- character*(*) xabcdefghij
- IF (xabcdefghij.NE.'##') GOTO 40
- 40 end
-in which the spacing in the IF line is crucial.
-
-Thu Oct 21 13:55:11 EDT 1993
- Give more meaningful error message (then "unexpected character in
-cds") when constant simplification leads to Infinity or NaN.
-
-Wed Nov 10 15:01:05 EST 1993
- libi77: backspace.c: adjust, under -DMSDOS, to cope with MSDOS
-text files, as handled by some popular PC C compilers. Beware:
-the (defective) libraries associated with these compilers assume lines
-end with \r\n (conventional MS-DOS text files) -- and ftell (and
-hence the current implementation of backspace) screws up if lines with
-just \n.
-
-Thu Nov 18 09:37:47 EST 1993
- Give a better error (than "control stack empty") for an extraneous
-ENDDO. Example:
- enddo
- end
- Update comments about ftp in "readme from f2c".
-
-Sun Nov 28 17:26:50 EST 1993
- Change format of time stamp in version.c to yyyymmdd.
- Sort parameter adjustments (or complain of impossible dependencies)
-so that dummy arguments are referenced only after being adjusted.
-Example:
- subroutine foo(a,b)
- integer a(2) ! a must be adjusted before b
- double precision b(a(1),a(2))
- call goo(b(3,4))
- end
- Adjust structs for initialized common blocks and equivalence classes
-to omit the trailing struct component added to force alignment when
-padding already forces the desired alignment. Example:
- PROGRAM TEST
- COMMON /Z/ A, CC
- CHARACTER*4 CC
- DATA cc /'a'/
- END
-now gives
- struct {
- integer fill_1[1];
- char e_2[4];
- } z_ = { {0}, {'a', ' ', ' ', ' '} };
-rather than
-struct {
- integer fill_1[1];
- char e_2[4];
- real e_3;
- } z_ = { {0}, {'a', ' ', ' ', ' '}, (float)0. };
-
-Wed Dec 8 16:24:43 EST 1993
- Adjust lex.c to recognize # nnn "filename" lines emitted by cpp;
-this affects the file names and line numbers in error messages and
-the #line lines emitted under -g.
- Under -g, arrange for a file that starts with an executable
-statement to have the first #line line indicate line 1, rather
-than the line number of the END statement ending the main program.
- Adjust fc script to run files ending in .F through /lib/cpp.
- Fix bug ("Impossible tag 2") in
- if (t .eq. (0,2)) write(*,*) 'Bug!'
- end
- libi77: iio.c: adjust internal formatted reads to treat short records
-as though padded with blanks (rather than causing an "off end of record"
-error).
-
-Wed Dec 15 15:19:15 EST 1993
- fc: adjusted for .F files to pass -D and -I options to cpp.
-
-Fri Dec 17 20:03:38 EST 1993
- Fix botch introduced 28 Nov. 1993 in vax.c; change "version of"
-to "version".
-
-Tue Jan 4 15:39:52 EST 1994
- msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only).
-
-Wed Jan 19 08:55:19 EST 1994
- Arrange to accept
- integer Nx, Ny, Nz
- parameter (Nx = 10, Ny = 20)
- parameter (Nz = max(Nx, Ny))
- integer c(Nz)
- call foo(c)
- end
-rather than complaining "Declaration error for c: adjustable dimension
-on non-argument". The necessary changes cause some hitherto unfolded
-constant expressions to be folded.
- Accept BYTE as a synonym for INTEGER*1.
-
-Thu Jan 27 08:57:40 EST 1994
- Fix botch in changes of 19 Jan. 1994 that broke entry points with
-multi-dimensional array arguments that did not appear in the subprogram
-argument list and whose leading dimensions depend on arguments.
-
-Mon Feb 7 09:24:30 EST 1994
- Remove artifact in "fc" script that caused -O to be ignored:
- 87c87
- < # lcc ignores -O...
- ---
- > CFLAGS="$CFLAGS $O"
-
-Sun Feb 20 17:04:58 EST 1994
- Fix bugs reading .P files for routines with arguments of type
-INTEGER*1, INTEGER*8, LOGICAL*2.
- Fix glitch in reporting inconsistent arguments for routines involving
-character arguments: "arg n" had n too large by the number of
-character arguments.
-
-Tue Feb 22 20:50:08 EST 1994
- Trivial changes to data.c format.c main.c niceprintf.c output.h and
-sysdep.h (consistency improvements).
- libI77: lread.c: check for NULL return from realloc.
-
-Fri Feb 25 23:56:08 EST 1994
- output.c, sysdep.h: arrange for -DUSE_DTOA to use dtoa.c and g_fmt.c
-for correctly rounded decimal values on IEEE-arithmetic machines
-(plus machines with VAX and IBM-mainframe arithmetic). These
-routines are available from netlib's fp directory.
- msdos/f2cx.exe.Z and msdos/f2c.exe.Z updated (ftp access only); the
-former uses -DUSE_DTOA to keep 12 from printing as 12.000000000000001.
- vax.c: fix wrong arguments to badtag and frchain introduced
-28 Nov. 1993.
- Source for f2c converted to ANSI/ISO format, with the K&R format
-available by compilation with -DKR_headers .
- Arrange for (double precision expression) relop (single precision
-constant) to retain the single-precision nature of the constant.
-Example:
- double precision t
- if (t .eq. 0.3) ...
-
-Mon Feb 28 11:40:24 EST 1994
- README updated to reflect a modification just made to netlib's
-"dtoa.c from fp":
-96a97,105
-> Also add the rule
->
-> dtoa.o: dtoa.c
-> $(CC) -c $(CFLAGS) -DMALLOC=ckalloc -DIEEE... dtoa.c
->
-> (without the initial tab) to the makefile, where IEEE... is one of
-> IEEE_MC68k, IEEE_8087, VAX, or IBM, depending on your machine's
-> arithmetic. See the comments near the start of dtoa.c.
->
-
-Sat Mar 5 09:41:52 EST 1994
- Complain about functions with the name of a previously declared
-common block (which is illegal).
- New option -d specifies the directory for output .c and .P files;
-f2c.1 and f2c.1t updated. The former undocumented debug option -dnnn
-is now -Dnnn.
-
-Thu Mar 10 10:21:44 EST 1994
- libf77: add #undef min and #undef max lines to s_paus.c s_stop.c
-and system_.c; Version.c not changed.
- libi77: add -DPad_UDread lines to uio.c and explanation to README:
- Some buggy Fortran programs use unformatted direct I/O to write
- an incomplete record and later read more from that record than
- they have written. For records other than the last, the unwritten
- portion of the record reads as binary zeros. The last record is
- a special case: attempting to read more from it than was written
- gives end-of-file -- which may help one find a bug. Some other
- Fortran I/O libraries treat the last record no differently than
- others and thus give no help in finding the bug of reading more
- than was written. If you wish to have this behavior, compile
- uio.c with -DPad_UDread .
-Version.c not changed.
-
-Tue Mar 29 17:27:54 EST 1994
- Adjust make_param so dimensions involving min, max, and other
-complicated constant expressions do not provoke error messages
-about adjustable dimensions on non-arguments.
- Fix botch introduced 19 Jan 1994: "adjustable dimension on non-
-argument" messages could cause some things to be freed twice.
-
-Tue May 10 07:55:12 EDT 1994
- Trivial changes to exec.c, p1output.c, parse_args.c, proc.c,
-and putpcc.c: change arguments from
- type foo[]
-to
- type *foo
-for consistency with defs.h. For most compilers, this makes no
-difference.
-
-Thu Jun 2 12:18:18 EDT 1994
- Fix bug in handling FORMAT statements that have adjacent character
-(or Hollerith) strings: an extraneous \002 appeared between the
-strings.
- libf77: under -DNO_ONEXIT, arrange for f_exit to be called just
-once; previously, upon abnormal termination (including stop statements),
-it was called twice.
-
-Mon Jun 6 15:52:57 EDT 1994
- libf77: Avoid references to SIGABRT and SIGIOT if neither is defined;
-Version.c not changed.
- libi77: Add cast to definition of errfl() in fio.h; this only matters
-on systems with sizeof(int) < sizeof(long). Under -DNON_UNIX_STDIO,
-use binary mode for direct formatted files (to avoid any confusion
-connected with \n characters).
-
-Fri Jun 10 16:47:31 EDT 1994
- Fix bug under -A in handling unreferenced (and undeclared)
-external arguments in subroutines with multiple entry points. Example:
- subroutine m(fcn,futil)
- external fcn,futil
- call fcn
- entry mintio(i1) ! (D_fp)0 rather than (U_fp)0 for futil
- end
-
-Wed Jun 15 10:38:14 EDT 1994
- Allow char(constant expression) function in parameter declarations.
-(This was probably broken in the changes of 29 March 1994.)
-
-Fri Jul 1 23:54:00 EDT 1994
- Minor adjustments to makefile (rule for f2c.1 commented out) and
-sysdep.h (#undef KR_headers if __STDC__ is #defined, and base test
-for ANSI_Libraries and ANSI_Prototypes on KR_headers rather than
-__STDC__); version.c touched but not changed.
- libi77: adjust fp.h so local.h is only needed under -DV10;
-Version.c not changed.
-
-Tue Jul 5 03:05:46 EDT 1994
- Fix segmentation fault in
- subroutine foo(a,b,k)
- data i/1/
- double precision a(k,1) ! sequence error: must precede data
- b = a(i,1)
- end
- libi77: Fix bug (introduced 6 June 1994?) in reopening files under
-NON_UNIX_STDIO.
- Fix some error messages caused by illegal Fortran. Examples:
-* 1.
- x(i) = 0 !Missing declaration for array x
- call f(x) !Said Impossible storage class 8 in routine mkaddr
- end !Now says invalid use of statement function x
-* 2.
- f = g !No declaration for g; by default it's a real variable
- call g !Said invalid class code 2 for function g
- end !Now says g cannot be called
-* 3.
- intrinsic foo !Invalid intrinsic name
- a = foo(b) !Said intrcall: bad intrgroup 0
- end !Now just complains about line 1
-
-Tue Jul 5 11:14:26 EDT 1994
- Fix glitch in handling erroneous statement function declarations.
-Example:
- a(j(i) - i) = a(j(i) - i) + 1 ! bad statement function
- call foo(a(3)) ! Said Impossible type 0 in routine mktmpn
- end ! Now warns that i and j are not used
-
-Wed Jul 6 17:31:25 EDT 1994
- Tweak test for statement functions that (illegally) call themselves;
-f2c will now proceed to check for other errors, rather than bailing
-out at the first recursive statement function reference.
- Warn about but retain divisions by 0 (instead of calling them
-"compiler errors" and quiting). On IEEE machines, this permits
- double precision nan, ninf, pinf
- nan = 0.d0/0.d0
- pinf = 1.d0/0.d0
- ninf = -1.d0/0.d0
- write(*,*) 'nan, pinf, ninf = ', nan, pinf, ninf
- end
-to print
- nan, pinf, ninf = NaN Infinity -Infinity
- libi77: wref.c: protect with #ifdef GOOD_SPRINTF_EXPONENT an
-optimization that requires exponents to have 2 digits when 2 digits
-suffice. lwrite.c wsfe.c (list and formatted external output):
-omit ' ' carriage-control when compiled with -DOMIT_BLANK_CC .
-Off-by-one bug fixed in character count for list output of character
-strings. Omit '.' in list-directed printing of Nan, Infinity.
-
-Mon Jul 11 13:05:33 EDT 1994
- src/gram.c updated.
-
-Tue Jul 12 10:24:42 EDT 1994
- libi77: wrtfmt.c: under G11.4, write 0. as " .0000 " rather
-than " .0000E+00".
-
-Thu Jul 14 17:55:46 EDT 1994
- Fix glitch in changes of 6 July 1994 that could cause erroneous
-"division by zero" warnings (or worse). Example:
- subroutine foo(a,b)
- y = b
- a = a / y ! erroneous warning of division by zero
- end
-
-Mon Aug 1 16:45:17 EDT 1994
- libi77: lread.c rsne.c: for benefit of systems with a buggy stdio.h,
-declare ungetc when neither KR_headers nor ungetc is #defined.
-Version.c not changed.
-
-Wed Aug 3 01:53:00 EDT 1994
- libi77: lwrite.c (list output): do not insert a newline when
-appending an oversize item to an empty line.
-
-Mon Aug 8 00:51:01 EDT 1994
- Fix bug (introduced 3 Feb. 1993) that, under -i2, kept LOGICAL*2
-variables from appearing in INQUIRE statements. Under -I2, allow
-LOGICAL*4 variables to appear in INQUIRE. Fix intrinsic function
-LEN so it returns a short value under -i2, a long value otherwise.
- exec.c: fix obscure memory fault possible with bizarre (and highly
-erroneous) DO-loop syntax.
-
-Fri Aug 12 10:45:57 EDT 1994
- libi77: fix glitch that kept ERR= (in list- or format-directed input)
-from working after a NAMELIST READ.
-
-Thu Aug 25 13:58:26 EDT 1994
- Suppress -s when -C is specified.
- Give full pathname (netlib@research.att.com) for netlib in readme and
-src/README.
-
-Wed Sep 7 22:13:20 EDT 1994
- libi77: typesize.c: adjust to allow types LOGICAL*1, LOGICAL*2,
-INTEGER*1, and (under -DAllow_TYQUAD) INTEGER*8 in NAMELISTs.
-
-Fri Sep 16 17:50:18 EDT 1994
- Change name adjustment for reserved words: instead of just appending
-"_" (a single underscore), append "_a_" to local variable names to avoid
-trouble when a common block is named a reserved word and the same
-reserved word is also a local variable name. Example:
- common /const/ a,b,c
- real const(3)
- equivalence (const(1),a)
- a = 1.234
- end
- Arrange for ichar() to treat characters as unsigned.
- libf77: s_cmp.c: treat characters as unsigned in comparisons.
-These changes for unsignedness only matter for strings that contain
-non-ASCII characters. Now ichar() should always be >= 0.
-
-Sat Sep 17 11:19:32 EDT 1994
- fc: set rc=$? before exit (to get exit code right in trap code).
-
-Mon Sep 19 17:49:43 EDT 1994
- libf77: s_paus.c: flush stderr after PAUSE; add #ifdef MSDOS stuff.
- libi77: README: point out general need for -DMSDOS under MS-DOS.
-
-Tue Sep 20 11:42:30 EDT 1994
- Fix bug in comparing identically named common blocks, in which
-all components have the same names and types, but at least one is
-dimensioned (1) and the other is not dimensioned. Example:
- subroutine foo
- common /ab/ a
- a=1. !!! translated correctly to ab_1.a = (float)1.;
- end
- subroutine goo
- common /ab/ a(1)
- a(1)=2. !!! translated erroneously to ab_1.a[0] = (float)2.
- end
-
-Tue Sep 27 23:47:34 EDT 1994
- Fix bug introduced 16 Sept. 1994: don't add _a_ to C keywords
-used as external names. In fact, return to earlier behavior of
-appending __ to C keywords unless they are used as external names,
-in which case they get just one underscore appended.
- Adjust constant handling so integer and logical PARAMETERs retain
-type information, particularly under -I2. Example:
- SUBROUTINE FOO
- INTEGER I
- INTEGER*1 I1
- INTEGER*2 I2
- INTEGER*4 I4
- LOGICAL L
- LOGICAL*1 L1
- LOGICAL*2 L2
- LOGICAL*4 L4
- PARAMETER (L=.FALSE., L1=.FALSE., L2=.FALSE., L4=.FALSE.)
- PARAMETER (I=0,I1=0,I2=0,I4=0)
- CALL DUMMY(I, I1, I2, I4, L, L1, L2, L4)
- END
- f2c.1t: Change f\^2c to f2c (omit half-narrow space) in line following
-".SH NAME" for benefit of systems that cannot cope with troff commands
-in this context.
-
-Wed Sep 28 12:45:19 EDT 1994
- libf77: s_cmp.c fix glitch in -DKR_headers version introduced
-12 days ago.
-
-Thu Oct 6 09:46:53 EDT 1994
- libi77: util.c: omit f__mvgbt (which is never used).
- f2c.h: change "long" to "long int" to facilitate the adjustments
-by means of sed described above. Comment out unused typedef of Long.
-
-Fri Oct 21 18:02:24 EDT 1994
- libf77: add s_catow.c and adjust README to point out that changing
-"s_cat.o" to "s_catow.o" in the makefile will permit the target of a
-concatenation to appear on its right-hand side (contrary to the
-Fortran 77 Standard and at the cost of some run-time efficiency).
-
-Wed Nov 2 00:03:58 EST 1994
- Adjust -g output to contain only one #line line per statement,
-inserting \ before the \n ending lines broken because of their
-length [this insertion was recanted 10 Dec. 1994]. This change
-accommodates an idiocy in the ANSI/ISO C standard, which leaves
-undefined the behavior of #line lines that occur within the arguments
-to a macro call.
-
-Wed Nov 2 14:44:27 EST 1994
- libi77: under compilation with -DALWAYS_FLUSH, flush buffers at
-the end of each write statement, and test (via the return from
-fflush) for write failures, which can be caught with an ERR=
-specifier in the write statement. This extra flushing slows
-execution, but can abort execution or alter the flow of control
-when a disk fills up.
- f2c/src/io.c: Add ERR= test to e_wsle invocation (end of
-list-directed external output) to catch write failures when libI77
-is compiled with -DALWAYS_FLUSH.
-
-Thu Nov 3 10:59:13 EST 1994
- Fix bug in handling dimensions involving certain intrinsic
-functions of constant expressions: the expressions, rather than
-pointers to them, were passed. Example:
- subroutine subtest(n,x)
- real x(2**n,n) ! pow_ii(2,n) was called; now it's pow_ii(&c__2,n)
- x(2,2)=3.
- end
-
-Tue Nov 8 23:56:30 EST 1994
- malloc.c: remove assumption that only malloc calls sbrk. This
-appears to make malloc.c useful on RS6000 systems.
-
-Sun Nov 13 13:09:38 EST 1994
- Turn off constant folding of integers used in floating-point
-expressions, so the assignment in
- subroutine foo(x)
- double precision x
- x = x*1000000*500000
- end
-is rendered as
- *x = *x * 1000000 * 500000;
-rather than as
- *x *= 1783793664;
-
-Sat Dec 10 16:31:40 EST 1994
- Supply a better error message (than "Impossible type 14") for
- subroutine foo
- foo = 3
- end
- Under -g, convey name of included files to #line lines.
- Recant insertion of \ introduced (under -g) 2 Nov. 1994.
-
-Thu Dec 15 14:33:55 EST 1994
- New command-line option -Idir specifies directories in which to
-look for non-absolute include files (after looking in the directory
-of the current input file). There can be several -Idir options, each
-specifying one directory. All -Idir options are considered, from
-left to right, until a suitably named file is found. The -I2 and -I4
-command-line options have precedence, so directories named 2 or 4
-must be spelled by some circumlocation, such as -I./2 .
- f2c.ps updated to mention the new -Idir option, correct a typo,
-and bring the man page at the end up to date.
- lex.c: fix bug in reading line numbers in #line lines.
- fc updated to pass -Idir options to f2c.
-
-Thu Dec 29 09:48:03 EST 1994
- Fix bug (e.g., addressing fault) in diagnosing inconsistency in
-the type of function eta in the following example:
- function foo(c1,c2)
- double complex foo,c1,c2
- double precision eta
- foo = eta(c1,c2)
- end
- function eta(c1,c2)
- double complex eta,c1,c2
- eta = c1*c2
- end
-
-Mon Jan 2 13:27:26 EST 1995
- Retain casts for SNGL (or FLOAT) that were erroneously optimized
-away. Example:
- subroutine foo(a,b)
- double precision a,b
- a = float(b) ! now rendered as *a = (real) (*b);
- end
- Use float (rather than double) temporaries in certain expressions
-of type complex. Example: the temporary for sngl(b) in
- complex a
- double precision b
- a = sngl(b) - (3.,4.)
-is now of type float.
-
-Fri Jan 6 00:00:27 EST 1995
- Adjust intrinsic function cmplx to act as dcmplx (returning
-double complex rather than complex) if either of its args is of
-type double precision. The double temporaries used prior to 2 Jan.
-1995 previously gave it this same behavior.
-
-Thu Jan 12 12:31:35 EST 1995
- Adjust -krd to use double temporaries in some calculations of
-type complex.
- libf77: pow_[dhiqrz][hiq].c: adjust x**i to work on machines
-that sign-extend right shifts when i is the most negative integer.
-
-Wed Jan 25 00:14:42 EST 1995
- Fix memory fault in handling overlapping initializations in
- block data
- common /zot/ d
- double precision d(3)
- character*6 v(4)
- real r(2)
- equivalence (d(3),r(1)), (d(1),v(1))
- data v/'abcdef', 'ghijkl', 'mnopqr', 'stuvwx'/
- data r/4.,5./
- end
- names.c: add "far", "huge", "near" to c_keywords (causing them
-to have __ appended when used as local variables).
- libf77: add s_copyow.c, an alternative to s_copy.c for handling
-(illegal) character assignments where the right- and left-hand
-sides overlap, as in a(2:4) = a(1:3).
-
-Thu Jan 26 14:21:19 EST 1995
- libf77: roll s_catow.c and s_copyow.c into s_cat.c and s_copy.c,
-respectively, allowing the left-hand side of a character assignment
-to appear on its right-hand side unless s_cat.c and s_copy.c are
-compiled with -DNO_OVERWRITE (which is a bit more efficient).
-Fortran 77 forbids the left-hand side from participating in the
-right-hand side (of a character assignment), but Fortran 90 allows it.
- libi77: wref.c: fix glitch in printing the exponent of 0 when
-GOOD_SPRINTF_EXPONENT is not #defined.
-
-Fri Jan 27 12:25:41 EST 1995
- Under -C++ -ec (or -C++ -e1c), surround struct declarations with
- #ifdef __cplusplus
- extern "C" {
- #endif
-and
- #ifdef __cplusplus
- }
- #endif
-(This isn't needed with cfront, but apparently is necessary with
-some other C++ compilers.)
- libf77: minor tweak to s_copy.c: copy forward whenever possible
-(for better cache behavior).
-
-Wed Feb 1 10:26:12 EST 1995
- Complain about parameter statements that assign values to dummy
-arguments, as in
- subroutine foo(x)
- parameter(x = 3.4)
- end
-
-Sat Feb 4 20:22:02 EST 1995
- fc: omit "lib=/lib/num/lib.lo".
-
-Wed Feb 8 08:41:14 EST 1995
- Minor changes to exec.c, putpcc.c to avoid "bad tag" or "error
-in frexpr" with certain invalid Fortran.
-
-Sat Feb 11 08:57:39 EST 1995
- Complain about integer overflows, both in simplifying integer
-expressions, and in converting integers from decimal to binary.
- Fix a memory fault in putcx1() associated with invalid input.
-
-Thu Feb 23 11:20:59 EST 1995
- Omit MAXTOKENLEN; realloc token if necessary (to handle very long
-strings).
-
-Fri Feb 24 11:02:00 EST 1995
- libi77: iio.c: z_getc: insert (unsigned char *) to allow internal
-reading of characters with high-bit set (on machines that sign-extend
-characters).
-
-Tue Mar 14 18:22:42 EST 1995
- Fix glitch (in io.c) in handling 0-length strings in format
-statements, as in
- write(*,10)
- 10 format(' ab','','cd')
- libi77: lread.c and rsfe.c: adjust s_rsle and s_rsfe to check for
-end-of-file (to prevent infinite loops with empty read statements).
-
-Wed Mar 22 10:01:46 EST 1995
- f2c.ps: adjust discussion of -P on p. 7 to reflect a change made
-3 Feb. 1993: -P no longer implies -A.
-
-Fri Apr 21 18:35:00 EDT 1995
- fc script: remove absolute paths (since PATH specifies only standard
-places). On most systems, it's still necessary to adjust the PATH
-assignment at the start of fc to fit the local conventions.
-
-Fri May 26 10:03:17 EDT 1995
- fc script: add recognition of -P and .P files.
- libi77: iio.c: z_wnew: fix bug in handling T format items in internal
-writes whose last item is written to an earlier position than some
-previous item.
-
-Wed May 31 11:39:48 EDT 1995
- libf77: added subroutine exit(rc) (with integer return code rc),
-which works like a stop statement but supplies rc as the program's
-return code.
-
-Fri Jun 2 11:56:50 EDT 1995
- Fix memory fault in
- parameter (x=2.)
- data x /2./
- end
-This now elicits two error messages; the second ("too many
-initializers"), though not desirable, seems hard to eliminate
-without considerable hassle.
-
-Mon Jul 17 23:24:20 EDT 1995
- Fix botch in simplifying constants in certain complex
-expressions. Example:
- subroutine foo(s,z)
- double complex z
- double precision s, M, P
- parameter ( M = 100.d0, P = 2.d0 )
- z = M * M / s * dcmplx (1.d0, P/M)
-*** The imaginary part of z was miscomputed ***
- end
- Under -ext, complain about nonintegral dimensions.
-
-Fri Jul 21 11:18:36 EDT 1995
- Fix glitch on line 159 of init.c: change
- "(shortlogical *)0)",
-to
- "(shortlogical *)0",
-This affects multiple entry points when some but not all have
-arguments of type logical*2.
- libi77: adjust lwrite.c, wref.c, wrtfmt.c so compiling with
--DWANT_LEAD_0 causes formatted writes of floating-point numbers of
-magnitude < 1 to have an explicit 0 before the decimal point (if the
-field-width permits it). Note that the Fortran 77 Standard leaves it
-up to the implementation whether to supply these superfluous zeros.
-
-Tue Aug 1 09:25:56 EDT 1995
- Permit real (or double precision) parameters in dimension expressions.
-
-Mon Aug 7 08:04:00 EDT 1995
- Append "_eqv" rather than just "_" to names that that appear in
-EQUIVALENCE statements as well as structs in f2c.h (to avoid a
-conflict when these names also name common blocks).
-
-Tue Aug 8 12:49:02 EDT 1995
- Modify yesterday's change: merge st_fields with c_keywords, to
-cope with equivalences introduced to permit initializing numeric
-variables with character data. DATA statements causing these
-equivalences can appear after executable statements, so the only
-safe course is to rename all local variable with names in the
-former st_fields list. This has the unfortunate side effect that
-the common local variable "i" will henceforth be renamed "i__".
-
-Wed Aug 30 00:19:32 EDT 1995
- libf77: add F77_aloc, now used in s_cat and system_ (to allocate
-memory and check for failure in so doing).
- libi77: improve MSDOS logic in backspace.c.
-
-Wed Sep 6 09:06:19 EDT 1995
- libf77: Fix return type of system_ (integer) under -DKR_headers.
- libi77: Move some f_init calls around for people who do not use
-libF77's main(); now open and namelist read statements that are the
-first I/O statements executed should work right in that context.
-Adjust namelist input to treat a subscripted name whose subscripts do
-not involve colons similarly to the name without a subscript: accept
-several values, stored in successive elements starting at the
-indicated subscript. Adjust namelist output to quote character
-strings (avoiding confusion with arrays of character strings).
-
-Thu Sep 7 00:36:04 EDT 1995
- Fix glitch in integer*8 exponentiation function: it's pow_qq, not
-pow_qi.
- libi77: fix some bugs with -DAllow_TYQUAD (for integer*8); when
-looking for the &name that starts NAMELIST input, treat lines whose
-first nonblank character is something other than &, $, or ? as
-comment lines (i.e., ignore them), unless rsne.c is compiled with
--DNo_Namelist_Comments.
-
-Thu Sep 7 09:05:40 EDT 1995
- libi77: rdfmt.c: one more tweak for -DAllow_TYQUAD.
-
-Tue Sep 19 00:03:02 EDT 1995
- Adjust handling of floating-point subscript bounds (a questionable
-f2c extension) so subscripts in the generated C are of integral type.
- Move #define of roundup to proc.c (where its use is commented out);
-version.c left at 19950918.
-
-Wed Sep 20 17:24:19 EDT 1995
- Fix bug in handling ichar() under -h.
-
-Thu Oct 5 07:52:56 EDT 1995
- libi77: wrtfmt.c: fix bug with t editing (f__cursor was not always
-zeroed in mv_cur).
-
-Tue Oct 10 10:47:54 EDT 1995
- Under -ext, warn about X**-Y and X**+Y. Following the original f77,
-f2c treats these as X**(-Y) and X**(+Y), respectively. (They are not
-allowed by the official Fortran 77 Standard.) Some Fortran compilers
-give a bizarre interpretation to larger contexts, making multiplication
-noncommutative: they treat X**-Y*Z as X**(-Y*Z) rather than X**(-Y)*Z,
-which, following the rules of Fortran 77, is the same as (X**(-Y))*Z.
-
-Wed Oct 11 13:27:05 EDT 1995
- libi77: move defs of f__hiwater, f__svic, f__icptr from wrtfmt.c
-to err.c. This should work around a problem with buggy loaders and
-sometimes leads to smaller executable programs.
-
-Sat Oct 21 23:54:22 EDT 1995
- Under -h, fix bug in the treatment of ichar('0') in arithmetic
-expressions.
- Demote to -dneg (a new command-line option not mentioned in the
-man page) imitation of the original f77's treatment of unary minus
-applied to a REAL operand (yielding a DOUBLE PRECISION result).
-Previously this imitation (which was present for debugging) occurred
-under (the default) -!R. It is still suppressed by -R.
-
-Tue Nov 7 23:52:57 EST 1995
- Adjust assigned GOTOs to honor SAVE declarations.
- Add comments about ranlib to lib[FI]77/README and makefile.
-
-Tue Dec 19 22:54:06 EST 1995
- libf77: s_cat.c: fix bug when 2nd or later arg overlaps lhs.
-
-Tue Jan 2 17:54:00 EST 1996
- libi77: rdfmt.c: move #include "ctype.h" up before "stdlib.h"; no
-change to Version.c.
-
-Sun Feb 25 22:20:20 EST 1996
- Adjust expr.c to permit raising the integer constants 1 and -1 to
-negative constant integral powers.
- Avoid faulting when -T and -d are not followed by a directory name
-(immediately, without intervening spaces).
-
-Wed Feb 28 12:49:01 EST 1996
- Fix a glitch in handling complex parameters assigned a "wrong" type.
-Example:
- complex d, z
- parameter(z = (0d0,0d0))
- data d/z/ ! elicited "non-constant initializer"
- call foo(d)
- end
-
-Thu Feb 29 00:53:12 EST 1996
- Fix bug in handling character parameters assigned a char() value.
-Example:
- character*2 b,c
- character*1 esc
- parameter(esc = char(27))
- integer i
- data (b(i:i),i=1,2)/esc,'a'/
- data (c(i:i),i=1,2)/esc,'b'/ ! memory fault
- call foo(b,c)
- end
-
-Fri Mar 1 23:44:51 EST 1996
- Fix glitch in evaluating .EQ. and .NE. when both operands are
-logical constants (.TRUE. or .FALSE.).
-
-Fri Mar 15 17:29:54 EST 1996
- libi77: lread.c, rsfe.c: honor END= in READ stmts with empty iolist.
-
-Tue Mar 19 23:08:32 EST 1996
- lex.c: arrange for a "statement" consisting of a single short bogus
-keyword to elicit an error message showing the whole keyword. The
-error message formerly omitted the last letter of the bad keyword.
- libf77: s_cat.c: supply missing break after overlap detection.
-
-Mon May 13 23:35:26 EDT 1996
- Recognize Fortran 90's /= as a synonym for .NE.. (<> remains a
-synonym for .NE..)
- Emit an empty int function of no arguments to supply an external
-name to named block data subprograms (so they can be called somewhere
-to force them to be loaded from a library).
- Fix bug (memory fault) in handling the following illegal Fortran:
- parameter(i=1)
- equivalence(i,j)
- end
- Treat cdabs, cdcos, cdexp, cdlog, cdsin, and cdsqrt as synonyms for
-the double complex intrinsics zabs, zcos, zexp, zlog, zsin, and zsqrt,
-respectively, unless -cd is specified.
- Recognize the Fortran 90 bit-manipulation intrinsics btest, iand,
-ibclr, ibits, ibset, ieor, ior, ishft, and ishftc, unless -i90 is
-specified. Note that iand, ieor, and ior are thus now synonyms for
-"and", "xor", and "or", respectively.
- Add three macros (bit_test, bit_clear, bit_set) to f2c.h for use
-with btest, ibclr, and ibset, respectively. Add new functions
-[lq]bit_bits, [lq]bit_shift, and [lq]_bit_cshift to libF77 for
-use with ibits, ishft, and ishftc, respectively.
- Add integer function ftell(unit) (returning -1 on error) and
-subroutine fseek(unit, offset, whence, *) to libI77 (with branch to
-label * on error).
-
-Tue May 14 23:21:12 EDT 1996
- Fix glitch (possible memory fault, or worse) in handling multiple
-entry points with names over 28 characters long.
-
-Mon Jun 10 01:20:16 EDT 1996
- Update netlib E-mail and ftp addresses in f2c/readme and
-f2c/src/readme (which are different files) -- to reflect the upcoming
-breakup of AT&T.
- libf77: trivial tweaks to F77_aloc.c and system_.c; Version.c not
-changed.
- libi77: Adjust rsli.c and lread.c so internal list input with too
-few items in the input string will honor end= .
-
-Mon Jun 10 22:59:57 EDT 1996
- Add Bits_per_Byte to sysdep.h and adjust definition of Table_size
-to depend on Bits_per_Byte (forcing Table_size to be a power of 2); in
-lex.c, change "comstart[c & 0xfff]" to "comstart[c & (Table_size-1)]"
-to avoid an out-of-range subscript on end-of-file.
-
-Wed Jun 12 00:24:28 EDT 1996
- Fix bug in output.c (dereferencing a freed pointer) revealed in
- print * !np in out_call in output.c clobbered by free
- end !during out_expr.
-
-Wed Jun 19 08:12:47 EDT 1996
- f2c.h: add types uinteger, ulongint (for libF77); add qbit_clear
-and qbit_set macros (in a commented-out section) for integer*8.
- For integer*8, use qbit_clear and qbit_set for ibclr and ibset.
- libf77: add casts to unsigned in [lq]bitshft.c.
-
-Thu Jun 20 13:30:43 EDT 1996
- Complain at character*(*) in common (rather than faulting).
- Fix bug in recognizing hex constants that start with "16#" (e.g.,
-16#1234abcd, which is a synonym for z'1234abcd').
- Fix bugs in constant folding of expressions involving btest, ibclr,
-and ibset.
- Fix bug in constant folding of rshift(16#80000000, -31) (on a 32-bit
-machine; more generally, the bug was in constant folding of
-rshift(ibset(0,NBITS-1), 1-NBITS) when f2c runs on a machine with
-long ints having NBITS bits.
-
-Mon Jun 24 07:58:53 EDT 1996
- Adjust struct Literal and newlabel() function to accommodate huge
-source files (with more than 32767 newlabel() invocations).
- Omit .c file when the .f file has a missing final end statement.
-
-Wed Jun 26 14:00:02 EDT 1996
- libi77: Add discussion of MXUNIT (highest allowed Fortran unit number)
-to libI77/README.
-
-Fri Jun 28 14:16:11 EDT 1996
- Fix glitch with -onetrip: the temporary variable used for nonconstant
-initial loop variable values was recycled too soon. Example:
- do i = j+1, k
- call foo(i+1) ! temp for j+1 was reused here
- enddo
- end
-
-Tue Jul 2 16:11:27 EDT 1996
- formatdata.c: add a 0 to the end of the basetype array (for TYBLANK)
-(an omission that was harmless on most machines).
- expr.c: fix a dereference of NULL that was only possible with buggy
-input, such as
- subroutine $sub(s) ! the '$' is erroneous
- character s*(*)
- s(1:) = ' '
- end
-
-Sat Jul 6 00:44:56 EDT 1996
- Fix glitch in the intrinsic "real" function when applied to a
-complex (or double complex) variable and passed as an argument to
-some intrinsic functions. Example:
- complex a
- b = sqrt(a)
- end
- Fix glitch (only visible if you do not use f2c's malloc and the
-malloc you do use is defective in the sense that malloc(0) returns 0)
-in handling include files that end with another include (perhaps
-followed by comments).
- Fix glitch with character*(*) arguments named "h" and "i" when
-the body of the subroutine invokes the intrinsic LEN function.
- Arrange that after a previous "f2c -P foo.f" has produced foo.P,
-running "f2c foo.P foo.f" will produce valid C when foo.f contains
- call sub('1234')
- end
- subroutine sub(msg)
- end
-Specifically, the length argument in "call sub" is now suppressed.
-With or without foo.P, it is also now suppressed when the order of
-subprograms in file foo.f is reversed:
- subroutine sub(msg)
- end
- call sub('1234')
- end
- Adjust copyright notices to reflect AT&T breakup.
-
-Wed Jul 10 09:25:49 EDT 1996
- Fix bug (possible memory fault) in handling erroneously placed
-and inconsistent declarations. Example that faulted:
- character*1 w(8)
- call foo(w)
- end
- subroutine foo(m)
- data h /0.5/
- integer m(2) ! should be before data
- end
- Fix bug (possible fault) in handling illegal "if" constructions.
-Example (that faulted):
- subroutine foo(i,j)
- if (i) then ! bug: i is integer, not logical
- else if (j) then ! bug: j is integer, not logical
- endif
- end
- Fix glitch with character*(*) argument named "ret_len" to a
-character*(*) function.
-
-Wed Jul 10 23:04:16 EDT 1996
- Fix more glitches in the intrinsic "real" function when applied to a
-complex (or double complex) variable and passed as an argument to
-some intrinsic functions. Example:
- complex a, b
- r = sqrt(real(conjg(a))) + sqrt(real(a*b))
- end
-
-Thu Jul 11 17:27:16 EDT 1996
- Fix a memory fault associated with complicated, illegal input.
-Example:
- subroutine goo
- character a
- call foo(a) ! inconsistent with subsequent def and call
- end
- subroutine foo(a)
- end
- call foo(a)
- end
-
-Wed Jul 17 19:18:28 EDT 1996
- Fix yet another case of intrinsic "real" applied to a complex
-argument. Example:
- complex a(3)
- x = sqrt(real(a(2))) ! gave error message about bad tag
- end
-
-Mon Aug 26 11:28:57 EDT 1996
- Tweak sysdep.c for non-Unix systems in which process ID's can be
-over 5 digits long.
-
-Tue Aug 27 08:31:32 EDT 1996
- Adjust the ishft intrinsic to use unsigned right shifts. (Previously,
-a negative constant second operand resulted in a possibly signed shift.)
-
-Thu Sep 12 14:04:07 EDT 1996
- equiv.c: fix glitch with -DKR_headers.
- libi77: fmtlib.c: fix bug in printing the most negative integer.
-
-Fri Sep 13 08:54:40 EDT 1996
- Diagnose some illegal appearances of substring notation.
-
-Tue Sep 17 17:48:09 EDT 1996
- Fix fault in handling some complex parameters. Example:
- subroutine foo(a)
- double complex a, b
- parameter(b = (0,1))
- a = b ! f2c faulted here
- end
-
-Thu Sep 26 07:47:10 EDT 1996
- libi77: fmt.h: for formatted writes of negative integer*1 values,
-make ic signed on ANSI systems. If formatted writes of integer*1
-values trouble you when using a K&R C compiler, switch to an ANSI
-compiler or use a compiler flag that makes characters signed.
-
-Tue Oct 1 14:41:36 EDT 1996
- Give a better error message when dummy arguments appear in data
-statements.
-
-Thu Oct 17 13:37:22 EDT 1996
- Fix bug in typechecking arguments to character and complex (or
-double complex) functions; the bug could cause length arguments
-for character arguments to be omitted on invocations appearing
-textually after the first invocation. For example, in
- subroutine foo
- character c
- complex zot
- call goo(zot(c), zot(c))
- end
-the length was omitted from the second invocation of zot, and
-there was an erroneous error message about inconsistent calling
-sequences.
-
-Wed Dec 4 13:59:14 EST 1996
- Fix bug revealed by
- subroutine test(cdum,rdum)
- complex cdum
- rdum=cos(real(cdum)) ! "Unexpected tag 3 in opconv_fudge"
- end
- Fix glitch in parsing "DO 10 D0 = 1, 10".
- Fix glitch in parsing
- real*8 x
- real*8 x ! erroneous "incompatible type" message
- call foo(x)
- end
-
-Mon Dec 9 23:15:02 EST 1996
- Fix glitch in parameter adjustments for arrays whose lower
-bound depends on a scalar argument. Example:
- subroutine bug(p,z,m,n)
- integer z(*),m,n
- double precision p(z(m):z(m) + n) ! p_offset botched
- call foo(p(0), p(n))
- end
- libi77: complain about non-positive rec= in direct read and write
-statements.
- libf77: trivial adjustments; Version.c not changed.
-
-Wed Feb 12 00:18:03 EST 1997
- output.c: fix (seldom problematic) glitch in out_call: put parens
-around the ... in a test of the form "if (q->tag == TADDR && ...)".
- vax.c: fix bug revealed in the "psi_offset =" assignment in the
-following example:
- subroutine foo(psi,m)
- integer z(100),m
- common /a/ z
- double precision psi(z(m):z(m) + 10)
- call foo(m+1, psi(0),psi(10))
- end
-
-Mon Feb 24 23:44:54 EST 1997
- For consistency with f2c's current treatment of adjacent character
-strings in FORMAT statements, recognize a Hollerith string following
-a string (and merge adjacent strings in FORMAT statements).
-
-Wed Feb 26 13:41:11 EST 1997
- New libf2c.zip, a combination of the libf77 and libi77 bundles (and
-available only by ftp).
- libf77: adjust functions with a complex output argument to permit
-aliasing it with input arguments. (For now, at least, this is just
-for possible benefit of g77.)
- libi77: tweak to ftell_.c for systems with strange definitions of
-SEEK_SET, etc.
-
-Tue Apr 8 20:57:08 EDT 1997
- libf77: [cz]_div.c: tweaks invisible on most systems (that may
-improve things slightly with optimized compilation on systems that use
-gratuitous extra precision).
- libi77: fmt.c: adjust to complain at missing numbers in formats
-(but still treat missing ".nnn" as ".0").
-
-Fri Apr 11 14:05:57 EDT 1997
- libi77: err.c: attempt to make stderr line buffered rather than
-fully buffered. (Buffering is needed for format items T and TR.)
-
-Thu Apr 17 22:42:43 EDT 1997
- libf77: add F77_aloc.o to makefile (and makefile.u in libf2c.zip).
-
-Fri Apr 25 19:32:09 EDT 1997
- libf77: add [de]time_.c (which may give trouble on some systems).
-
-Tue May 27 09:18:52 EDT 1997
- libi77: ftell_.c: fix typo that caused the third argument to be
-treated as 2 on some systems.
-
-Mon Jun 9 00:04:37 EDT 1997
- libi77 (and libf2c.zip): adjust include order in err.c lread.c wref.c
-rdfmt.c to include fmt.h (etc.) after system includes. Version.c not
-changed.
-
-Mon Jul 21 16:04:54 EDT 1997
- proc.c: fix glitch in logic for "nonpositive dimension" message.
- libi77: inquire.c: always include string.h (for possible use with
--DNON_UNIX_STDIO); Version.c not changed.
-
-Thu Jul 24 17:11:23 EDT 1997
- Tweak "Notice" to reflect the AT&T breakup -- we missed it when
-updating the copyright notices in the source files last summer.
- Adjust src/makefile so malloc.o is not used by default, but can
-be specified with "make MALLOC=malloc.o".
- Add comments to src/README about the "CRAY" T3E.
-
-Tue Aug 5 14:53:25 EDT 1997
- Add definition of calloc to malloc.c; this makes f2c's malloc
-work on some systems where trouble hitherto arose because references
-to calloc brought in the system's malloc. (On sensible systems,
-calloc is defined separately from malloc. To avoid confusion on
-other systems, f2c/malloc.c now defines calloc.)
- libi77: lread.c: adjust to accord with a change to the Fortran 8X
-draft (in 1990 or 1991) that rescinded permission to elide quote marks
-in namelist input of character data; to get the old behavior, compile
-with F8X_NML_ELIDE_QUOTES #defined. wrtfmt.o: wrt_G: tweak to print
-the right number of 0's for zero under G format.
-
-Sat Aug 16 05:45:32 EDT 1997
- libi77: iio.c: fix bug in internal writes to an array of character
-strings that sometimes caused one more array element than required by
-the format to be blank-filled. Example: format(1x).
-
-Wed Sep 17 00:39:29 EDT 1997
- libi77: fmt.[ch] rdfmt.c wrtfmt.c: tweak struct syl for machines
-with 64-bit pointers and 32-bit ints that did not 64-bit align
-struct syl (e.g., Linux on the DEC Alpha). This change should be
-invisible on other machines.
-
-Sun Sep 21 22:05:19 EDT 1997
- libf77: [de]time_.c (Unix systems only): change return type to double.
-
-Thu Dec 4 22:10:09 EST 1997
- Fix bug with handling large blocks of comments (over 4k); parts of the
-second and subsequent blocks were likely to be lost (not copied into
-comments in the resulting C). Allow comment lines to be longer before
-breaking them.
-
-Mon Jan 19 17:19:27 EST 1998
- makefile: change the rule for making gram.c to one for making gram1.c;
-henceforth, asking netlib to "send all from f2c/src" will bring you a
-working gram.c. Nowadays there are simply too many broken versions of
-yacc floating around.
- libi77: backspace.c: for b->ufmt==0, change sizeof(int) to
-sizeof(uiolen). On machines where this would make a difference, it is
-best for portability to compile libI77 with -DUIOLEN_int, which will
-render the change invisible.
-
-Tue Feb 24 08:35:33 EST 1998
- makefile: remove gram.c from the "make clean" rule.
-
-Wed Feb 25 08:29:39 EST 1998
- makefile: change CFLAGS assignment to -O; add "veryclean" rule.
-
-Wed Mar 4 13:13:21 EST 1998
- libi77: open.c: fix glitch in comparing file names under
--DNON_UNIX_STDIO.
-
-Mon Mar 9 23:56:56 EST 1998
- putpcc.c: omit an unnecessary temporary variable in computing
-(expr)**3.
- libf77, libi77: minor tweaks to make some C++ compilers happy;
-Version.c not changed.
-
-Wed Mar 18 18:08:47 EST 1998
- libf77: minor tweaks to [ed]time_.c; Version.c not changed.
- libi77: endfile.c, open.c: acquire temporary files from tmpfile(),
-unless compiled with -DNON_ANSI_STDIO, which uses mktemp().
-New buffering scheme independent of NON_UNIX_STDIO for handling T
-format items. Now -DNON_UNIX_STDIO is no longer be necessary for
-Linux, and libf2c no longer causes stderr to be buffered -- the former
-setbuf or setvbuf call for stderr was to make T format items work.
-open.c: use the Posix access() function to check existence or
-nonexistence of files, except under -DNON_POSIX_STDIO, where trial
-fopen calls are used. In open.c, fix botch in changes of 19980304.
- libf2c.zip: the PC makefiles are now set for NT/W95, with comments
-about changes for DOS.
-
-Fri Apr 3 17:22:12 EST 1998
- Adjust fix of 19960913 to again permit substring notation on
-character variables in data statements.
-
-Sun Apr 5 19:26:50 EDT 1998
- libi77: wsfe.c: make $ format item work: this was lost in the changes
-of 17 March 1998.
-
-Sat May 16 19:08:51 EDT 1998
- Adjust output of ftnlen constants: rather than appending L,
-prepend (ftnlen). This should make the resulting C more portable,
-e.g., to systems (such as DEC Alpha Unix systems) on which long
-may be longer than ftnlen.
- Adjust -r so it also casts REAL expressions passed to intrinsic
-functions to REAL.
-
-Wed May 27 16:02:35 EDT 1998
- libf2c.zip: tweak description of compiling libf2c for INTEGER*8
-to accord with makefile.u rather than libF77/makefile.
-
-Thu May 28 22:45:59 EDT 1998
- libi77: backspace.c dfe.c due.c iio.c lread.c rsfe.c sue.c wsfe.c:
-set f__curunit sooner so various error messages will correctly
-identify the I/O unit involved.
- libf2c.zip: above, plus tweaks to PC makefiles: for some purposes,
-it's still best to compile with -DMSDOS (even for use with NT).
-
-Thu Jun 18 01:22:52 EDT 1998
- libi77: lread.c: modified so floating-point numbers (containing
-either a decimal point or an exponent field) are treated as errors
-when they appear as list input for integer data. Compile lread.c with
--DALLOW_FLOAT_IN_INTEGER_LIST_INPUT to restore the old behavior.
-
-Mon Aug 31 10:38:54 EDT 1998
- formatdata.c: if possible, and assuming doubles must be aligned on
-double boundaries, use existing holes in DATA for common blocks to
-force alignment of the block. For example,
- block data
- common /abc/ a, b
- double precision a
- integer b(2)
- data b(2)/1/
- end
-used to generate
- struct {
- integer fill_1[3];
- integer e_2;
- doublereal e_3;
- } abc_ = { {0}, 1, 0. };
-and now generates
- struct {
- doublereal fill_1[1];
- integer fill_2[1];
- integer e_3;
- } abc_ = { {0}, {0}, 1 };
-In the old generated C, e_3 was added to force alignment; in the new C,
-fill_1 does this job.
-
-Mon Sep 7 19:48:51 EDT 1998
- libi77: move e_wdfe from sfe.c to dfe.c, where it was originally.
-Why did it ever move to sfe.c?
-
-Tue Sep 8 10:22:50 EDT 1998
- Treat dreal as a synonym for dble unless -cd is specified on the
-command line.
-
-Sun Sep 13 22:23:41 EDT 1998
- format.c: fix bug in writing prototypes under f2c -A ... *.P:
-under some circumstances involving external functions with no known
-type, a null pointer was passed to printf.
-
-Tue Oct 20 23:25:54 EDT 1998
- Comments added to libf2c/README and libF77/README, pointing out
-the need to modify signal1.h on some systems.
-
-Wed Feb 10 22:59:52 EST 1999
- defs.h lex.c: permit long names (up to at least roughly
-MAX_SHARPLINE_LEN = 1000 characters long) in #line lines (which only
-matters under -g).
- fc: add -U option; recognize .so files.
-
-Sat Feb 13 10:18:27 EST 1999
- libf2c: endfile.c, lread.c, signal1.h0: minor tweaks to make some
-(C++) compilers happier; f77_aloc.c: make exit_() visible to C++
-compilers. Version strings not changed.
-
-Thu Mar 11 23:14:02 EST 1999
- Modify f2c (exec.c, expr.c) to diagnose incorrect mixing of types
-when (f2c extended) intrinsic functions are involved, as in
-(not(17) .and. 4). Catching this in the first executable statement
-is a bit tricky, as some checking must be postponed until all statement
-function declarations have been parsed. Thus there is a chance of
-today's changes introducing bugs under (let us hope) unusual conditions.
-
-Sun Mar 28 13:17:44 EST 1999
- lex.c: tweak to get the file name right in error messages caused
-by statements just after a # nnn "filename" line emitted by the C
-preprocessor. (The trouble is that the line following the # nnn line
-must be read to see if it is a continuation of the stuff that preceded
-the # nnn line.) When # nnn "filename" lines appear among the lines
-for a Fortran statement, the filename reported in an error message for
-the statement should now be the file that was current when the first
-line of the statement was read.
-
-Sun May 2 22:38:25 EDT 1999
- libf77, libi77, libf2c.zip: make getenv_() more portable (call
-getenv() rather than knowing about char **environ); adjust some
-complex intrinsics to work with overlapping arguments (caused by
-inappropriate use of equivalence); open.c: get "external" versus
-"internal" right in the error message if a file cannot be opened;
-err.c: cast a pointer difference to (int) for %d; rdfmt.c: omit
-fixed-length buffer that could be overwritten by formats Inn or Lnn
-with nn > 83.
-
-Mon May 3 13:14:07 EDT 1999
- "Invisible" changes to omit a few compiler warnings in f2c and
-libf2c; two new casts in libf2c/open.c that matter with 64-bit longs,
-and one more tweak (libf2c/c_log.c) for pathological equivalences.
- Minor update to "fc" script: new -L flag and comment correction.
-
-Fri Jun 18 02:33:08 EDT 1999
- libf2c.zip: rename backspace.c backspac.c, and fix a glitch in it
--- b->ufd may change in t_runc(). (For now, it's still backspace.c
-in the libi77 bundle.)
-
-Sun Jun 27 22:05:47 EDT 1999
- libf2c.zip, libi77: rsne.c: fix bug in namelist input: a misplaced
-increment could cause wrong array elements to be assigned; e.g.,
-"&input k(5)=10*1 &end" assigned k(5) and k(15 .. 23).
diff --git a/libf2c/configure.in b/libf2c/configure.in
deleted file mode 100644
index 50016b261df..00000000000
--- a/libf2c/configure.in
+++ /dev/null
@@ -1,121 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-# Copyright (C) 1995, 1997, 1998, 1999, 2002, 2003
-# Free Software Foundation, Inc.
-# Contributed by Dave Love (d.love@dl.ac.uk).
-#
-#This file is part of GNU Fortran.
-#
-#GNU Fortran 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 Fortran 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 Fortran; see the file COPYING. If not, write to
-#the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-#02111-1307, USA.
-
-AC_PREREQ(2.13)
-AC_INIT(libF77/Version.c)
-
-# This works around the fact that libtool configuration may change LD
-# for this particular configuration, but some shells, instead of
-# keeping the changes in LD private, export them just because LD is
-# exported.
-ORIGINAL_LD_FOR_MULTILIBS=$LD
-
-GLIBCPP_TOPREL_CONFIGURE
-
-AC_CANONICAL_SYSTEM
-target_alias=${target_alias-$target}
-AC_SUBST(target_alias)
-
-GLIBCPP_CONFIGURE(.)
-GLIBCPP_EXPORT_INSTALL_INFO
-
-dnl Checks for programs.
-
-AM_PROG_LIBTOOL
-
-dnl These should be inherited in the recursive make, but ensure they are
-dnl defined:
-test "$AR" || AR=ar
-AC_SUBST(AR)
-if test "$RANLIB"; then :
- AC_SUBST(RANLIB)
-else
- AC_PROG_RANLIB
-fi
-AC_PROG_INSTALL
-AC_PROG_MAKE_SET
-
-dnl Checks for header files.
-# Sanity check for the cross-compilation case:
-AC_CHECK_HEADER(stdio.h,:,
- [AC_MSG_ERROR([Can't find stdio.h.
-You must have a usable C system for the target already installed, at least
-including headers and, preferably, the library, before you can configure
-the G77 runtime system. If necessary, install gcc now with \`LANGUAGES=c',
-then the target library, then build with \`LANGUAGES=f77'.])])
-
-dnl Checks for g77 integer types built into gcc's C front end.
-AC_MSG_CHECKING(for built-in g77 integer types)
-AC_CACHE_VAL(libf2c_cv_has_g77_builtin_types,
-[AC_TRY_COMPILE(,
- [__g77_integer g77i;
-__g77_uinteger g77ui;
-__g77_longint g77l;
-__g77_ulongint g77ul;],
- libf2c_cv_has_g77_builtin_types=yes,
- libf2c_cv_has_g77_builtin_types=no)])
-AC_MSG_RESULT($libf2c_cv_has_g77_builtin_types)
-if test $libf2c_cv_has_g77_builtin_types = no; then
- AC_MSG_ERROR([gcc doesn't define all of the built in types __g77_integer,
-__g77_uinteger, __g77_longint, and __g77_ulongint. You may not be using
-a new enough version of gcc, or your target may not have type sizes which
-accommodate those types.])
-fi
-
-# avoid confusion in case the `makefile's from the f2c distribution have
-# got put here
-test -f libF77/makefile && mv libF77/makefile libF77/makefile.ori
-test -f libI77/makefile && mv libI77/makefile libI77/makefile.ori
-test -f libU77/makefile && mv libU77/makefile libU77/makefile.ori
-
-AC_CONFIG_SUBDIRS(libU77 libI77 libF77)
-# Do Makefile first since g2c.h depends on it and shouldn't get an
-# earlier timestamp. Of course, it does when the multilib gunk below
-# edits Makefile, sigh; see additional touch below.
-AC_OUTPUT(Makefile g2c.h:g2c.hin,
- [test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h
-if test -n "$CONFIG_FILES"; then
- LD="${ORIGINAL_LD_FOR_MULTILIBS}"
- if test -n "${with_target_subdir}"; then
- # FIXME: We shouldn't need to set ac_file
- ac_file=Makefile
- . ${toplevel_srcdir}/config-ml.in
- touch g2c.h # to keep it more recent than Makefile
- fi
-fi],
-srcdir=${srcdir}
-host=${host}
-target=${target}
-with_target_subdir=${with_target_subdir}
-with_multisubdir=${with_multisubdir}
-ac_configure_args="--enable-multilib ${ac_configure_args}"
-toplevel_srcdir=${toplevel_srcdir}
-CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}"
-)
-
-
-dnl Local Variables:
-dnl comment-start: "dnl "
-dnl comment-end: ""
-dnl comment-start-skip: "\\bdnl\\b\\s *"
-dnl End:
diff --git a/libf2c/disclaimer.netlib b/libf2c/disclaimer.netlib
deleted file mode 100644
index a11108f83db..00000000000
--- a/libf2c/disclaimer.netlib
+++ /dev/null
@@ -1,15 +0,0 @@
-f2c is a Fortran to C converter under development since 1990 by
- David M. Gay (then AT&T Bell Labs, now Bell Labs, Lucent Technologies)
- Stu Feldman (then at Bellcore, now at IBM)
- Mark Maimone (Carnegie-Mellon University)
- Norm Schryer (then AT&T Bell Labs, now AT&T Labs)
-Please send bug reports to dmg@research.bell-labs.com .
-
-AT&T, Bellcore and Lucent disclaim all warranties with regard to this
-software, including all implied warranties of merchantability
-and fitness. In no event shall AT&T, Bellcore or Lucent be liable for
-any special, indirect or consequential damages or any damages
-whatsoever resulting from loss of use, data or profits, whether
-in an action of contract, negligence or other tortious action,
-arising out of or in connection with the use or performance of
-this software.
diff --git a/libf2c/f2c.h b/libf2c/f2c.h
deleted file mode 100644
index 71e53616497..00000000000
--- a/libf2c/f2c.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* f2c.h file for GNU Fortran run-time library
- Copyright (C) 1998 Free Software Foundation, Inc.
- Contributed by James Craig Burley.
-
-This file is part of GNU Fortran.
-
-GNU Fortran 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 Fortran 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 Fortran; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* This file currently is just a stub through which g77's copy
- of netlib's libf2c, which g77 builds and installs as libg2c.a
- (to avoid conflict), #include's g77's version of f2c.h, named
- g2c.h. That file is, in turn, produced via g77's library
- configuration process from g2c.h.in.
-
- By going through this extra "hoop", it is easy to provide for
- libg2c-specific configuration and typedefs that aren't appropriate
- in g2c.h itself (since that is intended to be installed so it can
- be shared with f2c users), without changing the libf2c (libg2c)
- routines themselves. (They continue to #include "f2c.h", just
- like they do in netlib's version.) */
-
-#include "g2c.h"
-
-/* For GNU Fortran (g77), we always enable the following behaviors for
- libf2c, to make things easy on the programmer. The alternate
- behaviors have their uses, and g77 might provide them as compiler,
- rather than library, options, so only a single copy of a shared libf2c
- need be built for a system. */
-
-/* This makes unformatted I/O more consistent in relation to other
- systems. It is not required by the F77 standard. */
-
-#define Pad_UDread
-
-/* This makes ERR= and IOSTAT= returns work properly in disk-full
- situations, making things work more as expected. It slows things
- down, so g77 will probably someday choose the original implementation
- on a case-by-case basis when it can be shown to not be necessary
- (e.g. no ERR= or IOSTAT=) or when it is given the appropriate
- compile-time option or, perhaps, source-code directive.
-
- (No longer defined, since it really slows down NFS access too much.) */
-
-/* #define ALWAYS_FLUSH */
-
-/* Most Fortran implementations do this, so to make it easier
- to compare the output of g77-compiled programs to those compiled
- by most other compilers, tell libf2c to put leading zeros in
- appropriate places on output. */
-
-#define WANT_LEAD_0
diff --git a/libf2c/f2cext.c b/libf2c/f2cext.c
deleted file mode 100644
index 69d12b6ea64..00000000000
--- a/libf2c/f2cext.c
+++ /dev/null
@@ -1,582 +0,0 @@
-/* Copyright (C) 1997 Free Software Foundation, Inc.
-This file is part of GNU Fortran run-time library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#include <math.h> /* for j0 et al */
-#include <f2c.h>
-typedef void *sig_proc; /* For now, this will have to do. */
-
-#ifdef Labort
-int abort_ (void) {
- extern int G77_abort_0 (void);
- return G77_abort_0 ();
-}
-#endif
-
-#ifdef Lderf
-double derf_ (doublereal *x) {
- extern double G77_derf_0 (doublereal *x);
- return G77_derf_0 (x);
-}
-#endif
-
-#ifdef Lderfc
-double derfc_ (doublereal *x) {
- extern double G77_derfc_0 (doublereal *x);
- return G77_derfc_0 (x);
-}
-#endif
-
-#ifdef Lef1asc
-int ef1asc_ (ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb) {
- extern int G77_ef1asc_0 (ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb);
- return G77_ef1asc_0 (a, la, b, lb);
-}
-#endif
-
-#ifdef Lef1cmc
-integer ef1cmc_ (ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb) {
- extern integer G77_ef1cmc_0 (ftnint *a, ftnlen *la, ftnint *b, ftnlen *lb);
- return G77_ef1cmc_0 (a, la, b, lb);
-}
-#endif
-
-#ifdef Lerf
-double erf_ (real *x) {
- extern double G77_erf_0 (real *x);
- return G77_erf_0 (x);
-}
-#endif
-
-#ifdef Lerfc
-double erfc_ (real *x) {
- extern double G77_erfc_0 (real *x);
- return G77_erfc_0 (x);
-}
-#endif
-
-#ifdef Lexit
-void exit_ (integer *rc) {
- extern void G77_exit_0 (integer *rc);
- G77_exit_0 (rc);
-}
-#endif
-
-#ifdef Lgetarg
-void getarg_ (ftnint *n, char *s, ftnlen ls) {
- extern void G77_getarg_0 (ftnint *n, char *s, ftnlen ls);
- G77_getarg_0 (n, s, ls);
-}
-#endif
-
-#ifdef Lgetenv
-void getenv_ (char *fname, char *value, ftnlen flen, ftnlen vlen) {
- extern void G77_getenv_0 (char *fname, char *value, ftnlen flen, ftnlen vlen);
- G77_getenv_0 (fname, value, flen, vlen);
-}
-#endif
-
-#ifdef Liargc
-ftnint iargc_ (void) {
- extern ftnint G77_iargc_0 (void);
- return G77_iargc_0 ();
-}
-#endif
-
-#ifdef Lsignal
-void *signal_ (integer *sigp, sig_proc proc) {
- extern void *G77_signal_0 (integer *sigp, sig_proc proc);
- return G77_signal_0 (sigp, proc);
-}
-#endif
-
-#ifdef Lsystem
-integer system_ (char *s, ftnlen n) {
- extern integer G77_system_0 (char *s, ftnlen n);
- return G77_system_0 (s, n);
-}
-#endif
-
-#ifdef Lflush
-int flush_ (void) {
- extern int G77_flush_0 (void);
- return G77_flush_0 ();
-}
-#endif
-
-#ifdef Lftell
-integer ftell_ (integer *Unit) {
- extern integer G77_ftell_0 (integer *Unit);
- return G77_ftell_0 (Unit);
-}
-#endif
-
-#ifdef Lfseek
-integer fseek_ (integer *Unit, integer *offset, integer *xwhence) {
- extern integer G77_fseek_0 (integer *Unit, integer *offset, integer *xwhence);
- return G77_fseek_0 (Unit, offset, xwhence);
-}
-#endif
-
-#ifdef Laccess
-integer access_ (const char *name, const char *mode, ftnlen Lname, ftnlen Lmode) {
- extern integer G77_access_0 (const char *name, const char *mode, ftnlen Lname, ftnlen Lmode);
- return G77_access_0 (name, mode, Lname, Lmode);
-}
-#endif
-
-#ifdef Lalarm
-integer alarm_ (integer *seconds, sig_proc proc,
- integer *status __attribute__ ((__unused__))) {
- extern integer G77_alarm_0 (integer *seconds, sig_proc proc);
- return G77_alarm_0 (seconds, proc);
-}
-#endif
-
-#ifdef Lbesj0
-double besj0_ (const real *x) {
- return j0 (*x);
-}
-#endif
-
-#ifdef Lbesj1
-double besj1_ (const real *x) {
- return j1 (*x);
-}
-#endif
-
-#ifdef Lbesjn
-double besjn_ (const integer *n, real *x) {
- return jn (*n, *x);
-}
-#endif
-
-#ifdef Lbesy0
-double besy0_ (const real *x) {
- return y0 (*x);
-}
-#endif
-
-#ifdef Lbesy1
-double besy1_ (const real *x) {
- return y1 (*x);
-}
-#endif
-
-#ifdef Lbesyn
-double besyn_ (const integer *n, real *x) {
- return yn (*n, *x);
-}
-#endif
-
-#ifdef Lchdir
-integer chdir_ (const char *name, const ftnlen Lname) {
- extern integer G77_chdir_0 (const char *name, const ftnlen Lname);
- return G77_chdir_0 (name, Lname);
-}
-#endif
-
-#ifdef Lchmod
-integer chmod_ (const char *name, const char *mode, const ftnlen Lname, const ftnlen Lmode) {
- extern integer G77_chmod_0 (const char *name, const char *mode, const ftnlen Lname, const ftnlen Lmode);
- return G77_chmod_0 (name, mode, Lname, Lmode);
-}
-#endif
-
-#ifdef Lctime
-void ctime_ (char *chtime, const ftnlen Lchtime, longint *xstime) {
- extern void G77_ctime_0 (char *chtime, const ftnlen Lchtime, longint *xstime);
- G77_ctime_0 (chtime, Lchtime, xstime);
-}
-#endif
-
-#ifdef Ldate_y2kbuggy
-int date_ (char *buf, ftnlen buf_len) {
- /* Fail to link, so user sees attempt to invoke non-Y2K-compliant
- routine. */
- extern int G77_date_y2kbuggy_0 (char *buf, ftnlen buf_len);
- return G77_date_y2kbuggy_0 (buf, buf_len);
-}
-#endif
-
-#ifdef Ldate_y2kbug
-int date_y2kbug__ (char *buf, ftnlen buf_len) {
- /* If user wants to invoke the non-Y2K-compliant routine via
- an `EXTERNAL' interface, avoiding the warning via g77's
- `INTRINSIC' interface, force coding of "y2kbug" string in
- user's program. */
- extern int G77_date_y2kbug_0 (char *buf, ftnlen buf_len);
- return G77_date_y2kbug_0 (buf, buf_len);
-}
-#endif
-
-#ifdef Ldbesj0
-double dbesj0_ (const double *x) {
- return j0 (*x);
-}
-#endif
-
-#ifdef Ldbesj1
-double dbesj1_ (const double *x) {
- return j1 (*x);
-}
-#endif
-
-#ifdef Ldbesjn
-double dbesjn_ (const integer *n, double *x) {
- return jn (*n, *x);
-}
-#endif
-
-#ifdef Ldbesy0
-double dbesy0_ (const double *x) {
- return y0 (*x);
-}
-#endif
-
-#ifdef Ldbesy1
-double dbesy1_ (const double *x) {
- return y1 (*x);
-}
-#endif
-
-#ifdef Ldbesyn
-double dbesyn_ (const integer *n, double *x) {
- return yn (*n, *x);
-}
-#endif
-
-#ifdef Ldtime
-double dtime_ (real tarray[2]) {
- extern double G77_dtime_0 (real tarray[2]);
- return G77_dtime_0 (tarray);
-}
-#endif
-
-#ifdef Letime
-double etime_ (real tarray[2]) {
- extern double G77_etime_0 (real tarray[2]);
- return G77_etime_0 (tarray);
-}
-#endif
-
-#ifdef Lfdate
-void fdate_ (char *ret_val, ftnlen ret_val_len) {
- extern void G77_fdate_0 (char *ret_val, ftnlen ret_val_len);
- G77_fdate_0 (ret_val, ret_val_len);
-}
-#endif
-
-#ifdef Lfgetc
-integer fgetc_ (const integer *lunit, char *c, ftnlen Lc) {
- extern integer G77_fgetc_0 (const integer *lunit, char *c, ftnlen Lc);
- return G77_fgetc_0 (lunit, c, Lc);
-}
-#endif
-
-#ifdef Lfget
-integer fget_ (char *c, const ftnlen Lc) {
- extern integer G77_fget_0 (char *c, const ftnlen Lc);
- return G77_fget_0 (c, Lc);
-}
-#endif
-
-#ifdef Lflush1
-int flush1_ (const integer *lunit) {
- extern int G77_flush1_0 (const integer *lunit);
- return G77_flush1_0 (lunit);
-}
-#endif
-
-#ifdef Lfnum
-integer fnum_ (integer *lunit) {
- extern integer G77_fnum_0 (integer *lunit);
- return G77_fnum_0 (lunit);
-}
-#endif
-
-#ifdef Lfputc
-integer fputc_ (const integer *lunit, const char *c, const ftnlen Lc) {
- extern integer G77_fputc_0 (const integer *lunit, const char *c, const ftnlen Lc);
- return G77_fputc_0 (lunit, c, Lc);
-}
-#endif
-
-#ifdef Lfput
-integer fput_ (const char *c, const ftnlen Lc) {
- extern integer G77_fput_0 (const char *c, const ftnlen Lc);
- return G77_fput_0 (c, Lc);
-}
-#endif
-
-#ifdef Lfstat
-integer fstat_ (const integer *lunit, integer statb[13]) {
- extern integer G77_fstat_0 (const integer *lunit, integer statb[13]);
- return G77_fstat_0 (lunit, statb);
-}
-#endif
-
-#ifdef Lgerror
-int gerror_ (char *str, ftnlen Lstr) {
- extern int G77_gerror_0 (char *str, ftnlen Lstr);
- return G77_gerror_0 (str, Lstr);
-}
-#endif
-
-#ifdef Lgetcwd
-integer getcwd_ (char *str, const ftnlen Lstr) {
- extern integer G77_getcwd_0 (char *str, const ftnlen Lstr);
- return G77_getcwd_0 (str, Lstr);
-}
-#endif
-
-#ifdef Lgetgid
-integer getgid_ (void) {
- extern integer G77_getgid_0 (void);
- return G77_getgid_0 ();
-}
-#endif
-
-#ifdef Lgetlog
-int getlog_ (char *str, const ftnlen Lstr) {
- extern int G77_getlog_0 (char *str, const ftnlen Lstr);
- return G77_getlog_0 (str, Lstr);
-}
-#endif
-
-#ifdef Lgetpid
-integer getpid_ (void) {
- extern integer G77_getpid_0 (void);
- return G77_getpid_0 ();
-}
-#endif
-
-#ifdef Lgetuid
-integer getuid_ (void) {
- extern integer G77_getuid_0 (void);
- return G77_getuid_0 ();
-}
-#endif
-
-#ifdef Lgmtime
-int gmtime_ (const integer *stime, integer tarray[9]) {
- extern int G77_gmtime_0 (const integer *stime, integer tarray[9]);
- return G77_gmtime_0 (stime, tarray);
-}
-#endif
-
-#ifdef Lhostnm
-integer hostnm_ (char *name, ftnlen Lname) {
- extern integer G77_hostnm_0 (char *name, ftnlen Lname);
- return G77_hostnm_0 (name, Lname);
-}
-#endif
-
-#ifdef Lidate
-int idate_ (int iarray[3]) {
- extern int G77_idate_0 (int iarray[3]);
- return G77_idate_0 (iarray);
-}
-#endif
-
-#ifdef Lierrno
-integer ierrno_ (void) {
- extern integer G77_ierrno_0 (void);
- return G77_ierrno_0 ();
-}
-#endif
-
-#ifdef Lirand
-integer irand_ (integer *flag) {
- extern integer G77_irand_0 (integer *flag);
- return G77_irand_0 (flag);
-}
-#endif
-
-#ifdef Lisatty
-logical isatty_ (integer *lunit) {
- extern logical G77_isatty_0 (integer *lunit);
- return G77_isatty_0 (lunit);
-}
-#endif
-
-#ifdef Litime
-int itime_ (integer tarray[3]) {
- extern int G77_itime_0 (integer tarray[3]);
- return G77_itime_0 (tarray);
-}
-#endif
-
-#ifdef Lkill
-integer kill_ (const integer *pid, const integer *signum) {
- extern integer G77_kill_0 (const integer *pid, const integer *signum);
- return G77_kill_0 (pid, signum);
-}
-#endif
-
-#ifdef Llink
-integer link_ (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2) {
- extern integer G77_link_0 (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2);
- return G77_link_0 (path1, path2, Lpath1, Lpath2);
-}
-#endif
-
-#ifdef Llnblnk
-integer lnblnk_ (char *str, ftnlen str_len) {
- extern integer G77_lnblnk_0 (char *str, ftnlen str_len);
- return G77_lnblnk_0 (str, str_len);
-}
-#endif
-
-#ifdef Llstat
-integer lstat_ (const char *name, integer statb[13], const ftnlen Lname) {
- extern integer G77_lstat_0 (const char *name, integer statb[13], const ftnlen Lname);
- return G77_lstat_0 (name, statb, Lname);
-}
-#endif
-
-#ifdef Lltime
-int ltime_ (const integer *stime, integer tarray[9]) {
- extern int G77_ltime_0 (const integer *stime, integer tarray[9]);
- return G77_ltime_0 (stime, tarray);
-}
-#endif
-
-#ifdef Lmclock
-longint mclock_ (void) {
- extern longint G77_mclock_0 (void);
- return G77_mclock_0 ();
-}
-#endif
-
-#ifdef Lperror
-int perror_ (const char *str, const ftnlen Lstr) {
- extern int G77_perror_0 (const char *str, const ftnlen Lstr);
- return G77_perror_0 (str, Lstr);
-}
-#endif
-
-#ifdef Lrand
-double rand_ (integer *flag) {
- extern double G77_rand_0 (integer *flag);
- return G77_rand_0 (flag);
-}
-#endif
-
-#ifdef Lrename
-integer rename_ (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2) {
- extern integer G77_rename_0 (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2);
- return G77_rename_0 (path1, path2, Lpath1, Lpath2);
-}
-#endif
-
-#ifdef Lsecnds
-double secnds_ (real *r) {
- extern double G77_secnds_0 (real *r);
- return G77_secnds_0 (r);
-}
-#endif
-
-#ifdef Lsecond
-double second_ () {
- extern double G77_second_0 ();
- return G77_second_0 ();
-}
-#endif
-
-#ifdef Lsleep
-int sleep_ (const integer *seconds) {
- extern int G77_sleep_0 (const integer *seconds);
- return G77_sleep_0 (seconds);
-}
-#endif
-
-#ifdef Lsrand
-int srand_ (const integer *seed) {
- extern int G77_srand_0 (const integer *seed);
- return G77_srand_0 (seed);
-}
-#endif
-
-#ifdef Lstat
-integer stat_ (const char *name, integer statb[13], const ftnlen Lname) {
- extern integer G77_stat_0 (const char *name, integer statb[13], const ftnlen Lname);
- return G77_stat_0 (name, statb, Lname);
-}
-#endif
-
-#ifdef Lsymlnk
-integer symlnk_ (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2) {
- extern integer G77_symlnk_0 (const char *path1, const char *path2, const ftnlen Lpath1, const ftnlen Lpath2);
- return G77_symlnk_0 (path1, path2, Lpath1, Lpath2);
-}
-#endif
-
-#ifdef Ltime
-longint time_ (void) {
- extern longint G77_time_0 (void);
- return G77_time_0 ();
-}
-#endif
-
-#ifdef Lttynam
-void ttynam_ (char *ret_val, ftnlen ret_val_len, integer *lunit) {
- extern void G77_ttynam_0 (char *ret_val, ftnlen ret_val_len, integer *lunit);
- G77_ttynam_0 (ret_val, ret_val_len, lunit);
-}
-#endif
-
-#ifdef Lumask
-integer umask_ (integer *mask) {
- extern integer G77_umask_0 (integer *mask);
- return G77_umask_0 (mask);
-}
-#endif
-
-#ifdef Lunlink
-integer unlink_ (const char *str, const ftnlen Lstr) {
- extern integer G77_unlink_0 (const char *str, const ftnlen Lstr);
- return G77_unlink_0 (str, Lstr);
-}
-#endif
-
-#ifdef Lvxtidt_y2kbuggy
-int vxtidate_ (integer *m, integer *d, integer *y) {
- /* Fail to link, so user sees attempt to invoke non-Y2K-compliant
- routine. */
- extern int G77_vxtidate_y2kbuggy_0 (integer *m, integer *d, integer *y);
- return G77_vxtidate_y2kbuggy_0 (m, d, y);
-}
-#endif
-
-#ifdef Lvxtidt_y2kbug
-int vxtidate_y2kbug__ (integer *m, integer *d, integer *y) {
- /* If user wants to invoke the non-Y2K-compliant routine via
- an `EXTERNAL' interface, avoiding the warning via g77's
- `INTRINSIC' interface, force coding of "y2kbug" string in
- user's program. */
- extern int G77_vxtidate_y2kbug_0 (integer *m, integer *d, integer *y);
- return G77_vxtidate_y2kbug_0 (m, d, y);
-}
-#endif
-
-#ifdef Lvxttim
-void vxttime_ (char chtime[8], const ftnlen Lchtime) {
- extern void G77_vxttime_0 (char chtime[8], const ftnlen Lchtime);
- G77_vxttime_0 (chtime, Lchtime);
-}
-#endif
diff --git a/libf2c/g2c.hin b/libf2c/g2c.hin
deleted file mode 100644
index 577ea2b1a8d..00000000000
--- a/libf2c/g2c.hin
+++ /dev/null
@@ -1,234 +0,0 @@
-/* g2c.h -- g77 version of f2c (Standard Fortran to C header file) */
-
-/* This file is generated by the g77 libg2c configuration process from a
- file named g2c.hin. This process sets up the appropriate types,
- defines the appropriate macros, and so on. The resulting g2c.h file
- is used to build g77's copy of libf2c, named libg2c, and also can
- be used when compiling C code produced by f2c to link the resulting
- object file(s) with those produced by the same version of g77 that
- produced this file, allowing inter-operability of f2c-compiled and
- g77-compiled code. */
-
-/** barf [ba:rf] 2. "He suggested using FORTRAN, and everybody barfed."
-
- - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
-
-#ifndef F2C_INCLUDE
-#define F2C_INCLUDE
-
-/* F2C_INTEGER will normally be `int' but would be `long' on 16-bit systems */
-/* we assume short, float are OK */
-typedef __g77_integer integer;
-typedef __g77_uinteger uinteger;
-typedef char *address;
-typedef short int shortint;
-typedef float real;
-typedef double doublereal;
-typedef struct { real r, i; } complex;
-typedef struct { doublereal r, i; } doublecomplex;
-typedef __g77_integer logical;
-typedef short int shortlogical;
-typedef char logical1;
-typedef char integer1;
-typedef __g77_longint longint; /* system-dependent */
-typedef __g77_ulongint ulongint; /* system-dependent */
-#define qbit_clear(a,b) ((a) & ~((ulongint)1 << (b)))
-#define qbit_set(a,b) ((a) | ((ulongint)1 << (b)))
-
-#define TRUE_ (1)
-#define FALSE_ (0)
-
-/* Extern is for use with -E */
-#ifndef Extern
-#define Extern extern
-#endif
-
-/* I/O stuff */
-
-#ifdef f2c_i2
-#error "f2c_i2 will not work with g77!!!!"
-/* for -i2 */
-typedef short flag;
-typedef short ftnlen;
-typedef short ftnint;
-#else
-typedef __g77_integer flag;
-typedef __g77_integer ftnlen;
-typedef __g77_integer ftnint;
-#endif
-
-/*external read, write*/
-typedef struct
-{ flag cierr;
- ftnint ciunit;
- flag ciend;
- char *cifmt;
- ftnint cirec;
-} cilist;
-
-/*internal read, write*/
-typedef struct
-{ flag icierr;
- char *iciunit;
- flag iciend;
- char *icifmt;
- ftnint icirlen;
- ftnint icirnum;
-} icilist;
-
-/*open*/
-typedef struct
-{ flag oerr;
- ftnint ounit;
- char *ofnm;
- ftnlen ofnmlen;
- char *osta;
- char *oacc;
- char *ofm;
- ftnint orl;
- char *oblnk;
-} olist;
-
-/*close*/
-typedef struct
-{ flag cerr;
- ftnint cunit;
- char *csta;
-} cllist;
-
-/*rewind, backspace, endfile*/
-typedef struct
-{ flag aerr;
- ftnint aunit;
-} alist;
-
-/* inquire */
-typedef struct
-{ flag inerr;
- ftnint inunit;
- char *infile;
- ftnlen infilen;
- ftnint *inex; /*parameters in standard's order*/
- ftnint *inopen;
- ftnint *innum;
- ftnint *innamed;
- char *inname;
- ftnlen innamlen;
- char *inacc;
- ftnlen inacclen;
- char *inseq;
- ftnlen inseqlen;
- char *indir;
- ftnlen indirlen;
- char *infmt;
- ftnlen infmtlen;
- char *inform;
- ftnint informlen;
- char *inunf;
- ftnlen inunflen;
- ftnint *inrecl;
- ftnint *innrec;
- char *inblank;
- ftnlen inblanklen;
-} inlist;
-
-union Multitype { /* for multiple entry points */
- integer1 g;
- shortint h;
- integer i;
- /* longint j; */
- real r;
- doublereal d;
- complex c;
- doublecomplex z;
- };
-
-typedef union Multitype Multitype;
-
-/*typedef long int Long;*/ /* No longer used; formerly in Namelist */
-
-struct Vardesc { /* for Namelist */
- char *name;
- char *addr;
- ftnlen *dims;
- int type;
- };
-typedef struct Vardesc Vardesc;
-
-struct Namelist {
- char *name;
- Vardesc **vars;
- int nvars;
- };
-typedef struct Namelist Namelist;
-
-#define abs(x) ((x) >= 0 ? (x) : -(x))
-#define dabs(x) (doublereal)abs(x)
-#define min(a,b) ((a) <= (b) ? (a) : (b))
-#define max(a,b) ((a) >= (b) ? (a) : (b))
-#define dmin(a,b) (doublereal)min(a,b)
-#define dmax(a,b) (doublereal)max(a,b)
-#define bit_test(a,b) ((a) >> (b) & 1)
-#define bit_clear(a,b) ((a) & ~((uinteger)1 << (b)))
-#define bit_set(a,b) ((a) | ((uinteger)1 << (b)))
-
-/* procedure parameter types for -A and -C++ */
-
-#define F2C_proc_par_types 1
-#ifdef __cplusplus
-typedef int /* Unknown procedure type */ (*U_fp)(...);
-typedef shortint (*J_fp)(...);
-typedef integer (*I_fp)(...);
-typedef real (*R_fp)(...);
-typedef doublereal (*D_fp)(...), (*E_fp)(...);
-typedef /* Complex */ void (*C_fp)(...);
-typedef /* Double Complex */ void (*Z_fp)(...);
-typedef logical (*L_fp)(...);
-typedef shortlogical (*K_fp)(...);
-typedef /* Character */ void (*H_fp)(...);
-typedef /* Subroutine */ int (*S_fp)(...);
-#else
-typedef int /* Unknown procedure type */ (*U_fp)();
-typedef shortint (*J_fp)();
-typedef integer (*I_fp)();
-typedef real (*R_fp)();
-typedef doublereal (*D_fp)(), (*E_fp)();
-typedef /* Complex */ void (*C_fp)();
-typedef /* Double Complex */ void (*Z_fp)();
-typedef logical (*L_fp)();
-typedef shortlogical (*K_fp)();
-typedef /* Character */ void (*H_fp)();
-typedef /* Subroutine */ int (*S_fp)();
-#endif
-/* E_fp is for real functions when -R is not specified */
-typedef void C_f; /* complex function */
-typedef void H_f; /* character function */
-typedef void Z_f; /* double complex function */
-typedef doublereal E_f; /* real function with -R not specified */
-
-/* undef any lower-case symbols that your C compiler predefines, e.g.: */
-
-#ifndef Skip_f2c_Undefs
-/* (No such symbols should be defined in a strict ANSI C compiler.
- We can avoid trouble with f2c-translated code by using
- gcc -ansi [-traditional].) */
-#undef cray
-#undef gcos
-#undef mc68010
-#undef mc68020
-#undef mips
-#undef pdp11
-#undef sgi
-#undef sparc
-#undef sun
-#undef sun2
-#undef sun3
-#undef sun4
-#undef u370
-#undef u3b
-#undef u3b2
-#undef u3b5
-#undef unix
-#undef vax
-#endif
-#endif
diff --git a/libf2c/libF77/F77_aloc.c b/libf2c/libF77/F77_aloc.c
deleted file mode 100644
index b2861029198..00000000000
--- a/libf2c/libF77/F77_aloc.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "f2c.h"
-#undef abs
-#undef min
-#undef max
-#include <stdio.h>
-
-static integer memfailure = 3;
-
-#include <stdlib.h>
-extern void G77_exit_0 (integer *);
-
-char *
-F77_aloc (integer Len, char *whence)
-{
- char *rv;
- unsigned int uLen = (unsigned int) Len; /* for K&R C */
-
- if (!(rv = (char *) malloc (uLen)))
- {
- fprintf (stderr, "malloc(%u) failure in %s\n", uLen, whence);
- G77_exit_0 (&memfailure);
- }
- return rv;
-}
diff --git a/libf2c/libF77/Makefile.in b/libf2c/libF77/Makefile.in
deleted file mode 100644
index 07af6eb2773..00000000000
--- a/libf2c/libF77/Makefile.in
+++ /dev/null
@@ -1,255 +0,0 @@
-# Makefile for GNU F77 compiler runtime.
-# Copyright 1990 - 1994 by AT&T Bell Laboratories and Bellcore (see the
-# file `Notice').
-# Portions of this file Copyright (C) 1995-1998, 2001 Free Software Foundation, Inc.
-# Contributed by Dave Love (d.love@dl.ac.uk).
-#
-#This file is part of GNU Fortran.
-#
-#GNU Fortran 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 Fortran 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 Fortran; see the file COPYING. If not, write to
-#the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-#02111-1307, USA.
-
-#### Start of system configuration section. ####
-
-# $(srcdir) must be set to the g77 runtime libF77 source directory.
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-# configure sets this to all the -D options appropriate for the
-# configuration.
-DEFS = @DEFS@
-
-F2C_H_DIR = @srcdir@/..
-G2C_H_DIR = ..
-CC = @CC@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-AR = @AR@
-ARFLAGS = rc
-RANLIB = @RANLIB@
-@SET_MAKE@
-
-SHELL = @SHELL@
-
-#### End of system configuration section. ####
-
-ALL_CFLAGS = -I. -I$(srcdir) -I$(G2C_H_DIR) -I$(F2C_H_DIR) $(CPPFLAGS) $(DEFS) $(WARN_CFLAGS) $(CFLAGS)
-
-.SUFFIXES:
-.SUFFIXES: .c .lo
-
-.c.lo:
- @LIBTOOL@ --mode=compile $(CC) -c -DSkip_f2c_Undefs $(ALL_CFLAGS) $<
-
-MISC = F77_aloc.lo VersionF.lo s_rnge.lo abort_.lo getarg_.lo iargc_.lo\
- getenv_.lo signal_.lo s_stop.lo s_paus.lo system_.lo cabs.lo\
- derf_.lo derfc_.lo erf_.lo erfc_.lo sig_die.lo exit_.lo setarg.lo setsig.lo
-POW = pow_ci.lo pow_dd.lo pow_di.lo pow_hh.lo pow_ii.lo pow_ri.lo pow_zi.lo pow_zz.lo \
- pow_qq.lo
-CX = c_abs.lo c_cos.lo c_div.lo c_exp.lo c_log.lo c_sin.lo c_sqrt.lo
-DCX = z_abs.lo z_cos.lo z_div.lo z_exp.lo z_log.lo z_sin.lo z_sqrt.lo
-REAL = r_abs.lo r_acos.lo r_asin.lo r_atan.lo r_atn2.lo r_cnjg.lo r_cos.lo\
- r_cosh.lo r_dim.lo r_exp.lo r_imag.lo r_int.lo\
- r_lg10.lo r_log.lo r_mod.lo r_nint.lo r_sign.lo\
- r_sin.lo r_sinh.lo r_sqrt.lo r_tan.lo r_tanh.lo
-DBL = d_abs.lo d_acos.lo d_asin.lo d_atan.lo d_atn2.lo\
- d_cnjg.lo d_cos.lo d_cosh.lo d_dim.lo d_exp.lo\
- d_imag.lo d_int.lo d_lg10.lo d_log.lo d_mod.lo\
- d_nint.lo d_prod.lo d_sign.lo d_sin.lo d_sinh.lo\
- d_sqrt.lo d_tan.lo d_tanh.lo
-INT = i_abs.lo i_dim.lo i_dnnt.lo i_indx.lo i_len.lo i_mod.lo i_nint.lo i_sign.lo
-HALF = h_abs.lo h_dim.lo h_dnnt.lo h_indx.lo h_len.lo h_mod.lo h_nint.lo h_sign.lo
-CMP = l_ge.lo l_gt.lo l_le.lo l_lt.lo hl_ge.lo hl_gt.lo hl_le.lo hl_lt.lo
-EFL = ef1asc_.lo ef1cmc_.lo
-CHAR = s_cat.lo s_cmp.lo s_copy.lo
-F90BIT = lbitbits.lo lbitshft.lo qbitbits.lo qbitshft.lo
-
-OBJS = $(MISC) $(POW) $(CX) $(DCX) $(REAL) $(DBL) $(INT) \
- $(HALF) $(CMP) $(EFL) $(CHAR) $(F90BIT)
-
-all: ../s-libf77 ../libfrtbegin.a
-
-../s-libf77: $(OBJS)
- -rm -f $@.T $@
- objs='$(OBJS)'; for name in $$objs; do \
- echo libF77/$${name} >> $@.T; done
- mv $@.T $@
-
-Makefile: Makefile.in config.status
- $(SHELL) config.status
-
-config.status: configure
- rm -f config.cache
- CONFIG_SITE=no-such-file CC='$(CC)' AR='$(AR)' CFLAGS='$(CFLAGS)' \
- CPPFLAGS='$(CPPFLAGS)' $(SHELL) config.status --recheck
-
-${srcdir}/configure: configure.in
- rm -f config.cache
- cd ${srcdir} && autoconf
-
-VersionF.lo: Version.c
- @LIBTOOL@ --mode=compile $(CC) -c $(ALL_CFLAGS) $(srcdir)/Version.c -o $@
-
-frtbegin.o : main.c
- $(CC) -c $(ALL_CFLAGS) $(srcdir)/main.c -o $@
-
-../libfrtbegin.a: frtbegin.o
- -rm -f $@
- $(AR) $(ARFLAGS) $@ frtbegin.o
- $(RANLIB) $@
-
-F77_aloc.lo: F77_aloc.c
-s_rnge.lo: s_rnge.c
-abort_.lo: abort_.c
-getarg_.lo: getarg_.c
-iargc_.lo: iargc_.c
-getenv_.lo: getenv_.c
-signal_.lo: signal_.c
-s_stop.lo: s_stop.c
-s_paus.lo: s_paus.c
-system_.lo: system_.c
-cabs.lo: cabs.c
-derf_.lo: derf_.c
-derfc_.lo: derfc_.c
-erf_.lo: erf_.c
-erfc_.lo: erfc_.c
-sig_die.lo: sig_die.c
-exit_.lo: exit_.c
-setarg.lo: setarg.c
-setsig.lo: setsig.c
-pow_ci.lo: pow_ci.c
-pow_dd.lo: pow_dd.c
-pow_di.lo: pow_di.c
-pow_hh.lo: pow_hh.c
-pow_ii.lo: pow_ii.c
-pow_ri.lo: pow_ri.c
-pow_zi.lo: pow_zi.c
-pow_zz.lo: pow_zz.c
-pow_qq.lo: pow_qq.c
-c_abs.lo: c_abs.c
-c_cos.lo: c_cos.c
-c_div.lo: c_div.c
-c_exp.lo: c_exp.c
-c_log.lo: c_log.c
-c_sin.lo: c_sin.c
-c_sqrt.lo: c_sqrt.c
-z_abs.lo: z_abs.c
-z_cos.lo: z_cos.c
-z_div.lo: z_div.c
-z_exp.lo: z_exp.c
-z_log.lo: z_log.c
- @LIBTOOL@ --mode=compile $(CC) -c -DSkip_f2c_Undefs $(ALL_CFLAGS) -ffloat-store $(srcdir)/z_log.c
-z_sin.lo: z_sin.c
-z_sqrt.lo: z_sqrt.c
-r_abs.lo: r_abs.c
-r_acos.lo: r_acos.c
-r_asin.lo: r_asin.c
-r_atan.lo: r_atan.c
-r_atn2.lo: r_atn2.c
-r_cnjg.lo: r_cnjg.c
-r_cos.lo: r_cos.c
-r_cosh.lo: r_cosh.c
-r_dim.lo: r_dim.c
-r_exp.lo: r_exp.c
-r_imag.lo: r_imag.c
-r_int.lo: r_int.c
-r_lg10.lo: r_lg10.c
-r_log.lo: r_log.c
-r_mod.lo: r_mod.c
-r_nint.lo: r_nint.c
-r_sign.lo: r_sign.c
-r_sin.lo: r_sin.c
-r_sinh.lo: r_sinh.c
-r_sqrt.lo: r_sqrt.c
-r_tan.lo: r_tan.c
-r_tanh.lo: r_tanh.c
-d_abs.lo: d_abs.c
-d_acos.lo: d_acos.c
-d_asin.lo: d_asin.c
-d_atan.lo: d_atan.c
-d_atn2.lo: d_atn2.c
-d_cnjg.lo: d_cnjg.c
-d_cos.lo: d_cos.c
-d_cosh.lo: d_cosh.c
-d_dim.lo: d_dim.c
-d_exp.lo: d_exp.c
-d_imag.lo: d_imag.c
-d_int.lo: d_int.c
-d_lg10.lo: d_lg10.c
-d_log.lo: d_log.c
-d_mod.lo: d_mod.c
-d_nint.lo: d_nint.c
-d_prod.lo: d_prod.c
-d_sign.lo: d_sign.c
-d_sin.lo: d_sin.c
-d_sinh.lo: d_sinh.c
-d_sqrt.lo: d_sqrt.c
-d_tan.lo: d_tan.c
-d_tanh.lo: d_tanh.c
-i_abs.lo: i_abs.c
-i_dim.lo: i_dim.c
-i_dnnt.lo: i_dnnt.c
-i_indx.lo: i_indx.c
-i_len.lo: i_len.c
-i_mod.lo: i_mod.c
-i_nint.lo: i_nint.c
-i_sign.lo: i_sign.c
-h_abs.lo: h_abs.c
-h_dim.lo: h_dim.c
-h_dnnt.lo: h_dnnt.c
-h_indx.lo: h_indx.c
-h_len.lo: h_len.c
-h_mod.lo: h_mod.c
-h_nint.lo: h_nint.c
-h_sign.lo: h_sign.c
-l_ge.lo: l_ge.c
-l_gt.lo: l_gt.c
-l_le.lo: l_le.c
-l_lt.lo: l_lt.c
-hl_ge.lo: hl_ge.c
-hl_gt.lo: hl_gt.c
-hl_le.lo: hl_le.c
-hl_lt.lo: hl_lt.c
-ef1asc_.lo: ef1asc_.c
-ef1cmc_.lo: ef1cmc_.c
-s_cat.lo: s_cat.c
-s_cmp.lo: s_cmp.c
-s_copy.lo: s_copy.c
-lbitbits.lo: lbitbits.c
-lbitshft.lo: lbitshft.c
-qbitbits.lo: qbitbits.c
-qbitshft.lo: qbitshft.c
-
-# Not quite all these actually do depend on f2c.h...
-$(MISC) $(POW) $(CX) $(DCX) $(REAL) $(DBL) $(INT) $(HALF) $(CMP) $(EFL) \
- $(CHAR) $(F90BIT): $(F2C_H_DIR)/f2c.h $(G2C_H_DIR)/g2c.h
-
-check install uninstall install-strip dist installcheck installdirs:
-
-mostlyclean:
- rm -f *.o *.lo ../libfrtbegin.a
- rm -rf .libs
-
-clean: mostlyclean
- rm -f config.log
- rm -f ../s-libf77
-
-distclean: clean
- rm -f config.cache config.status Makefile ../s-libf77 configure
-
-maintainer-clean:
-
-.PHONY: mostlyclean clean distclean maintainer-clean all check uninstall \
- install-strip dist installcheck installdirs archive
diff --git a/libf2c/libF77/Notice b/libf2c/libF77/Notice
deleted file mode 100644
index 261b719bc57..00000000000
--- a/libf2c/libF77/Notice
+++ /dev/null
@@ -1,23 +0,0 @@
-/****************************************************************
-Copyright 1990 - 1997 by AT&T, Lucent Technologies and Bellcore.
-
-Permission to use, copy, modify, and distribute this software
-and its documentation for any purpose and without fee is hereby
-granted, provided that the above copyright notice appear in all
-copies and that both that the copyright notice and this
-permission notice and warranty disclaimer appear in supporting
-documentation, and that the names of AT&T, Bell Laboratories,
-Lucent or Bellcore or any of their entities not be used in
-advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-AT&T, Lucent and Bellcore disclaim all warranties with regard to
-this software, including all implied warranties of
-merchantability and fitness. In no event shall AT&T, Lucent or
-Bellcore be liable for any special, indirect or consequential
-damages or any damages whatsoever resulting from loss of use,
-data or profits, whether in an action of contract, negligence or
-other tortious action, arising out of or in connection with the
-use or performance of this software.
-****************************************************************/
-
diff --git a/libf2c/libF77/README.netlib b/libf2c/libF77/README.netlib
deleted file mode 100644
index 5e532ee0990..00000000000
--- a/libf2c/libF77/README.netlib
+++ /dev/null
@@ -1,112 +0,0 @@
-If your compiler does not recognize ANSI C headers,
-compile with KR_headers defined: either add -DKR_headers
-to the definition of CFLAGS in the makefile, or insert
-
-#define KR_headers
-
-at the top of f2c.h , cabs.c , main.c , and sig_die.c .
-
-Under MS-DOS, compile s_paus.c with -DMSDOS.
-
-If you have a really ancient K&R C compiler that does not understand
-void, add -Dvoid=int to the definition of CFLAGS in the makefile.
-
-If you use a C++ compiler, first create a local f2c.h by appending
-f2ch.add to the usual f2c.h, e.g., by issuing the command
- make f2c.h
-which assumes f2c.h is installed in /usr/include .
-
-If your system lacks onexit() and you are not using an ANSI C
-compiler, then you should compile main.c, s_paus.c, s_stop.c, and
-sig_die.c with NO_ONEXIT defined. See the comments about onexit in
-the makefile.
-
-If your system has a double drem() function such that drem(a,b)
-is the IEEE remainder function (with double a, b), then you may
-wish to compile r_mod.c and d_mod.c with IEEE_drem defined.
-On some systems, you may also need to compile with -Ddrem=remainder .
-
-To check for transmission errors, issue the command
- make check
-This assumes you have the xsum program whose source, xsum.c,
-is distributed as part of "all from f2c/src". If you do not
-have xsum, you can obtain xsum.c by sending the following E-mail
-message to netlib@netlib.bell-labs.com
- send xsum.c from f2c/src
-
-The makefile assumes you have installed f2c.h in a standard
-place (and does not cause recompilation when f2c.h is changed);
-f2c.h comes with "all from f2c" (the source for f2c) and is
-available separately ("f2c.h from f2c").
-
-Most of the routines in libF77 are support routines for Fortran
-intrinsic functions or for operations that f2c chooses not
-to do "in line". There are a few exceptions, summarized below --
-functions and subroutines that appear to your program as ordinary
-external Fortran routines.
-
-1. CALL ABORT prints a message and causes a core dump.
-
-2. ERF(r) and DERF(d) and the REAL and DOUBLE PRECISION
- error functions (with x REAL and d DOUBLE PRECISION);
- DERF must be declared DOUBLE PRECISION in your program.
- Both ERF and DERF assume your C library provides the
- underlying erf() function (which not all systems do).
-
-3. ERFC(r) and DERFC(d) are the complementary error functions:
- ERFC(r) = 1 - ERF(r) and DERFC(d) = 1.d0 - DERFC(d)
- (except that their results may be more accurate than
- explicitly evaluating the above formulae would give).
- Again, ERFC and r are REAL, and DERFC and d are DOUBLE
- PRECISION (and must be declared as such in your program),
- and ERFC and DERFC rely on your system's erfc().
-
-4. CALL GETARG(n,s), where n is an INTEGER and s is a CHARACTER
- variable, sets s to the n-th command-line argument (or to
- all blanks if there are fewer than n command-line arguments);
- CALL GETARG(0,s) sets s to the name of the program (on systems
- that support this feature). See IARGC below.
-
-5. CALL GETENV(name, value), where name and value are of type
- CHARACTER, sets value to the environment value, $name, of
- name (or to blanks if $name has not been set).
-
-6. NARGS = IARGC() sets NARGS to the number of command-line
- arguments (an INTEGER value).
-
-7. CALL SIGNAL(n,func), where n is an INTEGER and func is an
- EXTERNAL procedure, arranges for func to be invoked when
- signal n occurs (on systems where this makes sense).
-
-8. CALL SYSTEM(cmd), where cmd is of type CHARACTER, passes
- cmd to the system's command processor (on systems where
- this can be done).
-
-The makefile does not attempt to compile pow_qq.c, qbitbits.c,
-and qbitshft.c, which are meant for use with INTEGER*8. To use
-INTEGER*8, you must modify f2c.h to declare longint and ulongint
-appropriately; then add pow_qq.o to the POW = line in the makefile,
-and add " qbitbits.o qbitshft.o" to the makefile's F90BIT = line.
-
-Following Fortran 90, s_cat.c and s_copy.c allow the target of a
-(character string) assignment to be appear on its right-hand, at
-the cost of some extra overhead for all run-time concatenations.
-If you prefer the extra efficiency that comes with the Fortran 77
-requirement that the left-hand side of a character assignment not
-be involved in the right-hand side, compile s_cat.c and s_copy.c
-with -DNO_OVERWRITE .
-
-If your system lacks a ranlib command, you don't need it.
-Either comment out the makefile's ranlib invocation, or install
-a harmless "ranlib" command somewhere in your PATH, such as the
-one-line shell script
-
- exit 0
-
-or (on some systems)
-
- exec /usr/bin/ar lts $1 >/dev/null
-
-If your compiler complains about the signal calls in main.c, s_paus.c,
-and signal_.c, you may need to adjust signal1.h suitably. See the
-comments in signal1.h.
diff --git a/libf2c/libF77/Version.c b/libf2c/libF77/Version.c
deleted file mode 100644
index a27b0df7696..00000000000
--- a/libf2c/libF77/Version.c
+++ /dev/null
@@ -1,94 +0,0 @@
-const char __LIBF77_VERSION__[] = "@(#) LIBF77 VERSION 20000929\n";
-extern const char __LIBI77_VERSION__[];
-extern const char __LIBU77_VERSION__[];
-
-/*
-2.00 11 June 1980. File version.c added to library.
-2.01 31 May 1988. s_paus() flushes stderr; names of hl_* fixed
- [ d]erf[c ] added
- 8 Aug. 1989: #ifdefs for f2c -i2 added to s_cat.c
- 29 Nov. 1989: s_cmp returns long (for f2c)
- 30 Nov. 1989: arg types from f2c.h
- 12 Dec. 1989: s_rnge allows long names
- 19 Dec. 1989: getenv_ allows unsorted environment
- 28 Mar. 1990: add exit(0) to end of main()
- 2 Oct. 1990: test signal(...) == SIG_IGN rather than & 01 in main
- 17 Oct. 1990: abort() calls changed to sig_die(...,1)
- 22 Oct. 1990: separate sig_die from main
- 25 Apr. 1991: minor, theoretically invisible tweaks to s_cat, sig_die
- 31 May 1991: make system_ return status
- 18 Dec. 1991: change long to ftnlen (for -i2) many places
- 28 Feb. 1992: repair z_sqrt.c (scribbled on input, gave wrong answer)
- 18 July 1992: for n < 0, repair handling of 0**n in pow_[dr]i.c
- and m**n in pow_hh.c and pow_ii.c;
- catch SIGTRAP in main() for error msg before abort
- 23 July 1992: switch to ANSI prototypes unless KR_headers is #defined
- 23 Oct. 1992: fix botch in signal_.c (erroneous deref of 2nd arg);
- change Cabs to f__cabs.
- 12 March 1993: various tweaks for C++
- 2 June 1994: adjust so abnormal terminations invoke f_exit just once
- 16 Sept. 1994: s_cmp: treat characters as unsigned in comparisons.
- 19 Sept. 1994: s_paus: flush after end of PAUSE; add -DMSDOS
- 12 Jan. 1995: pow_[dhiqrz][hiq]: adjust x**i to work on machines
- that sign-extend right shifts when i is the most
- negative integer.
- 26 Jan. 1995: adjust s_cat.c, s_copy.c to permit the left-hand side
- of character assignments to appear on the right-hand
- side (unless compiled with -DNO_OVERWRITE).
- 27 Jan. 1995: minor tweak to s_copy.c: copy forward whenever
- possible (for better cache behavior).
- 30 May 1995: added subroutine exit(rc) integer rc. Version not changed.
- 29 Aug. 1995: add F77_aloc.c; use it in s_cat.c and system_.c.
- 6 Sept. 1995: fix return type of system_ under -DKR_headers.
- 19 Dec. 1995: s_cat.c: fix bug when 2nd or later arg overlaps lhs.
- 19 Mar. 1996: s_cat.c: supply missing break after overlap detection.
- 13 May 1996: add [lq]bitbits.c and [lq]bitshft.c (f90 bit intrinsics).
- 19 June 1996: add casts to unsigned in [lq]bitshft.c.
- 26 Feb. 1997: adjust functions with a complex output argument
- to permit aliasing it with input arguments.
- (For now, at least, this is just for possible
- benefit of g77.)
- 4 April 1997: [cz]_div.c: tweaks invisible on most systems (that may
- affect systems using gratuitous extra precision).
- 19 Sept. 1997: [de]time_.c (Unix systems only): change return
- type to double.
- 2 May 1999: getenv_.c: omit environ in favor of getenv().
- c_cos.c, c_exp.c, c_sin.c, d_cnjg.c, r_cnjg.c,
- z_cos.c, z_exp.c, z_log.c, z_sin.c: cope fully with
- overlapping arguments caused by equivalence.
- 3 May 1999: "invisible" tweaks to omit compiler warnings in
- abort_.c, ef1asc_.c, s_rnge.c, s_stop.c.
- 7 Sept. 1999: [cz]_div.c: arrange for compilation under
- -DIEEE_COMPLEX_DIVIDE to make these routines
- avoid calling sig_die when the denominator
- vanishes; instead, they return pairs of NaNs
- or Infinities, depending whether the numerator
- also vanishes or not. VERSION not changed.
- 15 Nov. 1999: s_rnge.c: add casts for the case of
- sizeof(ftnint) == sizeof(int) < sizeof(long).
- 10 March 2000: z_log.c: improve accuracy of Real(log(z)) for, e.g.,
- z near (+-1,eps) with |eps| small. For the old
- evaluation, compile with -DPre20000310 .
- 20 April 2000: s_cat.c: tweak argument types to accord with
- calls by f2c when ftnint and ftnlen are of
- different sizes (different numbers of bits).
- 4 July 2000: adjustments to permit compilation by C++ compilers;
- VERSION string remains unchanged. NOT APPLIED FOR G77.
- 29 Sept. 2000: dtime_.c, etime_.c: use floating-point divide.
- dtime_.d, erf_.c, erfc_.c, etime.c: for use with
- "f2c -R", compile with -DREAL=float.
-*/
-
-#include <stdio.h>
-
-void
-g77__fvers__ ()
-{
- fputs ("GNU Fortran library.\n", stderr);
-#if defined __GNUC__ && defined __VERSION__
- fprintf (stderr, "Compiled by GCC %s\n", __VERSION__);
-#endif
- fputs (__LIBF77_VERSION__, stderr);
- fputs (__LIBI77_VERSION__, stderr);
- fputs (__LIBU77_VERSION__, stderr);
-}
diff --git a/libf2c/libF77/abort_.c b/libf2c/libF77/abort_.c
deleted file mode 100644
index 761bc3bd6e9..00000000000
--- a/libf2c/libF77/abort_.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <stdio.h>
-#include "f2c.h"
-
-extern void sig_die (char *, int);
-
-int
-G77_abort_0 (void)
-{
- sig_die ("Fortran abort routine called", 1);
- return 0; /* not reached */
-}
diff --git a/libf2c/libF77/c_abs.c b/libf2c/libF77/c_abs.c
deleted file mode 100644
index 3fc4d7c0a6a..00000000000
--- a/libf2c/libF77/c_abs.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-extern double f__cabs (double, double);
-
-double
-c_abs (complex * z)
-{
- return (f__cabs (z->r, z->i));
-}
diff --git a/libf2c/libF77/c_cos.c b/libf2c/libF77/c_cos.c
deleted file mode 100644
index 59659754978..00000000000
--- a/libf2c/libF77/c_cos.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include "math.h"
-
-void
-c_cos (complex * r, complex * z)
-{
- double zi = z->i, zr = z->r;
- r->r = cos (zr) * cosh (zi);
- r->i = -sin (zr) * sinh (zi);
-}
diff --git a/libf2c/libF77/c_div.c b/libf2c/libF77/c_div.c
deleted file mode 100644
index b5ede0eb801..00000000000
--- a/libf2c/libF77/c_div.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "f2c.h"
-
-extern void sig_die (char *, int);
-void
-c_div (complex * c, complex * a, complex * b)
-{
- double ratio, den;
- double abr, abi, cr;
-
- if ((abr = b->r) < 0.)
- abr = -abr;
- if ((abi = b->i) < 0.)
- abi = -abi;
- if (abr <= abi)
- {
- if (abi == 0)
- {
-#ifdef IEEE_COMPLEX_DIVIDE
- float af, bf;
- af = bf = abr;
- if (a->i != 0 || a->r != 0)
- af = 1.;
- c->i = c->r = af / bf;
- return;
-#else
- sig_die ("complex division by zero", 1);
-#endif
- }
- ratio = (double) b->r / b->i;
- den = b->i * (1 + ratio * ratio);
- cr = (a->r * ratio + a->i) / den;
- c->i = (a->i * ratio - a->r) / den;
- }
-
- else
- {
- ratio = (double) b->i / b->r;
- den = b->r * (1 + ratio * ratio);
- cr = (a->r + a->i * ratio) / den;
- c->i = (a->i - a->r * ratio) / den;
- }
- c->r = cr;
-}
diff --git a/libf2c/libF77/c_exp.c b/libf2c/libF77/c_exp.c
deleted file mode 100644
index 56a8695420c..00000000000
--- a/libf2c/libF77/c_exp.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include "math.h"
-
-void
-c_exp (complex * r, complex * z)
-{
- double expx, zi = z->i;
-
- expx = exp (z->r);
- r->r = expx * cos (zi);
- r->i = expx * sin (zi);
-}
diff --git a/libf2c/libF77/c_log.c b/libf2c/libF77/c_log.c
deleted file mode 100644
index 7d5b9513167..00000000000
--- a/libf2c/libF77/c_log.c
+++ /dev/null
@@ -1,13 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include "math.h"
-extern double f__cabs (double, double);
-
-void
-c_log (complex * r, complex * z)
-{
- double zi, zr;
- r->i = atan2 (zi = z->i, zr = z->r);
- r->r = log (f__cabs (zr, zi));
-}
diff --git a/libf2c/libF77/c_sin.c b/libf2c/libF77/c_sin.c
deleted file mode 100644
index 44bce9f7739..00000000000
--- a/libf2c/libF77/c_sin.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include "math.h"
-
-void
-c_sin (complex * r, complex * z)
-{
- double zi = z->i, zr = z->r;
- r->r = sin (zr) * cosh (zi);
- r->i = cos (zr) * sinh (zi);
-}
diff --git a/libf2c/libF77/c_sqrt.c b/libf2c/libF77/c_sqrt.c
deleted file mode 100644
index 81b72fc372e..00000000000
--- a/libf2c/libF77/c_sqrt.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include "math.h"
-extern double f__cabs (double, double);
-
-void
-c_sqrt (complex * r, complex * z)
-{
- double mag, t;
- double zi = z->i, zr = z->r;
-
- if ((mag = f__cabs (zr, zi)) == 0.)
- r->r = r->i = 0.;
- else if (zr > 0)
- {
- r->r = t = sqrt (0.5 * (mag + zr));
- t = zi / t;
- r->i = 0.5 * t;
- }
- else
- {
- t = sqrt (0.5 * (mag - zr));
- if (zi < 0)
- t = -t;
- r->i = t;
- t = zi / t;
- r->r = 0.5 * t;
- }
-}
diff --git a/libf2c/libF77/cabs.c b/libf2c/libF77/cabs.c
deleted file mode 100644
index 5d2142e1825..00000000000
--- a/libf2c/libF77/cabs.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#undef abs
-#include <math.h>
-double
-f__cabs (double real, double imag)
-{
- double temp;
-
- if (real < 0)
- real = -real;
- if (imag < 0)
- imag = -imag;
- if (imag > real)
- {
- temp = real;
- real = imag;
- imag = temp;
- }
- if ((real + imag) == real)
- return (real);
-
- temp = imag / real;
- temp = real * sqrt (1.0 + temp * temp); /*overflow!! */
- return (temp);
-}
diff --git a/libf2c/libF77/configure.in b/libf2c/libF77/configure.in
deleted file mode 100644
index b9f0f222fd7..00000000000
--- a/libf2c/libF77/configure.in
+++ /dev/null
@@ -1,111 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-# Copyright (C) 1995, 1997, 1998, 2001 Free Software Foundation, Inc.
-# Contributed by Dave Love (d.love@dl.ac.uk).
-#
-#This file is part of GNU Fortran.
-#
-#GNU Fortran 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 Fortran 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 Fortran; see the file COPYING. If not, write to
-#the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-#02111-1307, USA.
-
-AC_PREREQ(2.13)
-AC_INIT(getarg_.c)
-
-dnl Checks for programs.
-
-dnl FIXME AC_PROG_CC wants CC to be able to link things, but it may
-dnl not be able to.
-define([AC_PROG_CC_WORKS],[])
-
-# For g77 we'll set CC to point at the built gcc, but this will get it into
-# the makefiles
-AC_PROG_CC
-
-LIBTOOL='$(SHELL) ../libtool'
-AC_SUBST(LIBTOOL)
-
-test "$AR" || AR=ar
-AC_SUBST(AR)
-if test "$RANLIB"; then :
- AC_SUBST(RANLIB)
-else
- AC_PROG_RANLIB
-fi
-AC_PROG_MAKE_SET
-
-dnl Checks for libraries.
-
-dnl Checks for header files.
-# Sanity check for the cross-compilation case:
-AC_CHECK_HEADER(stdio.h,:,
- [AC_MSG_ERROR([Can't find stdio.h.
-You must have a usable C system for the target already installed, at least
-including headers and, preferably, the library, before you can configure
-the G77 runtime system. If necessary, install gcc now with \`LANGUAGES=c',
-then the target library, then build with \`LANGUAGES=f77'.])])
-
-AC_HEADER_STDC
-AC_MSG_CHECKING(for posix)
-AC_CACHE_VAL(g77_cv_header_posix,
- AC_EGREP_CPP(yes,
- [#include <sys/types.h>
-#include <unistd.h>
-#ifdef _POSIX_VERSION
- yes
-#endif
-],
- g77_cv_header_posix=yes,
- g77_cv_header_posix=no))
-AC_MSG_RESULT($g77_cv_header_posix)
-
-# We can rely on the GNU library being posix-ish. I guess checking the
-# header isn't actually like checking the functions, though...
-AC_MSG_CHECKING(for GNU library)
-AC_CACHE_VAL(g77_cv_lib_gnu,
- AC_EGREP_CPP(yes,
- [#include <stdio.h>
-#ifdef __GNU_LIBRARY__
- yes
-#endif
-],
- g77_cv_lib_gnu=yes, g77_cv_lib_gnu=no))
-AC_MSG_RESULT($g77_cv_lib_gnu)
-
-dnl Checks for library functions.
-AC_TYPE_SIGNAL
-# we'll get atexit by default
-if test $ac_cv_header_stdc != yes; then
-AC_CHECK_FUNC(atexit,
- AC_DEFINE(onexit,atexit),dnl just in case
- [AC_DEFINE(NO_ONEXIT)
- AC_CHECK_FUNC(onexit,,
- [AC_CHECK_FUNC(on_exit,
- AC_DEFINE(onexit,on_exit),)])])
-else true
-fi
-
-dnl perhaps should check also for remainder
-dnl Unfortunately, the message implies we're just checking for -lm...
-AC_CHECK_LIB(m,drem,AC_DEFINE(IEEE_drem))
-
-AC_DEFINE(Skip_f2c_Undefs)
-AC_DEFINE(IEEE_COMPLEX_DIVIDE)
-
-AC_OUTPUT(Makefile)
-
-dnl Local Variables:
-dnl comment-start: "dnl "
-dnl comment-end: ""
-dnl comment-start-skip: "\\bdnl\\b\\s *"
-dnl End:
diff --git a/libf2c/libF77/d_abs.c b/libf2c/libF77/d_abs.c
deleted file mode 100644
index a43a5c7f0a8..00000000000
--- a/libf2c/libF77/d_abs.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-double
-d_abs (doublereal * x)
-{
- if (*x >= 0)
- return (*x);
- return (-*x);
-}
diff --git a/libf2c/libF77/d_acos.c b/libf2c/libF77/d_acos.c
deleted file mode 100644
index 41c4f172c65..00000000000
--- a/libf2c/libF77/d_acos.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-d_acos (doublereal * x)
-{
- return (acos (*x));
-}
diff --git a/libf2c/libF77/d_asin.c b/libf2c/libF77/d_asin.c
deleted file mode 100644
index 65603891501..00000000000
--- a/libf2c/libF77/d_asin.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-d_asin (doublereal * x)
-{
- return (asin (*x));
-}
diff --git a/libf2c/libF77/d_atan.c b/libf2c/libF77/d_atan.c
deleted file mode 100644
index e25fa2e4177..00000000000
--- a/libf2c/libF77/d_atan.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-d_atan (doublereal * x)
-{
- return (atan (*x));
-}
diff --git a/libf2c/libF77/d_atn2.c b/libf2c/libF77/d_atn2.c
deleted file mode 100644
index e0b217863a5..00000000000
--- a/libf2c/libF77/d_atn2.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-d_atn2 (doublereal * x, doublereal * y)
-{
- return (atan2 (*x, *y));
-}
diff --git a/libf2c/libF77/d_cnjg.c b/libf2c/libF77/d_cnjg.c
deleted file mode 100644
index bc46ae69598..00000000000
--- a/libf2c/libF77/d_cnjg.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-void
-d_cnjg (doublecomplex * r, doublecomplex * z)
-{
- doublereal zi = z->i;
- r->r = z->r;
- r->i = -zi;
-}
diff --git a/libf2c/libF77/d_cos.c b/libf2c/libF77/d_cos.c
deleted file mode 100644
index 010db6b5421..00000000000
--- a/libf2c/libF77/d_cos.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-d_cos (doublereal * x)
-{
- return (cos (*x));
-}
diff --git a/libf2c/libF77/d_cosh.c b/libf2c/libF77/d_cosh.c
deleted file mode 100644
index 00938bda13e..00000000000
--- a/libf2c/libF77/d_cosh.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-d_cosh (doublereal * x)
-{
- return (cosh (*x));
-}
diff --git a/libf2c/libF77/d_dim.c b/libf2c/libF77/d_dim.c
deleted file mode 100644
index a4274ca6859..00000000000
--- a/libf2c/libF77/d_dim.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "f2c.h"
-
-double
-d_dim (doublereal * a, doublereal * b)
-{
- return (*a > *b ? *a - *b : 0);
-}
diff --git a/libf2c/libF77/d_exp.c b/libf2c/libF77/d_exp.c
deleted file mode 100644
index 7b4f3e529c4..00000000000
--- a/libf2c/libF77/d_exp.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-d_exp (doublereal * x)
-{
- return (exp (*x));
-}
diff --git a/libf2c/libF77/d_imag.c b/libf2c/libF77/d_imag.c
deleted file mode 100644
index cc937644b75..00000000000
--- a/libf2c/libF77/d_imag.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "f2c.h"
-
-double
-d_imag (doublecomplex * z)
-{
- return (z->i);
-}
diff --git a/libf2c/libF77/d_int.c b/libf2c/libF77/d_int.c
deleted file mode 100644
index f7ab8b0cb6a..00000000000
--- a/libf2c/libF77/d_int.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-d_int (doublereal * x)
-{
- return ((*x > 0) ? floor (*x) : -floor (-*x));
-}
diff --git a/libf2c/libF77/d_lg10.c b/libf2c/libF77/d_lg10.c
deleted file mode 100644
index d0f86e554d0..00000000000
--- a/libf2c/libF77/d_lg10.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "f2c.h"
-
-#define log10e 0.43429448190325182765
-
-#undef abs
-#include <math.h>
-double
-d_lg10 (doublereal * x)
-{
- return (log10e * log (*x));
-}
diff --git a/libf2c/libF77/d_log.c b/libf2c/libF77/d_log.c
deleted file mode 100644
index 95dc767fb2a..00000000000
--- a/libf2c/libF77/d_log.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-d_log (doublereal * x)
-{
- return (log (*x));
-}
diff --git a/libf2c/libF77/d_mod.c b/libf2c/libF77/d_mod.c
deleted file mode 100644
index 15cedefadd1..00000000000
--- a/libf2c/libF77/d_mod.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include "f2c.h"
-
-#ifdef IEEE_drem
-double drem (double, double);
-#else
-#undef abs
-#include <math.h>
-#endif
-double
-d_mod (doublereal * x, doublereal * y)
-{
-#ifdef IEEE_drem
- double xa, ya, z;
- if ((ya = *y) < 0.)
- ya = -ya;
- z = drem (xa = *x, ya);
- if (xa > 0)
- {
- if (z < 0)
- z += ya;
- }
- else if (z > 0)
- z -= ya;
- return z;
-#else
- double quotient;
- if ((quotient = *x / *y) >= 0)
- quotient = floor (quotient);
- else
- quotient = -floor (-quotient);
- return (*x - (*y) * quotient);
-#endif
-}
diff --git a/libf2c/libF77/d_nint.c b/libf2c/libF77/d_nint.c
deleted file mode 100644
index 8be42758644..00000000000
--- a/libf2c/libF77/d_nint.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-d_nint (doublereal * x)
-{
- return ((*x) >= 0 ? floor (*x + .5) : -floor (.5 - *x));
-}
diff --git a/libf2c/libF77/d_prod.c b/libf2c/libF77/d_prod.c
deleted file mode 100644
index 11fe2c7f68e..00000000000
--- a/libf2c/libF77/d_prod.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "f2c.h"
-
-double
-d_prod (real * x, real * y)
-{
- return ((*x) * (*y));
-}
diff --git a/libf2c/libF77/d_sign.c b/libf2c/libF77/d_sign.c
deleted file mode 100644
index da8d24ba7a1..00000000000
--- a/libf2c/libF77/d_sign.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-double
-d_sign (doublereal * a, doublereal * b)
-{
- double x;
- x = (*a >= 0 ? *a : -*a);
- return (*b >= 0 ? x : -x);
-}
diff --git a/libf2c/libF77/d_sin.c b/libf2c/libF77/d_sin.c
deleted file mode 100644
index 24b37a439e5..00000000000
--- a/libf2c/libF77/d_sin.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-d_sin (doublereal * x)
-{
- return (sin (*x));
-}
diff --git a/libf2c/libF77/d_sinh.c b/libf2c/libF77/d_sinh.c
deleted file mode 100644
index dc9dc439073..00000000000
--- a/libf2c/libF77/d_sinh.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-d_sinh (doublereal * x)
-{
- return (sinh (*x));
-}
diff --git a/libf2c/libF77/d_sqrt.c b/libf2c/libF77/d_sqrt.c
deleted file mode 100644
index 0a458823318..00000000000
--- a/libf2c/libF77/d_sqrt.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-d_sqrt (doublereal * x)
-{
- return (sqrt (*x));
-}
diff --git a/libf2c/libF77/d_tan.c b/libf2c/libF77/d_tan.c
deleted file mode 100644
index 370c1b85fef..00000000000
--- a/libf2c/libF77/d_tan.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-d_tan (doublereal * x)
-{
- return (tan (*x));
-}
diff --git a/libf2c/libF77/d_tanh.c b/libf2c/libF77/d_tanh.c
deleted file mode 100644
index df81ea0df22..00000000000
--- a/libf2c/libF77/d_tanh.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-d_tanh (doublereal * x)
-{
- return (tanh (*x));
-}
diff --git a/libf2c/libF77/derf_.c b/libf2c/libF77/derf_.c
deleted file mode 100644
index b78fde0e9b4..00000000000
--- a/libf2c/libF77/derf_.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "f2c.h"
-
-extern double erf (double);
-double
-G77_derf_0 (doublereal * x)
-{
- return (erf (*x));
-}
diff --git a/libf2c/libF77/derfc_.c b/libf2c/libF77/derfc_.c
deleted file mode 100644
index 78e8e889c38..00000000000
--- a/libf2c/libF77/derfc_.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-extern double erfc (double);
-
-double
-G77_derfc_0 (doublereal * x)
-{
- return (erfc (*x));
-}
diff --git a/libf2c/libF77/dtime_.c b/libf2c/libF77/dtime_.c
deleted file mode 100644
index e2ea1c6b5d6..00000000000
--- a/libf2c/libF77/dtime_.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "time.h"
-
-#ifdef MSDOS
-#undef USE_CLOCK
-#define USE_CLOCK
-#endif
-
-#ifndef USE_CLOCK
-#define _INCLUDE_POSIX_SOURCE /* for HP-UX */
-#define _INCLUDE_XOPEN_SOURCE /* for HP-UX */
-#include "sys/types.h"
-#include "sys/times.h"
-#endif
-
-#undef Hz
-#ifdef CLK_TCK
-#define Hz CLK_TCK
-#else
-#ifdef HZ
-#define Hz HZ
-#else
-#define Hz 60
-#endif
-#endif
-
-double
-dtime_ (float *tarray)
-{
-#ifdef USE_CLOCK
-#ifndef CLOCKS_PER_SECOND
-#define CLOCKS_PER_SECOND Hz
-#endif
- static double t0;
- double t = clock ();
- tarray[1] = 0;
- tarray[0] = (t - t0) / CLOCKS_PER_SECOND;
- t0 = t;
- return tarray[0];
-#else
- struct tms t;
- static struct tms t0;
-
- times (&t);
- tarray[0] = (double) (t.tms_utime - t0.tms_utime) / Hz;
- tarray[1] = (double) (t.tms_stime - t0.tms_stime) / Hz;
- t0 = t;
- return tarray[0] + tarray[1];
-#endif
-}
diff --git a/libf2c/libF77/ef1asc_.c b/libf2c/libF77/ef1asc_.c
deleted file mode 100644
index d9bea344e4f..00000000000
--- a/libf2c/libF77/ef1asc_.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/* EFL support routine to copy string b to string a */
-
-#include "f2c.h"
-
-
-#define M ( (long) (sizeof(long) - 1) )
-#define EVEN(x) ( ( (x)+ M) & (~M) )
-
-extern void s_copy (char *, char *, ftnlen, ftnlen);
-int
-G77_ef1asc_0 (ftnint * a, ftnlen * la, ftnint * b, ftnlen * lb)
-{
- s_copy ((char *) a, (char *) b, EVEN (*la), *lb);
- return 0; /* ignored return value */
-}
diff --git a/libf2c/libF77/ef1cmc_.c b/libf2c/libF77/ef1cmc_.c
deleted file mode 100644
index 2e102fb6b5d..00000000000
--- a/libf2c/libF77/ef1cmc_.c
+++ /dev/null
@@ -1,10 +0,0 @@
-/* EFL support routine to compare two character strings */
-
-#include "f2c.h"
-
-extern integer s_cmp (char *, char *, ftnlen, ftnlen);
-integer
-G77_ef1cmc_0 (ftnint * a, ftnlen * la, ftnint * b, ftnlen * lb)
-{
- return (s_cmp ((char *) a, (char *) b, *la, *lb));
-}
diff --git a/libf2c/libF77/erf_.c b/libf2c/libF77/erf_.c
deleted file mode 100644
index fadbfaf038a..00000000000
--- a/libf2c/libF77/erf_.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "f2c.h"
-
-extern double erf (double);
-double
-G77_erf_0 (real * x)
-{
- return (erf (*x));
-}
diff --git a/libf2c/libF77/erfc_.c b/libf2c/libF77/erfc_.c
deleted file mode 100644
index 7f3ff8a5dbd..00000000000
--- a/libf2c/libF77/erfc_.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "f2c.h"
-
-extern double erfc (double);
-double
-G77_erfc_0 (real * x)
-{
- return (erfc (*x));
-}
diff --git a/libf2c/libF77/etime_.c b/libf2c/libF77/etime_.c
deleted file mode 100644
index cc64612c8d9..00000000000
--- a/libf2c/libF77/etime_.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "time.h"
-
-#ifdef MSDOS
-#undef USE_CLOCK
-#define USE_CLOCK
-#endif
-
-#ifndef USE_CLOCK
-#define _INCLUDE_POSIX_SOURCE /* for HP-UX */
-#define _INCLUDE_XOPEN_SOURCE /* for HP-UX */
-#include "sys/types.h"
-#include "sys/times.h"
-#endif
-
-#undef Hz
-#ifdef CLK_TCK
-#define Hz CLK_TCK
-#else
-#ifdef HZ
-#define Hz HZ
-#else
-#define Hz 60
-#endif
-#endif
-
-double
-etime_ (float *tarray)
-{
-#ifdef USE_CLOCK
-#ifndef CLOCKS_PER_SECOND
-#define CLOCKS_PER_SECOND Hz
-#endif
- double t = clock ();
- tarray[1] = 0;
- return tarray[0] = t / CLOCKS_PER_SECOND;
-#else
- struct tms t;
-
- times (&t);
- return (tarray[0] = (double) t.tms_utime / Hz)
- + (tarray[1] = (double) t.tms_stime / Hz);
-#endif
-}
diff --git a/libf2c/libF77/exit_.c b/libf2c/libF77/exit_.c
deleted file mode 100644
index adf3d859274..00000000000
--- a/libf2c/libF77/exit_.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* This gives the effect of
-
- subroutine exit(rc)
- integer*4 rc
- stop
- end
-
- * with the added side effect of supplying rc as the program's exit code.
- */
-
-#include "f2c.h"
-#undef abs
-#undef min
-#undef max
-#include <stdlib.h>
-extern void f_exit (void);
-
-void
-G77_exit_0 (integer * rc)
-{
-#ifdef NO_ONEXIT
- f_exit ();
-#endif
- exit (*rc);
-}
diff --git a/libf2c/libF77/f2ch.add b/libf2c/libF77/f2ch.add
deleted file mode 100644
index 04b13e8de5d..00000000000
--- a/libf2c/libF77/f2ch.add
+++ /dev/null
@@ -1,163 +0,0 @@
-/* If you are using a C++ compiler, append the following to f2c.h
- for compiling libF77 and libI77. */
-
-#ifdef __cplusplus
-extern "C"
-{
- extern int abort_ (void);
- extern double c_abs (complex *);
- extern void c_cos (complex *, complex *);
- extern void c_div (complex *, complex *, complex *);
- extern void c_exp (complex *, complex *);
- extern void c_log (complex *, complex *);
- extern void c_sin (complex *, complex *);
- extern void c_sqrt (complex *, complex *);
- extern double d_abs (double *);
- extern double d_acos (double *);
- extern double d_asin (double *);
- extern double d_atan (double *);
- extern double d_atn2 (double *, double *);
- extern void d_cnjg (doublecomplex *, doublecomplex *);
- extern double d_cos (double *);
- extern double d_cosh (double *);
- extern double d_dim (double *, double *);
- extern double d_exp (double *);
- extern double d_imag (doublecomplex *);
- extern double d_int (double *);
- extern double d_lg10 (double *);
- extern double d_log (double *);
- extern double d_mod (double *, double *);
- extern double d_nint (double *);
- extern double d_prod (float *, float *);
- extern double d_sign (double *, double *);
- extern double d_sin (double *);
- extern double d_sinh (double *);
- extern double d_sqrt (double *);
- extern double d_tan (double *);
- extern double d_tanh (double *);
- extern double derf_ (double *);
- extern double derfc_ (double *);
- extern integer do_fio (ftnint *, char *, ftnlen);
- extern integer do_lio (ftnint *, ftnint *, char *, ftnlen);
- extern integer do_uio (ftnint *, char *, ftnlen);
- extern integer e_rdfe (void);
- extern integer e_rdue (void);
- extern integer e_rsfe (void);
- extern integer e_rsfi (void);
- extern integer e_rsle (void);
- extern integer e_rsli (void);
- extern integer e_rsue (void);
- extern integer e_wdfe (void);
- extern integer e_wdue (void);
- extern integer e_wsfe (void);
- extern integer e_wsfi (void);
- extern integer e_wsle (void);
- extern integer e_wsli (void);
- extern integer e_wsue (void);
- extern int ef1asc_ (ftnint *, ftnlen *, ftnint *, ftnlen *);
- extern integer ef1cmc_ (ftnint *, ftnlen *, ftnint *, ftnlen *);
- extern double erf (double);
- extern double erf_ (float *);
- extern double erfc (double);
- extern double erfc_ (float *);
- extern integer f_back (alist *);
- extern integer f_clos (cllist *);
- extern integer f_end (alist *);
- extern void f_exit (void);
- extern integer f_inqu (inlist *);
- extern integer f_open (olist *);
- extern integer f_rew (alist *);
- extern int flush_ (void);
- extern void getarg_ (integer *, char *, ftnlen);
- extern void getenv_ (char *, char *, ftnlen, ftnlen);
- extern short h_abs (short *);
- extern short h_dim (short *, short *);
- extern short h_dnnt (double *);
- extern short h_indx (char *, char *, ftnlen, ftnlen);
- extern short h_len (char *, ftnlen);
- extern short h_mod (short *, short *);
- extern short h_nint (float *);
- extern short h_sign (short *, short *);
- extern short hl_ge (char *, char *, ftnlen, ftnlen);
- extern short hl_gt (char *, char *, ftnlen, ftnlen);
- extern short hl_le (char *, char *, ftnlen, ftnlen);
- extern short hl_lt (char *, char *, ftnlen, ftnlen);
- extern integer i_abs (integer *);
- extern integer i_dim (integer *, integer *);
- extern integer i_dnnt (double *);
- extern integer i_indx (char *, char *, ftnlen, ftnlen);
- extern integer i_len (char *, ftnlen);
- extern integer i_mod (integer *, integer *);
- extern integer i_nint (float *);
- extern integer i_sign (integer *, integer *);
- extern integer iargc_ (void);
- extern ftnlen l_ge (char *, char *, ftnlen, ftnlen);
- extern ftnlen l_gt (char *, char *, ftnlen, ftnlen);
- extern ftnlen l_le (char *, char *, ftnlen, ftnlen);
- extern ftnlen l_lt (char *, char *, ftnlen, ftnlen);
- extern void pow_ci (complex *, complex *, integer *);
- extern double pow_dd (double *, double *);
- extern double pow_di (double *, integer *);
- extern short pow_hh (short *, shortint *);
- extern integer pow_ii (integer *, integer *);
- extern double pow_ri (float *, integer *);
- extern void pow_zi (doublecomplex *, doublecomplex *, integer *);
- extern void pow_zz (doublecomplex *, doublecomplex *, doublecomplex *);
- extern double r_abs (float *);
- extern double r_acos (float *);
- extern double r_asin (float *);
- extern double r_atan (float *);
- extern double r_atn2 (float *, float *);
- extern void r_cnjg (complex *, complex *);
- extern double r_cos (float *);
- extern double r_cosh (float *);
- extern double r_dim (float *, float *);
- extern double r_exp (float *);
- extern double r_imag (complex *);
- extern double r_int (float *);
- extern double r_lg10 (float *);
- extern double r_log (float *);
- extern double r_mod (float *, float *);
- extern double r_nint (float *);
- extern double r_sign (float *, float *);
- extern double r_sin (float *);
- extern double r_sinh (float *);
- extern double r_sqrt (float *);
- extern double r_tan (float *);
- extern double r_tanh (float *);
- extern void s_cat (char *, char **, integer *, integer *, ftnlen);
- extern integer s_cmp (char *, char *, ftnlen, ftnlen);
- extern void s_copy (char *, char *, ftnlen, ftnlen);
- extern int s_paus (char *, ftnlen);
- extern integer s_rdfe (cilist *);
- extern integer s_rdue (cilist *);
- extern integer s_rnge (char *, integer, char *, integer);
- extern integer s_rsfe (cilist *);
- extern integer s_rsfi (icilist *);
- extern integer s_rsle (cilist *);
- extern integer s_rsli (icilist *);
- extern integer s_rsne (cilist *);
- extern integer s_rsni (icilist *);
- extern integer s_rsue (cilist *);
- extern int s_stop (char *, ftnlen);
- extern integer s_wdfe (cilist *);
- extern integer s_wdue (cilist *);
- extern integer s_wsfe (cilist *);
- extern integer s_wsfi (icilist *);
- extern integer s_wsle (cilist *);
- extern integer s_wsli (icilist *);
- extern integer s_wsne (cilist *);
- extern integer s_wsni (icilist *);
- extern integer s_wsue (cilist *);
- extern void sig_die (char *, int);
- extern integer signal_ (integer *, void (*)(int));
- extern integer system_ (char *, ftnlen);
- extern double z_abs (doublecomplex *);
- extern void z_cos (doublecomplex *, doublecomplex *);
- extern void z_div (doublecomplex *, doublecomplex *, doublecomplex *);
- extern void z_exp (doublecomplex *, doublecomplex *);
- extern void z_log (doublecomplex *, doublecomplex *);
- extern void z_sin (doublecomplex *, doublecomplex *);
- extern void z_sqrt (doublecomplex *, doublecomplex *);
-}
-#endif
diff --git a/libf2c/libF77/getarg_.c b/libf2c/libF77/getarg_.c
deleted file mode 100644
index b35043b4a48..00000000000
--- a/libf2c/libF77/getarg_.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "f2c.h"
-
-/*
- * subroutine getarg(k, c)
- * returns the kth unix command argument in fortran character
- * variable argument c
-*/
-
-void
-G77_getarg_0 (ftnint * n, register char *s, ftnlen ls)
-{
- extern int f__xargc;
- extern char **f__xargv;
- register char *t;
- register int i;
-
- if (*n >= 0 && *n < f__xargc)
- t = f__xargv[*n];
- else
- t = "";
- for (i = 0; i < ls && *t != '\0'; ++i)
- *s++ = *t++;
- for (; i < ls; ++i)
- *s++ = ' ';
-}
diff --git a/libf2c/libF77/getenv_.c b/libf2c/libF77/getenv_.c
deleted file mode 100644
index 4067b8ce214..00000000000
--- a/libf2c/libF77/getenv_.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "f2c.h"
-#undef abs
-#include <stdlib.h>
-#include <string.h>
-extern char *F77_aloc (ftnlen, char *);
-
-/*
- * getenv - f77 subroutine to return environment variables
- *
- * called by:
- * call getenv (ENV_NAME, char_var)
- * where:
- * ENV_NAME is the name of an environment variable
- * char_var is a character variable which will receive
- * the current value of ENV_NAME, or all blanks
- * if ENV_NAME is not defined
- */
-
-void
-G77_getenv_0 (char *fname, char *value, ftnlen flen, ftnlen vlen)
-{
- char buf[256], *ep, *fp;
- integer i;
-
- if (flen <= 0)
- goto add_blanks;
- for (i = 0; i < (integer) sizeof (buf); i++)
- {
- if (i == flen || (buf[i] = fname[i]) == ' ')
- {
- buf[i] = 0;
- ep = getenv (buf);
- goto have_ep;
- }
- }
- while (i < flen && fname[i] != ' ')
- i++;
- strncpy (fp = F77_aloc (i + 1, "getenv_"), fname, (int) i);
- fp[i] = 0;
- ep = getenv (fp);
- free (fp);
-have_ep:
- if (ep)
- while (*ep && vlen-- > 0)
- *value++ = *ep++;
-add_blanks:
- while (vlen-- > 0)
- *value++ = ' ';
-}
diff --git a/libf2c/libF77/h_abs.c b/libf2c/libF77/h_abs.c
deleted file mode 100644
index 9db19ca34e9..00000000000
--- a/libf2c/libF77/h_abs.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-shortint
-h_abs (shortint * x)
-{
- if (*x >= 0)
- return (*x);
- return (-*x);
-}
diff --git a/libf2c/libF77/h_dim.c b/libf2c/libF77/h_dim.c
deleted file mode 100644
index 1519478747d..00000000000
--- a/libf2c/libF77/h_dim.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "f2c.h"
-
-shortint
-h_dim (shortint * a, shortint * b)
-{
- return (*a > *b ? *a - *b : 0);
-}
diff --git a/libf2c/libF77/h_dnnt.c b/libf2c/libF77/h_dnnt.c
deleted file mode 100644
index 46c83bbd28e..00000000000
--- a/libf2c/libF77/h_dnnt.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-shortint
-h_dnnt (doublereal * x)
-{
- return (shortint) (*x >= 0. ? floor (*x + .5) : -floor (.5 - *x));
-}
diff --git a/libf2c/libF77/h_indx.c b/libf2c/libF77/h_indx.c
deleted file mode 100644
index 2353b2b143a..00000000000
--- a/libf2c/libF77/h_indx.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "f2c.h"
-
-shortint
-h_indx (char *a, char *b, ftnlen la, ftnlen lb)
-{
- ftnlen i, n;
- char *s, *t, *bend;
-
- n = la - lb + 1;
- bend = b + lb;
-
- for (i = 0; i < n; ++i)
- {
- s = a + i;
- t = b;
- while (t < bend)
- if (*s++ != *t++)
- goto no;
- return ((shortint) i + 1);
- no:;
- }
- return (0);
-}
diff --git a/libf2c/libF77/h_len.c b/libf2c/libF77/h_len.c
deleted file mode 100644
index 506016e67d9..00000000000
--- a/libf2c/libF77/h_len.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "f2c.h"
-
-shortint
-h_len (char *s __attribute__ ((__unused__)), ftnlen n)
-{
- return (n);
-}
diff --git a/libf2c/libF77/h_mod.c b/libf2c/libF77/h_mod.c
deleted file mode 100644
index c04e0df823b..00000000000
--- a/libf2c/libF77/h_mod.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "f2c.h"
-
-shortint
-h_mod (short *a, short *b)
-{
- return (*a % *b);
-}
diff --git a/libf2c/libF77/h_nint.c b/libf2c/libF77/h_nint.c
deleted file mode 100644
index a8c366a41be..00000000000
--- a/libf2c/libF77/h_nint.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-shortint
-h_nint (real * x)
-{
- return (shortint) (*x >= 0 ? floor (*x + .5) : -floor (.5 - *x));
-}
diff --git a/libf2c/libF77/h_sign.c b/libf2c/libF77/h_sign.c
deleted file mode 100644
index 70402325be2..00000000000
--- a/libf2c/libF77/h_sign.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-shortint
-h_sign (shortint * a, shortint * b)
-{
- shortint x;
- x = (*a >= 0 ? *a : -*a);
- return (*b >= 0 ? x : -x);
-}
diff --git a/libf2c/libF77/hl_ge.c b/libf2c/libF77/hl_ge.c
deleted file mode 100644
index 988686d8d1d..00000000000
--- a/libf2c/libF77/hl_ge.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "f2c.h"
-
-extern integer s_cmp (char *, char *, ftnlen, ftnlen);
-shortlogical
-hl_ge (char *a, char *b, ftnlen la, ftnlen lb)
-{
- return (s_cmp (a, b, la, lb) >= 0);
-}
diff --git a/libf2c/libF77/hl_gt.c b/libf2c/libF77/hl_gt.c
deleted file mode 100644
index 0024ca7a0d2..00000000000
--- a/libf2c/libF77/hl_gt.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "f2c.h"
-
-extern integer s_cmp (char *, char *, ftnlen, ftnlen);
-shortlogical
-hl_gt (char *a, char *b, ftnlen la, ftnlen lb)
-{
- return (s_cmp (a, b, la, lb) > 0);
-}
diff --git a/libf2c/libF77/hl_le.c b/libf2c/libF77/hl_le.c
deleted file mode 100644
index 76aa3e12da7..00000000000
--- a/libf2c/libF77/hl_le.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "f2c.h"
-
-extern integer s_cmp (char *, char *, ftnlen, ftnlen);
-shortlogical
-hl_le (char *a, char *b, ftnlen la, ftnlen lb)
-{
- return (s_cmp (a, b, la, lb) <= 0);
-}
diff --git a/libf2c/libF77/hl_lt.c b/libf2c/libF77/hl_lt.c
deleted file mode 100644
index 68a47fa98eb..00000000000
--- a/libf2c/libF77/hl_lt.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "f2c.h"
-
-extern integer s_cmp (char *, char *, ftnlen, ftnlen);
-shortlogical
-hl_lt (char *a, char *b, ftnlen la, ftnlen lb)
-{
- return (s_cmp (a, b, la, lb) < 0);
-}
diff --git a/libf2c/libF77/i_abs.c b/libf2c/libF77/i_abs.c
deleted file mode 100644
index 2ed183a6225..00000000000
--- a/libf2c/libF77/i_abs.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-integer
-i_abs (integer * x)
-{
- if (*x >= 0)
- return (*x);
- return (-*x);
-}
diff --git a/libf2c/libF77/i_dim.c b/libf2c/libF77/i_dim.c
deleted file mode 100644
index 66ef7c99fb4..00000000000
--- a/libf2c/libF77/i_dim.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "f2c.h"
-
-integer
-i_dim (integer * a, integer * b)
-{
- return (*a > *b ? *a - *b : 0);
-}
diff --git a/libf2c/libF77/i_dnnt.c b/libf2c/libF77/i_dnnt.c
deleted file mode 100644
index 7a3783d29e2..00000000000
--- a/libf2c/libF77/i_dnnt.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-integer
-i_dnnt (doublereal * x)
-{
- return (integer) (*x >= 0. ? floor (*x + .5) : -floor (.5 - *x));
-}
diff --git a/libf2c/libF77/i_indx.c b/libf2c/libF77/i_indx.c
deleted file mode 100644
index 5b8e13693ba..00000000000
--- a/libf2c/libF77/i_indx.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "f2c.h"
-
-integer
-i_indx (char *a, char *b, ftnlen la, ftnlen lb)
-{
- ftnlen i, n;
- char *s, *t, *bend;
-
- n = la - lb + 1;
- bend = b + lb;
-
- for (i = 0; i < n; ++i)
- {
- s = a + i;
- t = b;
- while (t < bend)
- if (*s++ != *t++)
- goto no;
- return (i + 1);
- no:;
- }
- return (0);
-}
diff --git a/libf2c/libF77/i_len.c b/libf2c/libF77/i_len.c
deleted file mode 100644
index 2d5a3a4381a..00000000000
--- a/libf2c/libF77/i_len.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "f2c.h"
-
-integer
-i_len (char *s __attribute__ ((__unused__)), ftnlen n)
-{
- return (n);
-}
diff --git a/libf2c/libF77/i_mod.c b/libf2c/libF77/i_mod.c
deleted file mode 100644
index 7ed7b391c19..00000000000
--- a/libf2c/libF77/i_mod.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "f2c.h"
-
-integer
-i_mod (integer * a, integer * b)
-{
- return (*a % *b);
-}
diff --git a/libf2c/libF77/i_nint.c b/libf2c/libF77/i_nint.c
deleted file mode 100644
index c4eaff48d33..00000000000
--- a/libf2c/libF77/i_nint.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-integer
-i_nint (real * x)
-{
- return (integer) (*x >= 0 ? floor (*x + .5) : -floor (.5 - *x));
-}
diff --git a/libf2c/libF77/i_sign.c b/libf2c/libF77/i_sign.c
deleted file mode 100644
index cf090086d00..00000000000
--- a/libf2c/libF77/i_sign.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-integer
-i_sign (integer * a, integer * b)
-{
- integer x;
- x = (*a >= 0 ? *a : -*a);
- return (*b >= 0 ? x : -x);
-}
diff --git a/libf2c/libF77/iargc_.c b/libf2c/libF77/iargc_.c
deleted file mode 100644
index c3165709a53..00000000000
--- a/libf2c/libF77/iargc_.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "f2c.h"
-
-ftnint
-G77_iargc_0 (void)
-{
- extern int f__xargc;
- return (f__xargc - 1);
-}
diff --git a/libf2c/libF77/l_ge.c b/libf2c/libF77/l_ge.c
deleted file mode 100644
index 78af8d04f5e..00000000000
--- a/libf2c/libF77/l_ge.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "f2c.h"
-
-extern integer s_cmp (char *, char *, ftnlen, ftnlen);
-logical
-l_ge (char *a, char *b, ftnlen la, ftnlen lb)
-{
- return (s_cmp (a, b, la, lb) >= 0);
-}
diff --git a/libf2c/libF77/l_gt.c b/libf2c/libF77/l_gt.c
deleted file mode 100644
index be7e4894719..00000000000
--- a/libf2c/libF77/l_gt.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "f2c.h"
-
-extern integer s_cmp (char *, char *, ftnlen, ftnlen);
-logical
-l_gt (char *a, char *b, ftnlen la, ftnlen lb)
-{
- return (s_cmp (a, b, la, lb) > 0);
-}
diff --git a/libf2c/libF77/l_le.c b/libf2c/libF77/l_le.c
deleted file mode 100644
index d2886fb7d48..00000000000
--- a/libf2c/libF77/l_le.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "f2c.h"
-
-extern integer s_cmp (char *, char *, ftnlen, ftnlen);
-logical
-l_le (char *a, char *b, ftnlen la, ftnlen lb)
-{
- return (s_cmp (a, b, la, lb) <= 0);
-}
diff --git a/libf2c/libF77/l_lt.c b/libf2c/libF77/l_lt.c
deleted file mode 100644
index ff151f890a2..00000000000
--- a/libf2c/libF77/l_lt.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "f2c.h"
-
-extern integer s_cmp (char *, char *, ftnlen, ftnlen);
-logical
-l_lt (char *a, char *b, ftnlen la, ftnlen lb)
-{
- return (s_cmp (a, b, la, lb) < 0);
-}
diff --git a/libf2c/libF77/lbitbits.c b/libf2c/libF77/lbitbits.c
deleted file mode 100644
index 3b28ae97aba..00000000000
--- a/libf2c/libF77/lbitbits.c
+++ /dev/null
@@ -1,58 +0,0 @@
-#include "f2c.h"
-
-#ifndef LONGBITS
-#define LONGBITS 32
-#endif
-
-integer
-lbit_bits (integer a, integer b, integer len)
-{
- /* Assume 2's complement arithmetic */
-
- unsigned long x, y;
-
- x = (unsigned long) a;
- y = (unsigned long) -1L;
- x >>= b;
- y <<= len;
- return (integer) (x & ~y);
-}
-
-integer
-lbit_cshift (integer a, integer b, integer len)
-{
- unsigned long x, y, z;
-
- x = (unsigned long) a;
- if (len <= 0)
- {
- if (len == 0)
- return 0;
- goto full_len;
- }
- if (len >= LONGBITS)
- {
- full_len:
- if (b >= 0)
- {
- b %= LONGBITS;
- return (integer) (x << b | x >> (LONGBITS - b));
- }
- b = -b;
- b %= LONGBITS;
- return (integer) (x << (LONGBITS - b) | x >> b);
- }
- y = z = (unsigned long) -1;
- y <<= len;
- z &= ~y;
- y &= x;
- x &= z;
- if (b >= 0)
- {
- b %= len;
- return (integer) (y | (z & (x << b | x >> (len - b))));
- }
- b = -b;
- b %= len;
- return (integer) (y | (z & (x >> b | x << (len - b))));
-}
diff --git a/libf2c/libF77/lbitshft.c b/libf2c/libF77/lbitshft.c
deleted file mode 100644
index bfbb7c01833..00000000000
--- a/libf2c/libF77/lbitshft.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "f2c.h"
-
-integer
-lbit_shift (integer a, integer b)
-{
- return b >= 0 ? a << b : (integer) ((uinteger) a >> -b);
-}
diff --git a/libf2c/libF77/main.c b/libf2c/libF77/main.c
deleted file mode 100644
index a3955cbc1a7..00000000000
--- a/libf2c/libF77/main.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* STARTUP PROCEDURE FOR UNIX FORTRAN PROGRAMS */
-
-#include <stdio.h>
-#include "signal1.h"
-
-#include <stdlib.h>
-
-extern void f_exit (void);
-#ifndef NO_ONEXIT
-#define ONEXIT atexit
-extern int atexit (void (*)(void));
-#endif
-
-extern void f_init (void);
-extern int MAIN__ (void);
-extern void f_setarg (int, char **);
-extern void f_setsig (void);
-
-int
-main (int argc, char **argv)
-{
- f_setarg (argc, argv);
- f_setsig ();
- f_init ();
-#ifndef NO_ONEXIT
- ONEXIT (f_exit);
-#endif
- MAIN__ ();
-#ifdef NO_ONEXIT
- f_exit ();
-#endif
- exit (0); /* exit(0) rather than return(0) to bypass Cray bug */
- return 0; /* For compilers that complain of missing return values; */
- /* others will complain that this is unreachable code. */
-}
diff --git a/libf2c/libF77/makefile.netlib b/libf2c/libF77/makefile.netlib
deleted file mode 100644
index 230ca7e9f93..00000000000
--- a/libf2c/libF77/makefile.netlib
+++ /dev/null
@@ -1,103 +0,0 @@
-.SUFFIXES: .c .o
-CC = cc
-SHELL = /bin/sh
-CFLAGS = -O
-
-# If your system lacks onexit() and you are not using an
-# ANSI C compiler, then you should add -DNO_ONEXIT to CFLAGS,
-# e.g., by changing the above "CFLAGS =" line to
-# CFLAGS = -O -DNO_ONEXIT
-
-# On at least some Sun systems, it is more appropriate to change the
-# "CFLAGS =" line to
-# CFLAGS = -O -Donexit=on_exit
-
-# compile, then strip unnecessary symbols
-.c.o:
- $(CC) -c -DSkip_f2c_Undefs $(CFLAGS) $*.c
- ld -r -x -o $*.xxx $*.o
- mv $*.xxx $*.o
-## Under Solaris (and other systems that do not understand ld -x),
-## omit -x in the ld line above.
-## If your system does not have the ld command, comment out
-## or remove both the ld and mv lines above.
-
-MISC = F77_aloc.o Version.o main.o s_rnge.o abort_.o getarg_.o iargc_.o \
- getenv_.o signal_.o s_stop.o s_paus.o system_.o cabs.o\
- derf_.o derfc_.o erf_.o erfc_.o sig_die.o exit_.o
-POW = pow_ci.o pow_dd.o pow_di.o pow_hh.o pow_ii.o pow_ri.o pow_zi.o pow_zz.o
-CX = c_abs.o c_cos.o c_div.o c_exp.o c_log.o c_sin.o c_sqrt.o
-DCX = z_abs.o z_cos.o z_div.o z_exp.o z_log.o z_sin.o z_sqrt.o
-REAL = r_abs.o r_acos.o r_asin.o r_atan.o r_atn2.o r_cnjg.o r_cos.o\
- r_cosh.o r_dim.o r_exp.o r_imag.o r_int.o\
- r_lg10.o r_log.o r_mod.o r_nint.o r_sign.o\
- r_sin.o r_sinh.o r_sqrt.o r_tan.o r_tanh.o
-DBL = d_abs.o d_acos.o d_asin.o d_atan.o d_atn2.o\
- d_cnjg.o d_cos.o d_cosh.o d_dim.o d_exp.o\
- d_imag.o d_int.o d_lg10.o d_log.o d_mod.o\
- d_nint.o d_prod.o d_sign.o d_sin.o d_sinh.o\
- d_sqrt.o d_tan.o d_tanh.o
-INT = i_abs.o i_dim.o i_dnnt.o i_indx.o i_len.o i_mod.o i_nint.o i_sign.o
-HALF = h_abs.o h_dim.o h_dnnt.o h_indx.o h_len.o h_mod.o h_nint.o h_sign.o
-CMP = l_ge.o l_gt.o l_le.o l_lt.o hl_ge.o hl_gt.o hl_le.o hl_lt.o
-EFL = ef1asc_.o ef1cmc_.o
-CHAR = F77_aloc.o s_cat.o s_cmp.o s_copy.o
-F90BIT = lbitbits.o lbitshft.o
-QINT = pow_qq.o qbitbits.o qbitshft.o
-TIME = dtime_.o etime_.o
-
-all: signal1.h libF77.a
-
-# You may need to adjust signal1.h suitably for your system...
-signal1.h: signal1.h0
- cp signal1.h0 signal1.h
-
-# If you get an error compiling dtime_.c or etime_.c, try adding
-# -DUSE_CLOCK to the CFLAGS assignment above; if that does not work,
-# omit $(TIME) from the dependency list for libF77.a below.
-
-# For INTEGER*8 support (which requires system-dependent adjustments to
-# f2c.h), add $(QINT) to the libf2c.a dependency list below...
-
-libF77.a : $(MISC) $(POW) $(CX) $(DCX) $(REAL) $(DBL) $(INT) \
- $(HALF) $(CMP) $(EFL) $(CHAR) $(F90BIT) $(TIME)
- ar r libF77.a $?
- -ranlib libF77.a
-
-### If your system lacks ranlib, you don't need it; see README.
-
-Version.o: Version.c
- $(CC) -c Version.c
-
-# To compile with C++, first "make f2c.h"
-f2c.h: f2ch.add
- cat /usr/include/f2c.h f2ch.add >f2c.h
-
-install: libF77.a
- mv libF77.a /usr/lib
- ranlib /usr/lib/libF77.a
-
-clean:
- rm -f libF77.a *.o
-
-check:
- xsum F77_aloc.c Notice README Version.c abort_.c c_abs.c c_cos.c \
- c_div.c c_exp.c c_log.c c_sin.c c_sqrt.c cabs.c d_abs.c d_acos.c \
- d_asin.c d_atan.c d_atn2.c d_cnjg.c d_cos.c d_cosh.c d_dim.c \
- d_exp.c d_imag.c d_int.c d_lg10.c d_log.c d_mod.c d_nint.c \
- d_prod.c d_sign.c d_sin.c d_sinh.c d_sqrt.c d_tan.c d_tanh.c \
- derf_.c derfc_.c dtime_.c \
- ef1asc_.c ef1cmc_.c erf_.c erfc_.c etime_.c exit_.c f2ch.add \
- getarg_.c getenv_.c h_abs.c h_dim.c h_dnnt.c h_indx.c h_len.c \
- h_mod.c h_nint.c h_sign.c hl_ge.c hl_gt.c hl_le.c hl_lt.c \
- i_abs.c i_dim.c i_dnnt.c i_indx.c i_len.c i_mod.c i_nint.c \
- i_sign.c iargc_.c l_ge.c l_gt.c l_le.c l_lt.c lbitbits.c lbitshft.c \
- main.c makefile pow_ci.c pow_dd.c pow_di.c pow_hh.c pow_ii.c \
- pow_qq.c pow_ri.c pow_zi.c pow_zz.c qbitbits.c qbitshft.c \
- r_abs.c r_acos.c r_asin.c r_atan.c r_atn2.c \
- r_cnjg.c r_cos.c r_cosh.c r_dim.c r_exp.c r_imag.c r_int.c r_lg10.c \
- r_log.c r_mod.c r_nint.c r_sign.c r_sin.c r_sinh.c r_sqrt.c \
- r_tan.c r_tanh.c s_cat.c s_cmp.c s_copy.c \
- s_paus.c s_rnge.c s_stop.c sig_die.c signal1.h0 signal_.c system_.c \
- z_abs.c z_cos.c z_div.c z_exp.c z_log.c z_sin.c z_sqrt.c >zap
- cmp zap libF77.xsum && rm zap || diff libF77.xsum zap
diff --git a/libf2c/libF77/pow_ci.c b/libf2c/libF77/pow_ci.c
deleted file mode 100644
index 1df3eb34b00..00000000000
--- a/libf2c/libF77/pow_ci.c
+++ /dev/null
@@ -1,16 +0,0 @@
-#include "f2c.h"
-
-extern void pow_zi (doublecomplex *, doublecomplex *, integer *);
-void
-pow_ci (complex * p, complex * a, integer * b) /* p = a**b */
-{
- doublecomplex p1, a1;
-
- a1.r = a->r;
- a1.i = a->i;
-
- pow_zi (&p1, &a1, b);
-
- p->r = p1.r;
- p->i = p1.i;
-}
diff --git a/libf2c/libF77/pow_dd.c b/libf2c/libF77/pow_dd.c
deleted file mode 100644
index 0ab208ebf62..00000000000
--- a/libf2c/libF77/pow_dd.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-pow_dd (doublereal * ap, doublereal * bp)
-{
- return (pow (*ap, *bp));
-}
diff --git a/libf2c/libF77/pow_di.c b/libf2c/libF77/pow_di.c
deleted file mode 100644
index d2298a0a1f0..00000000000
--- a/libf2c/libF77/pow_di.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "f2c.h"
-
-double
-pow_di (doublereal * ap, integer * bp)
-{
- double pow, x;
- integer n;
- unsigned long u;
-
- pow = 1;
- x = *ap;
- n = *bp;
-
- if (n != 0)
- {
- if (n < 0)
- {
- n = -n;
- x = 1 / x;
- }
- for (u = n;;)
- {
- if (u & 01)
- pow *= x;
- if (u >>= 1)
- x *= x;
- else
- break;
- }
- }
- return (pow);
-}
diff --git a/libf2c/libF77/pow_hh.c b/libf2c/libF77/pow_hh.c
deleted file mode 100644
index 3379d8a7f7c..00000000000
--- a/libf2c/libF77/pow_hh.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "f2c.h"
-
-shortint
-pow_hh (shortint * ap, shortint * bp)
-{
- shortint pow, x, n;
- unsigned u;
-
- x = *ap;
- n = *bp;
-
- if (n <= 0)
- {
- if (n == 0 || x == 1)
- return 1;
- if (x != -1)
- return x == 0 ? 1 / x : 0;
- n = -n;
- }
- u = n;
- for (pow = 1;;)
- {
- if (u & 01)
- pow *= x;
- if (u >>= 1)
- x *= x;
- else
- break;
- }
- return (pow);
-}
diff --git a/libf2c/libF77/pow_ii.c b/libf2c/libF77/pow_ii.c
deleted file mode 100644
index 92347453fb0..00000000000
--- a/libf2c/libF77/pow_ii.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "f2c.h"
-
-integer
-pow_ii (integer * ap, integer * bp)
-{
- integer pow, x, n;
- unsigned long u;
-
- x = *ap;
- n = *bp;
-
- if (n <= 0)
- {
- if (n == 0 || x == 1)
- return 1;
- if (x != -1)
- return x == 0 ? 1 / x : 0;
- n = -n;
- }
- u = n;
- for (pow = 1;;)
- {
- if (u & 01)
- pow *= x;
- if (u >>= 1)
- x *= x;
- else
- break;
- }
- return (pow);
-}
diff --git a/libf2c/libF77/pow_qq.c b/libf2c/libF77/pow_qq.c
deleted file mode 100644
index 0cec5ca7d8c..00000000000
--- a/libf2c/libF77/pow_qq.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "f2c.h"
-
-longint
-pow_qq (longint * ap, longint * bp)
-{
- longint pow, x, n;
- unsigned long long u; /* system-dependent */
-
- x = *ap;
- n = *bp;
-
- if (n <= 0)
- {
- if (n == 0 || x == 1)
- return 1;
- if (x != -1)
- return x == 0 ? 1 / x : 0;
- n = -n;
- }
- u = n;
- for (pow = 1;;)
- {
- if (u & 01)
- pow *= x;
- if (u >>= 1)
- x *= x;
- else
- break;
- }
- return (pow);
-}
diff --git a/libf2c/libF77/pow_ri.c b/libf2c/libF77/pow_ri.c
deleted file mode 100644
index 792db0c2018..00000000000
--- a/libf2c/libF77/pow_ri.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "f2c.h"
-
-double
-pow_ri (real * ap, integer * bp)
-{
- double pow, x;
- integer n;
- unsigned long u;
-
- pow = 1;
- x = *ap;
- n = *bp;
-
- if (n != 0)
- {
- if (n < 0)
- {
- n = -n;
- x = 1 / x;
- }
- for (u = n;;)
- {
- if (u & 01)
- pow *= x;
- if (u >>= 1)
- x *= x;
- else
- break;
- }
- }
- return (pow);
-}
diff --git a/libf2c/libF77/pow_zi.c b/libf2c/libF77/pow_zi.c
deleted file mode 100644
index 214db3d7a0f..00000000000
--- a/libf2c/libF77/pow_zi.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "f2c.h"
-
-extern void z_div (doublecomplex *, doublecomplex *, doublecomplex *);
-void
-pow_zi (doublecomplex * p, doublecomplex * a, integer * b) /* p = a**b */
-{
- integer n;
- unsigned long u;
- double t;
- doublecomplex q, x;
- static doublecomplex one = { 1.0, 0.0 };
-
- n = *b;
- q.r = 1;
- q.i = 0;
-
- if (n == 0)
- goto done;
- if (n < 0)
- {
- n = -n;
- z_div (&x, &one, a);
- }
- else
- {
- x.r = a->r;
- x.i = a->i;
- }
-
- for (u = n;;)
- {
- if (u & 01)
- {
- t = q.r * x.r - q.i * x.i;
- q.i = q.r * x.i + q.i * x.r;
- q.r = t;
- }
- if (u >>= 1)
- {
- t = x.r * x.r - x.i * x.i;
- x.i = 2 * x.r * x.i;
- x.r = t;
- }
- else
- break;
- }
-done:
- p->i = q.i;
- p->r = q.r;
-}
diff --git a/libf2c/libF77/pow_zz.c b/libf2c/libF77/pow_zz.c
deleted file mode 100644
index d5cfbf3d931..00000000000
--- a/libf2c/libF77/pow_zz.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-extern double f__cabs (double, double);
-void
-pow_zz (doublecomplex * r, doublecomplex * a, doublecomplex * b)
-{
- double logr, logi, x, y;
-
- if (a->r == 0.0 && a->i == 0.0)
- {
- /* Algorithm below doesn't cope. */
- r->r = r->i = 0.0;
- return;
- }
- logr = log (f__cabs (a->r, a->i));
- logi = atan2 (a->i, a->r);
-
- x = exp (logr * b->r - logi * b->i);
- y = logr * b->i + logi * b->r;
-
- r->r = x * cos (y);
- r->i = x * sin (y);
-}
diff --git a/libf2c/libF77/qbitbits.c b/libf2c/libF77/qbitbits.c
deleted file mode 100644
index f72858e7a33..00000000000
--- a/libf2c/libF77/qbitbits.c
+++ /dev/null
@@ -1,62 +0,0 @@
-#include "f2c.h"
-
-#ifndef LONGBITS
-#define LONGBITS 32
-#endif
-
-#ifndef LONG8BITS
-#define LONG8BITS (2*LONGBITS)
-#endif
-
-integer
-qbit_bits (longint a, integer b, integer len)
-{
- /* Assume 2's complement arithmetic */
-
- ulongint x, y;
-
- x = (ulongint) a;
- y = (ulongint) - 1L;
- x >>= b;
- y <<= len;
- return (longint) (x & y);
-}
-
-longint
-qbit_cshift (longint a, integer b, integer len)
-{
- ulongint x, y, z;
-
- x = (ulongint) a;
- if (len <= 0)
- {
- if (len == 0)
- return 0;
- goto full_len;
- }
- if (len >= LONG8BITS)
- {
- full_len:
- if (b >= 0)
- {
- b %= LONG8BITS;
- return (longint) (x << b | x >> (LONG8BITS - b));
- }
- b = -b;
- b %= LONG8BITS;
- return (longint) (x << (LONG8BITS - b) | x >> b);
- }
- y = z = (unsigned long) -1;
- y <<= len;
- z &= ~y;
- y &= x;
- x &= z;
- if (b >= 0)
- {
- b %= len;
- return (longint) (y | (z & (x << b | x >> (len - b))));
- }
- b = -b;
- b %= len;
- return (longint) (y | (z & (x >> b | x << (len - b))));
-}
diff --git a/libf2c/libF77/qbitshft.c b/libf2c/libF77/qbitshft.c
deleted file mode 100644
index ce740edde19..00000000000
--- a/libf2c/libF77/qbitshft.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "f2c.h"
-
-longint
-qbit_shift (longint a, integer b)
-{
- return b >= 0 ? a << b : (longint) ((ulongint) a >> -b);
-}
diff --git a/libf2c/libF77/r_abs.c b/libf2c/libF77/r_abs.c
deleted file mode 100644
index 6f62724ef17..00000000000
--- a/libf2c/libF77/r_abs.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-double
-r_abs (real * x)
-{
- if (*x >= 0)
- return (*x);
- return (-*x);
-}
diff --git a/libf2c/libF77/r_acos.c b/libf2c/libF77/r_acos.c
deleted file mode 100644
index d761cfdc5c8..00000000000
--- a/libf2c/libF77/r_acos.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-r_acos (real * x)
-{
- return (acos (*x));
-}
diff --git a/libf2c/libF77/r_asin.c b/libf2c/libF77/r_asin.c
deleted file mode 100644
index b8c73c786af..00000000000
--- a/libf2c/libF77/r_asin.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-r_asin (real * x)
-{
- return (asin (*x));
-}
diff --git a/libf2c/libF77/r_atan.c b/libf2c/libF77/r_atan.c
deleted file mode 100644
index 33a6589fda9..00000000000
--- a/libf2c/libF77/r_atan.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-r_atan (real * x)
-{
- return (atan (*x));
-}
diff --git a/libf2c/libF77/r_atn2.c b/libf2c/libF77/r_atn2.c
deleted file mode 100644
index 076d8743b1e..00000000000
--- a/libf2c/libF77/r_atn2.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-r_atn2 (real * x, real * y)
-{
- return (atan2 (*x, *y));
-}
diff --git a/libf2c/libF77/r_cnjg.c b/libf2c/libF77/r_cnjg.c
deleted file mode 100644
index 5f849291b20..00000000000
--- a/libf2c/libF77/r_cnjg.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-void
-r_cnjg (complex * r, complex * z)
-{
- real zi = z->i;
- r->r = z->r;
- r->i = -zi;
-}
diff --git a/libf2c/libF77/r_cos.c b/libf2c/libF77/r_cos.c
deleted file mode 100644
index ed556e81e87..00000000000
--- a/libf2c/libF77/r_cos.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-r_cos (real * x)
-{
- return (cos (*x));
-}
diff --git a/libf2c/libF77/r_cosh.c b/libf2c/libF77/r_cosh.c
deleted file mode 100644
index b22e0cf0a3d..00000000000
--- a/libf2c/libF77/r_cosh.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-r_cosh (real * x)
-{
- return (cosh (*x));
-}
diff --git a/libf2c/libF77/r_dim.c b/libf2c/libF77/r_dim.c
deleted file mode 100644
index 48d2fc7f767..00000000000
--- a/libf2c/libF77/r_dim.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "f2c.h"
-
-double
-r_dim (real * a, real * b)
-{
- return (*a > *b ? *a - *b : 0);
-}
diff --git a/libf2c/libF77/r_exp.c b/libf2c/libF77/r_exp.c
deleted file mode 100644
index 7c1ceea5895..00000000000
--- a/libf2c/libF77/r_exp.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-r_exp (real * x)
-{
- return (exp (*x));
-}
diff --git a/libf2c/libF77/r_imag.c b/libf2c/libF77/r_imag.c
deleted file mode 100644
index 784abc8434b..00000000000
--- a/libf2c/libF77/r_imag.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "f2c.h"
-
-double
-r_imag (complex * z)
-{
- return (z->i);
-}
diff --git a/libf2c/libF77/r_int.c b/libf2c/libF77/r_int.c
deleted file mode 100644
index 3c1b28ea4c7..00000000000
--- a/libf2c/libF77/r_int.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-r_int (real * x)
-{
- return ((*x > 0) ? floor (*x) : -floor (-*x));
-}
diff --git a/libf2c/libF77/r_lg10.c b/libf2c/libF77/r_lg10.c
deleted file mode 100644
index 563e73c4d8c..00000000000
--- a/libf2c/libF77/r_lg10.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "f2c.h"
-
-#define log10e 0.43429448190325182765
-
-#undef abs
-#include <math.h>
-double
-r_lg10 (real * x)
-{
- return (log10e * log (*x));
-}
diff --git a/libf2c/libF77/r_log.c b/libf2c/libF77/r_log.c
deleted file mode 100644
index eaaecc836f2..00000000000
--- a/libf2c/libF77/r_log.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-r_log (real * x)
-{
- return (log (*x));
-}
diff --git a/libf2c/libF77/r_mod.c b/libf2c/libF77/r_mod.c
deleted file mode 100644
index 9518d66ce99..00000000000
--- a/libf2c/libF77/r_mod.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include "f2c.h"
-
-#ifdef IEEE_drem
-double drem (double, double);
-#else
-#undef abs
-#include <math.h>
-#endif
-double
-r_mod (real * x, real * y)
-{
-#ifdef IEEE_drem
- double xa, ya, z;
- if ((ya = *y) < 0.)
- ya = -ya;
- z = drem (xa = *x, ya);
- if (xa > 0)
- {
- if (z < 0)
- z += ya;
- }
- else if (z > 0)
- z -= ya;
- return z;
-#else
- double quotient;
- if ((quotient = (double) *x / *y) >= 0)
- quotient = floor (quotient);
- else
- quotient = -floor (-quotient);
- return (*x - (*y) * quotient);
-#endif
-}
diff --git a/libf2c/libF77/r_nint.c b/libf2c/libF77/r_nint.c
deleted file mode 100644
index f2713d588b1..00000000000
--- a/libf2c/libF77/r_nint.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-r_nint (real * x)
-{
- return ((*x) >= 0 ? floor (*x + .5) : -floor (.5 - *x));
-}
diff --git a/libf2c/libF77/r_sign.c b/libf2c/libF77/r_sign.c
deleted file mode 100644
index f53c6bf9220..00000000000
--- a/libf2c/libF77/r_sign.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-double
-r_sign (real * a, real * b)
-{
- double x;
- x = (*a >= 0 ? *a : -*a);
- return (*b >= 0 ? x : -x);
-}
diff --git a/libf2c/libF77/r_sin.c b/libf2c/libF77/r_sin.c
deleted file mode 100644
index 5a5ef136a8c..00000000000
--- a/libf2c/libF77/r_sin.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-r_sin (real * x)
-{
- return (sin (*x));
-}
diff --git a/libf2c/libF77/r_sinh.c b/libf2c/libF77/r_sinh.c
deleted file mode 100644
index 723c7ab29c3..00000000000
--- a/libf2c/libF77/r_sinh.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-r_sinh (real * x)
-{
- return (sinh (*x));
-}
diff --git a/libf2c/libF77/r_sqrt.c b/libf2c/libF77/r_sqrt.c
deleted file mode 100644
index ed832ba70e1..00000000000
--- a/libf2c/libF77/r_sqrt.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-r_sqrt (real * x)
-{
- return (sqrt (*x));
-}
diff --git a/libf2c/libF77/r_tan.c b/libf2c/libF77/r_tan.c
deleted file mode 100644
index 4ef913e6522..00000000000
--- a/libf2c/libF77/r_tan.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-r_tan (real * x)
-{
- return (tan (*x));
-}
diff --git a/libf2c/libF77/r_tanh.c b/libf2c/libF77/r_tanh.c
deleted file mode 100644
index 6f2552a9f97..00000000000
--- a/libf2c/libF77/r_tanh.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include <math.h>
-double
-r_tanh (real * x)
-{
- return (tanh (*x));
-}
diff --git a/libf2c/libF77/s_cat.c b/libf2c/libF77/s_cat.c
deleted file mode 100644
index 4e8da1b3fdb..00000000000
--- a/libf2c/libF77/s_cat.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Unless compiled with -DNO_OVERWRITE, this variant of s_cat allows the
- * target of a concatenation to appear on its right-hand side (contrary
- * to the Fortran 77 Standard, but in accordance with Fortran 90).
- */
-
-#include "f2c.h"
-#ifndef NO_OVERWRITE
-#include <stdio.h>
-#undef abs
-#undef min
-#undef max
-#include <stdlib.h>
-extern char *F77_aloc (ftnlen, char *);
-#include <string.h>
-#endif /* NO_OVERWRITE */
-
-void
-s_cat (char *lp, char *rpp[], ftnint rnp[], ftnint * np, ftnlen ll)
-{
- ftnlen i, nc;
- char *rp;
- ftnlen n = *np;
-#ifndef NO_OVERWRITE
- ftnlen L, m;
- char *lp0, *lp1;
-
- lp0 = 0;
- lp1 = lp;
- L = ll;
- i = 0;
- while (i < n)
- {
- rp = rpp[i];
- m = rnp[i++];
- if (rp >= lp1 || rp + m <= lp)
- {
- if ((L -= m) <= 0)
- {
- n = i;
- break;
- }
- lp1 += m;
- continue;
- }
- lp0 = lp;
- lp = lp1 = F77_aloc (L = ll, "s_cat");
- break;
- }
- lp1 = lp;
-#endif /* NO_OVERWRITE */
- for (i = 0; i < n; ++i)
- {
- nc = ll;
- if (rnp[i] < nc)
- nc = rnp[i];
- ll -= nc;
- rp = rpp[i];
- while (--nc >= 0)
- *lp++ = *rp++;
- }
- while (--ll >= 0)
- *lp++ = ' ';
-#ifndef NO_OVERWRITE
- if (lp0)
- {
- memcpy (lp0, lp1, L);
- free (lp1);
- }
-#endif
-}
diff --git a/libf2c/libF77/s_cmp.c b/libf2c/libF77/s_cmp.c
deleted file mode 100644
index 5b43c9edb9c..00000000000
--- a/libf2c/libF77/s_cmp.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "f2c.h"
-
-/* compare two strings */
-
-integer
-s_cmp (char *a0, char *b0, ftnlen la, ftnlen lb)
-{
- register unsigned char *a, *aend, *b, *bend;
- a = (unsigned char *) a0;
- b = (unsigned char *) b0;
- aend = a + la;
- bend = b + lb;
-
- if (la <= lb)
- {
- while (a < aend)
- if (*a != *b)
- return (*a - *b);
- else
- {
- ++a;
- ++b;
- }
-
- while (b < bend)
- if (*b != ' ')
- return (' ' - *b);
- else
- ++b;
- }
-
- else
- {
- while (b < bend)
- if (*a == *b)
- {
- ++a;
- ++b;
- }
- else
- return (*a - *b);
- while (a < aend)
- if (*a != ' ')
- return (*a - ' ');
- else
- ++a;
- }
- return (0);
-}
diff --git a/libf2c/libF77/s_copy.c b/libf2c/libF77/s_copy.c
deleted file mode 100644
index a91071eccab..00000000000
--- a/libf2c/libF77/s_copy.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Unless compiled with -DNO_OVERWRITE, this variant of s_copy allows the
- * target of an assignment to appear on its right-hand side (contrary
- * to the Fortran 77 Standard, but in accordance with Fortran 90),
- * as in a(2:5) = a(4:7) .
- */
-
-#include "f2c.h"
-
-/* assign strings: a = b */
-
-void
-s_copy (register char *a, register char *b, ftnlen la, ftnlen lb)
-{
- register char *aend, *bend;
-
- aend = a + la;
-
- if (la <= lb)
-#ifndef NO_OVERWRITE
- if (a <= b || a >= b + la)
-#endif
- while (a < aend)
- *a++ = *b++;
-#ifndef NO_OVERWRITE
- else
- for (b += la; a < aend;)
- *--aend = *--b;
-#endif
-
- else
- {
- bend = b + lb;
-#ifndef NO_OVERWRITE
- if (a <= b || a >= bend)
-#endif
- while (b < bend)
- *a++ = *b++;
-#ifndef NO_OVERWRITE
- else
- {
- a += lb;
- while (b < bend)
- *--a = *--bend;
- a += lb;
- }
-#endif
- while (a < aend)
- *a++ = ' ';
- }
-}
diff --git a/libf2c/libF77/s_paus.c b/libf2c/libF77/s_paus.c
deleted file mode 100644
index 79691366e6f..00000000000
--- a/libf2c/libF77/s_paus.c
+++ /dev/null
@@ -1,71 +0,0 @@
-#include <stdio.h>
-#include "f2c.h"
-#define PAUSESIG 15
-
-#include "signal1.h"
-#undef abs
-#undef min
-#undef max
-#include <stdlib.h>
-extern int getpid (void), isatty (int), pause (void);
-
-extern void f_exit (void);
-
-static void
-waitpause (Sigarg)
-{
- Use_Sigarg;
- return;
-}
-
-static void
-s_1paus (FILE * fin)
-{
- fprintf (stderr,
- "To resume execution, type go. Other input will terminate the job.\n");
- fflush (stderr);
- if (getc (fin) != 'g' || getc (fin) != 'o' || getc (fin) != '\n')
- {
- fprintf (stderr, "STOP\n");
-#ifdef NO_ONEXIT
- f_exit ();
-#endif
- exit (0);
- }
-}
-
-int
-s_paus (char *s, ftnlen n)
-{
- fprintf (stderr, "PAUSE ");
- if (n > 0)
- fprintf (stderr, " %.*s", (int) n, s);
- fprintf (stderr, " statement executed\n");
- if (isatty (fileno (stdin)))
- s_1paus (stdin);
- else
- {
-#if (defined (MSDOS) && !defined (GO32)) || defined (_WIN32)
- FILE *fin;
- fin = fopen ("con", "r");
- if (!fin)
- {
- fprintf (stderr, "s_paus: can't open con!\n");
- fflush (stderr);
- exit (1);
- }
- s_1paus (fin);
- fclose (fin);
-#else
- fprintf (stderr,
- "To resume execution, execute a kill -%d %d command\n",
- PAUSESIG, getpid ());
- signal1 (PAUSESIG, waitpause);
- fflush (stderr);
- pause ();
-#endif
- }
- fprintf (stderr, "Execution resumes after PAUSE.\n");
- fflush (stderr);
- return 0; /* NOT REACHED */
-}
diff --git a/libf2c/libF77/s_rnge.c b/libf2c/libF77/s_rnge.c
deleted file mode 100644
index 6c054c707f5..00000000000
--- a/libf2c/libF77/s_rnge.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include <stdio.h>
-#include "f2c.h"
-
-/* called when a subscript is out of range */
-
-extern void sig_die (char *, int);
-integer
-s_rnge (char *varn, ftnint offset, char *procn, ftnint line)
-{
- register int i;
-
- fprintf (stderr, "Subscript out of range on file line %ld, procedure ",
- (long) line);
- while ((i = *procn) && i != '_' && i != ' ')
- putc (*procn++, stderr);
- fprintf (stderr, ".\nAttempt to access the %ld-th element of variable ",
- (long) offset + 1);
- while ((i = *varn) && i != ' ')
- putc (*varn++, stderr);
- sig_die (".", 1);
- return 0; /* not reached */
-}
diff --git a/libf2c/libF77/s_stop.c b/libf2c/libF77/s_stop.c
deleted file mode 100644
index 571416be7bb..00000000000
--- a/libf2c/libF77/s_stop.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include <stdio.h>
-#include "f2c.h"
-
-#undef abs
-#undef min
-#undef max
-#include <stdlib.h>
-void f_exit (void);
-
-int
-s_stop (char *s, ftnlen n)
-{
- int i;
-
- if (n > 0)
- {
- fprintf (stderr, "STOP ");
- for (i = 0; i < n; ++i)
- putc (*s++, stderr);
- fprintf (stderr, " statement executed\n");
- }
-#ifdef NO_ONEXIT
- f_exit ();
-#endif
- exit (0);
-
-/* We cannot avoid (useless) compiler diagnostics here: */
-/* some compilers complain if there is no return statement, */
-/* and others complain that this one cannot be reached. */
-
- return 0; /* NOT REACHED */
-}
diff --git a/libf2c/libF77/setarg.c b/libf2c/libF77/setarg.c
deleted file mode 100644
index 49515746f48..00000000000
--- a/libf2c/libF77/setarg.c
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Set up the global argc/argv info for use by getarg_, iargc_, and
- g77's inlined intrinsic equivalents. */
-
-#include <stdlib.h>
-
-int f__xargc;
-char **f__xargv;
-
-void
-f_setarg (int argc, char **argv)
-{
- f__xargc = argc;
- f__xargv = argv;
-}
diff --git a/libf2c/libF77/setsig.c b/libf2c/libF77/setsig.c
deleted file mode 100644
index 96826be94fd..00000000000
--- a/libf2c/libF77/setsig.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/* Set up the signal behavior. */
-
-#include <stdio.h>
-#include "signal1.h"
-
-#ifndef SIGIOT
-#ifdef SIGABRT
-#define SIGIOT SIGABRT
-#endif
-#endif
-
-#include <stdlib.h>
-
-extern void sig_die (char *, int);
-
-static void
-sigfdie (Sigarg)
-{
- Use_Sigarg;
- sig_die ("Floating Exception", 1);
-}
-
-
-static void
-sigidie (Sigarg)
-{
- Use_Sigarg;
- sig_die ("IOT Trap", 1);
-}
-
-#ifdef SIGQUIT
-static void
-sigqdie (Sigarg)
-{
- Use_Sigarg;
- sig_die ("Quit signal", 1);
-}
-#endif
-
-
-static void
-sigindie (Sigarg)
-{
- Use_Sigarg;
- sig_die ("Interrupt", 0);
-}
-
-static void
-sigtdie (Sigarg)
-{
- Use_Sigarg;
- sig_die ("Killed", 0);
-}
-
-#ifdef SIGTRAP
-static void
-sigtrdie (Sigarg)
-{
- Use_Sigarg;
- sig_die ("Trace trap", 1);
-}
-#endif
-
-
-void
-f_setsig ()
-{
- signal1 (SIGFPE, sigfdie); /* ignore underflow, enable overflow */
-#ifdef SIGIOT
- signal1 (SIGIOT, sigidie);
-#endif
-#ifdef SIGTRAP
- signal1 (SIGTRAP, sigtrdie);
-#endif
-#ifdef SIGQUIT
- if (signal1 (SIGQUIT, sigqdie) == SIG_IGN)
- signal1 (SIGQUIT, SIG_IGN);
-#endif
- if (signal1 (SIGINT, sigindie) == SIG_IGN)
- signal1 (SIGINT, SIG_IGN);
- signal1 (SIGTERM, sigtdie);
-
-#ifdef pdp11
- ldfps (01200); /* detect overflow as an exception */
-#endif
-}
diff --git a/libf2c/libF77/sig_die.c b/libf2c/libF77/sig_die.c
deleted file mode 100644
index 622462e248b..00000000000
--- a/libf2c/libF77/sig_die.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include <stdio.h>
-#include <signal.h>
-
-#ifndef SIGIOT
-#ifdef SIGABRT
-#define SIGIOT SIGABRT
-#endif
-#endif
-
-#include <stdlib.h>
-extern void f_exit (void);
-
-void
-sig_die (register char *s, int kill)
-{
- /* print error message, then clear buffers */
- fprintf (stderr, "%s\n", s);
-
- if (kill)
- {
- fflush (stderr);
- f_exit ();
- fflush (stderr);
- /* now get a core */
-#ifdef SIGIOT
- signal (SIGIOT, SIG_DFL);
-#endif
- abort ();
- }
- else
- {
-#ifdef NO_ONEXIT
- f_exit ();
-#endif
- exit (1);
- }
-}
diff --git a/libf2c/libF77/signal1.h b/libf2c/libF77/signal1.h
deleted file mode 100644
index b559211e8e4..00000000000
--- a/libf2c/libF77/signal1.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/* The g77 implementation of libf2c directly includes signal1.h0,
- instead of copying it to signal1.h, since that seems easier to
- cope with at this point. */
-
-#include "signal1.h0"
diff --git a/libf2c/libF77/signal1.h0 b/libf2c/libF77/signal1.h0
deleted file mode 100644
index 0e2fcf2c1e6..00000000000
--- a/libf2c/libF77/signal1.h0
+++ /dev/null
@@ -1,26 +0,0 @@
-/* You may need to adjust the definition of signal1 to supply a */
-/* cast to the correct argument type. This detail is system- and */
-/* compiler-dependent. The #define below assumes signal.h declares */
-/* type SIG_PF for the signal function's second argument. */
-
-/* For some C++ compilers, "#define Sigarg_t ..." may be appropriate. */
-
-#include <signal.h>
-
-#ifndef Sigret_t
-#define Sigret_t void
-#endif
-#ifndef Sigarg_t
-#define Sigarg_t int
-#endif /*Sigarg_t */
-
-#ifdef USE_SIG_PF /* compile with -DUSE_SIG_PF under IRIX */
-#define sig_pf SIG_PF
-#else
-typedef Sigret_t (*sig_pf) (Sigarg_t);
-#endif
-
-#define signal1(a,b) signal(a,(sig_pf)b)
-
-#define Sigarg int n
-#define Use_Sigarg n = n /* shut up compiler warning */
diff --git a/libf2c/libF77/signal_.c b/libf2c/libF77/signal_.c
deleted file mode 100644
index f67831c3c43..00000000000
--- a/libf2c/libF77/signal_.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "f2c.h"
-#include "signal1.h"
-
-void *
-G77_signal_0 (integer * sigp, sig_pf proc)
-{
- int sig;
- sig = (int) *sigp;
-
- return (void *) signal (sig, proc);
-}
diff --git a/libf2c/libF77/system_.c b/libf2c/libF77/system_.c
deleted file mode 100644
index dbbd0bea9ec..00000000000
--- a/libf2c/libF77/system_.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* f77 interface to system routine */
-
-#include "f2c.h"
-
-#undef abs
-#undef min
-#undef max
-#include <stdlib.h>
-extern char *F77_aloc (ftnlen, char *);
-
-integer
-G77_system_0 (register char *s, ftnlen n)
-{
- char buff0[256], *buff;
- register char *bp, *blast;
- integer rv;
-
- buff = bp = n < (ftnlen) sizeof (buff0) ? buff0 : F77_aloc (n + 1, "system_");
- blast = bp + n;
-
- while (bp < blast && *s)
- *bp++ = *s++;
- *bp = 0;
- rv = system (buff);
- if (buff != buff0)
- free (buff);
- return rv;
-}
diff --git a/libf2c/libF77/z_abs.c b/libf2c/libF77/z_abs.c
deleted file mode 100644
index 2419c0eac49..00000000000
--- a/libf2c/libF77/z_abs.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "f2c.h"
-
-double f__cabs (double, double);
-double
-z_abs (doublecomplex * z)
-{
- return (f__cabs (z->r, z->i));
-}
diff --git a/libf2c/libF77/z_cos.c b/libf2c/libF77/z_cos.c
deleted file mode 100644
index 0f4cd71bd5a..00000000000
--- a/libf2c/libF77/z_cos.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include "math.h"
-void
-z_cos (doublecomplex * r, doublecomplex * z)
-{
- double zi = z->i, zr = z->r;
- r->r = cos (zr) * cosh (zi);
- r->i = -sin (zr) * sinh (zi);
-}
diff --git a/libf2c/libF77/z_div.c b/libf2c/libF77/z_div.c
deleted file mode 100644
index a5fc527bdc2..00000000000
--- a/libf2c/libF77/z_div.c
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "f2c.h"
-
-extern void sig_die (char *, int);
-void
-z_div (doublecomplex * c, doublecomplex * a, doublecomplex * b)
-{
- double ratio, den;
- double abr, abi, cr;
-
- if ((abr = b->r) < 0.)
- abr = -abr;
- if ((abi = b->i) < 0.)
- abi = -abi;
- if (abr <= abi)
- {
- if (abi == 0)
- {
-#ifdef IEEE_COMPLEX_DIVIDE
- if (a->i != 0 || a->r != 0)
- abi = 1.;
- c->i = c->r = abi / abr;
- return;
-#else
- sig_die ("complex division by zero", 1);
-#endif
- }
- ratio = b->r / b->i;
- den = b->i * (1 + ratio * ratio);
- cr = (a->r * ratio + a->i) / den;
- c->i = (a->i * ratio - a->r) / den;
- }
-
- else
- {
- ratio = b->i / b->r;
- den = b->r * (1 + ratio * ratio);
- cr = (a->r + a->i * ratio) / den;
- c->i = (a->i - a->r * ratio) / den;
- }
- c->r = cr;
-}
diff --git a/libf2c/libF77/z_exp.c b/libf2c/libF77/z_exp.c
deleted file mode 100644
index 16f51e74a45..00000000000
--- a/libf2c/libF77/z_exp.c
+++ /dev/null
@@ -1,13 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include "math.h"
-void
-z_exp (doublecomplex * r, doublecomplex * z)
-{
- double expx, zi = z->i;
-
- expx = exp (z->r);
- r->r = expx * cos (zi);
- r->i = expx * sin (zi);
-}
diff --git a/libf2c/libF77/z_log.c b/libf2c/libF77/z_log.c
deleted file mode 100644
index f56b12ed7e3..00000000000
--- a/libf2c/libF77/z_log.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include "math.h"
-extern double f__cabs (double, double);
-void
-z_log (doublecomplex * r, doublecomplex * z)
-{
- double s, s0, t, t2, u, v;
- double zi = z->i, zr = z->r;
-
- r->i = atan2 (zi, zr);
-#ifdef Pre20000310
- r->r = log (f__cabs (zr, zi));
-#else
- if (zi < 0)
- zi = -zi;
- if (zr < 0)
- zr = -zr;
- if (zr < zi)
- {
- t = zi;
- zi = zr;
- zr = t;
- }
- t = zi / zr;
- s = zr * sqrt (1 + t * t);
- /* now s = f__cabs(zi,zr), and zr = |zr| >= |zi| = zi */
- if ((t = s - 1) < 0)
- t = -t;
- if (t > .01)
- r->r = log (s);
- else
- {
-
-#ifdef Comment
-
- log (1 + x) = x - x ^ 2 / 2 + x ^ 3 / 3 - x ^ 4 / 4 + -...
- = x (1 - x / 2 + x ^ 2 / 3 - +...)
- [sqrt (y ^ 2 + z ^ 2) - 1] *[sqrt (y ^ 2 + z ^ 2) + 1] =
- y ^ 2 + z ^ 2 - 1, so sqrt (y ^ 2 + z ^ 2) - 1 =
- (y ^ 2 + z ^ 2 - 1) /[sqrt (y ^ 2 + z ^ 2) + 1]
-#endif /*Comment */
- t = ((zr * zr - 1.) + zi * zi) / (s + 1);
- t2 = t * t;
- s = 1. - 0.5 * t;
- u = v = 1;
- do
- {
- s0 = s;
- u *= t2;
- v += 2;
- s += u / v - t * u / (v + 1);
- }
- while (s > s0);
- r->r = s * t;
- }
-#endif
-}
diff --git a/libf2c/libF77/z_sin.c b/libf2c/libF77/z_sin.c
deleted file mode 100644
index 8cb44cf53ca..00000000000
--- a/libf2c/libF77/z_sin.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include "math.h"
-void
-z_sin (doublecomplex * r, doublecomplex * z)
-{
- double zi = z->i, zr = z->r;
- r->r = sin (zr) * cosh (zi);
- r->i = cos (zr) * sinh (zi);
-}
diff --git a/libf2c/libF77/z_sqrt.c b/libf2c/libF77/z_sqrt.c
deleted file mode 100644
index 954c2fa1889..00000000000
--- a/libf2c/libF77/z_sqrt.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "f2c.h"
-
-#undef abs
-#include "math.h"
-extern double f__cabs (double, double);
-void
-z_sqrt (doublecomplex * r, doublecomplex * z)
-{
- double mag, zi = z->i, zr = z->r;
-
- if ((mag = f__cabs (zr, zi)) == 0.)
- r->r = r->i = 0.;
- else if (zr > 0)
- {
- r->r = sqrt (0.5 * (mag + zr));
- r->i = zi / r->r / 2;
- }
- else
- {
- r->i = sqrt (0.5 * (mag - zr));
- if (zi < 0)
- r->i = -r->i;
- r->r = zi / r->i / 2;
- }
-}
diff --git a/libf2c/libI77/Makefile.in b/libf2c/libI77/Makefile.in
deleted file mode 100644
index d6abf7030a3..00000000000
--- a/libf2c/libI77/Makefile.in
+++ /dev/null
@@ -1,169 +0,0 @@
-# Makefile for GNU F77 compiler runtime.
-# Copyright 1990 - 1994 by AT&T Bell Laboratories and Bellcore (see the
-# file `Notice').
-# Portions of this file Copyright (C) 1995, 1996, 1998, 2001 Free Software Foundation, Inc.
-# Contributed by Dave Love (d.love@dl.ac.uk).
-#
-#This file is part of GNU Fortran.
-#
-#GNU Fortran 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 Fortran 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 Fortran; see the file COPYING. If not, write to
-#the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-#02111-1307, USA.
-
-#### Start of system configuration section. ####
-
-# $(srcdir) must be set to the g77 runtime libI77 source directory.
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-# configure sets this to all the -D options appropriate for the
-# configuration.
-DEFS = @DEFS@
-
-F2C_H_DIR = @srcdir@/..
-G2C_H_DIR = ..
-CC = @CC@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-@SET_MAKE@
-
-SHELL = @SHELL@
-
-#### End of system configuration section. ####
-
-ALL_CFLAGS = -I. -I$(srcdir) -I$(G2C_H_DIR) -I$(F2C_H_DIR) $(CPPFLAGS) \
- $(DEFS) $(WARN_CFLAGS) $(CFLAGS)
-
-.SUFFIXES:
-.SUFFIXES: .c .lo
-
-.c.lo:
- @LIBTOOL@ --mode=compile $(CC) -c -DSkip_f2c_Undefs -DAllow_TYQUAD $(ALL_CFLAGS) $<
-
-OBJS = VersionI.lo backspace.lo close.lo dfe.lo dolio.lo due.lo endfile.lo err.lo \
- fmt.lo fmtlib.lo iio.lo ilnw.lo inquire.lo lread.lo lwrite.lo open.lo \
- rdfmt.lo rewind.lo rsfe.lo rsli.lo rsne.lo sfe.lo sue.lo typesize.lo uio.lo \
- util.lo wref.lo wrtfmt.lo wsfe.lo wsle.lo wsne.lo xwsne.lo \
- ftell_.lo
-
-all: ../s-libi77
-
-../s-libi77: $(OBJS)
- -rm -f $@.T $@
- objs='$(OBJS)'; for name in $$objs; do \
- echo libI77/$${name} >> $@.T; done
- mv $@.T $@
-
-Makefile: Makefile.in config.status
- $(SHELL) config.status
-
-config.status: configure
- rm -f config.cache
- CONFIG_SITE=no-such-file CC='$(CC)' CFLAGS='$(CFLAGS)' \
- CPPFLAGS='$(CPPFLAGS)' $(SHELL) config.status --recheck
-
-${srcdir}/configure: configure.in
- rm -f config.cache
- cd ${srcdir} && autoconf
-
-# autoheader might not change config.h.in, so touch a stamp file.
-${srcdir}/config.h.in: stamp-h.in; @true
-${srcdir}/stamp-h.in: configure.in
- (cd ${srcdir} && autoheader)
- @rm -f ${srcdir}/stamp-h.in
- echo timestamp > ${srcdir}/stamp-h.in
-
-config.h: stamp-h; @true
-stamp-h: config.h.in config.status
- CONFIG_FILES= CONFIG_HEADERS=config.h $(SHELL) config.status
- echo timestamp > stamp-h
-
-VersionI.lo: Version.c
- @LIBTOOL@ --mode=compile $(CC) -c $(ALL_CFLAGS) $(srcdir)/Version.c -o $@
-
-backspace.lo: backspace.c fio.h config.h
-close.lo: close.c fio.h config.h
-dfe.lo: fio.h config.h
-dfe.lo: dfe.c fmt.h
-dolio.lo: dolio.c config.h
-due.lo: due.c fio.h config.h
-endfile.lo: endfile.c fio.h config.h
-err.lo: err.c fio.h config.h
-fmt.lo: fio.h config.h
-fmt.lo: fmt.c fmt.h
-fmtlib.lo: fmtlib.c config.h
-ftell_.lo: ftell_.c fio.h config.h
-iio.lo: fio.h
-iio.lo: iio.c fmt.h
-ilnw.lo: fio.h config.h
-ilnw.lo: ilnw.c lio.h
-inquire.lo: inquire.c fio.h config.h
-lread.lo: fio.h config.h
-lread.lo: fmt.h
-lread.lo: lio.h
-lread.lo: lread.c fp.h
-lwrite.lo: fio.h
-lwrite.lo: fmt.h
-lwrite.lo: lwrite.c lio.h
-open.lo: open.c fio.h config.h
-rdfmt.lo: fio.h config.h
-rdfmt.lo: fmt.h
-rdfmt.lo: rdfmt.c fp.h
-rewind.lo: rewind.c fio.h config.h
-rsfe.lo: fio.h config.h
-rsfe.lo: rsfe.c fmt.h
-rsli.lo: fio.h
-rsli.lo: rsli.c lio.h
-rsne.lo: fio.h config.h
-rsne.lo: rsne.c lio.h
-sfe.lo: sfe.c fio.h config.h
-sue.lo: sue.c fio.h config.h
-typesize.lo: typesize.c config.h
-uio.lo: uio.c fio.h
-util.lo: util.c fio.h config.h
-wref.lo: fio.h
-wref.lo: fmt.h
-wref.lo: wref.c fp.h
-wrtfmt.lo: fio.h config.h
-wrtfmt.lo: wrtfmt.c fmt.h
-wsfe.lo: fio.h config.h
-wsfe.lo: wsfe.c fmt.h
-wsle.lo: fio.h config.h
-wsle.lo: fmt.h
-wsle.lo: wsle.c lio.h
-wsne.lo: fio.h
-wsne.lo: wsne.c lio.h
-xwsne.lo: fio.h config.h
-xwsne.lo: lio.h
-xwsne.lo: xwsne.c fmt.h
-
-# May be pessimistic:
-$(OBJS): $(F2C_H_DIR)/f2c.h $(G2C_H_DIR)/g2c.h
-
-check install uninstall install-strip dist installcheck installdirs:
-
-mostlyclean:
- rm -f *.o *.lo
- rm -rf .libs
-
-clean: mostlyclean
- rm -f config.log ../s-libi77
-
-distclean: clean
- rm -f config.cache config.status Makefile ../s-libi77 configure
-
-maintainer-clean:
-
-.PHONY: mostlyclean clean distclean maintainer-clean all check uninstall \
- install-strip dist installcheck installdirs archive
diff --git a/libf2c/libI77/Notice b/libf2c/libI77/Notice
deleted file mode 100644
index 261b719bc57..00000000000
--- a/libf2c/libI77/Notice
+++ /dev/null
@@ -1,23 +0,0 @@
-/****************************************************************
-Copyright 1990 - 1997 by AT&T, Lucent Technologies and Bellcore.
-
-Permission to use, copy, modify, and distribute this software
-and its documentation for any purpose and without fee is hereby
-granted, provided that the above copyright notice appear in all
-copies and that both that the copyright notice and this
-permission notice and warranty disclaimer appear in supporting
-documentation, and that the names of AT&T, Bell Laboratories,
-Lucent or Bellcore or any of their entities not be used in
-advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-AT&T, Lucent and Bellcore disclaim all warranties with regard to
-this software, including all implied warranties of
-merchantability and fitness. In no event shall AT&T, Lucent or
-Bellcore be liable for any special, indirect or consequential
-damages or any damages whatsoever resulting from loss of use,
-data or profits, whether in an action of contract, negligence or
-other tortious action, arising out of or in connection with the
-use or performance of this software.
-****************************************************************/
-
diff --git a/libf2c/libI77/README.netlib b/libf2c/libI77/README.netlib
deleted file mode 100644
index 30dd5b5223d..00000000000
--- a/libf2c/libI77/README.netlib
+++ /dev/null
@@ -1,225 +0,0 @@
-If your compiler does not recognize ANSI C headers,
-compile with KR_headers defined: either add -DKR_headers
-to the definition of CFLAGS in the makefile, or insert
-
-#define KR_headers
-
-at the top of f2c.h and fmtlib.c .
-
-
-If you have a really ancient K&R C compiler that does not understand
-void, add -Dvoid=int to the definition of CFLAGS in the makefile.
-
-If you use a C++ compiler, first create a local f2c.h by appending
-f2ch.add to the usual f2c.h, e.g., by issuing the command
- make f2c.h
-which assumes f2c.h is installed in /usr/include .
-
-If your system lacks /usr/include/fcntl.h , then you
-should simply create an empty fcntl.h in this directory.
-If your compiler then complains about creat and open not
-having a prototype, compile with OPEN_DECL defined.
-On many systems, open and creat are declared in fcntl.h .
-
-If your system has /usr/include/fcntl.h, you may need to add
--D_POSIX_SOURCE to the makefile's definition of CFLAGS.
-
-If your system's sprintf does not work the way ANSI C
-specifies -- specifically, if it does not return the
-number of characters transmitted -- then insert the line
-
-#define USE_STRLEN
-
-at the end of fmt.h . This is necessary with
-at least some versions of Sun and DEC software.
-In particular, if you get a warning about an improper
-pointer/integer combination in compiling wref.c, then
-you need to compile with -DUSE_STRLEN .
-
-If your system's fopen does not like the ANSI binary
-reading and writing modes "rb" and "wb", then you should
-compile open.c with NON_ANSI_RW_MODES #defined.
-
-If you get error messages about references to cf->_ptr
-and cf->_base when compiling wrtfmt.c and wsfe.c or to
-stderr->_flag when compiling err.c, then insert the line
-
-#define NON_UNIX_STDIO
-
-at the beginning of fio.h, and recompile everything (or
-at least those modules that contain NON_UNIX_STDIO).
-
-Unformatted sequential records consist of a length of record
-contents, the record contents themselves, and the length of
-record contents again (for backspace). Prior to 17 Oct. 1991,
-the length was of type int; now it is of type long, but you
-can change it back to int by inserting
-
-#define UIOLEN_int
-
-at the beginning of fio.h. This affects only sue.c and uio.c .
-
-On VAX, Cray, or Research Tenth-Edition Unix systems, you may
-need to add -DVAX, -DCRAY, or -DV10 (respectively) to CFLAGS
-to make fp.h work correctly. Alternatively, you may need to
-edit fp.h to suit your machine.
-
-You may need to supply the following non-ANSI routines:
-
- fstat(int fileds, struct stat *buf) is similar
-to stat(char *name, struct stat *buf), except that
-the first argument, fileds, is the file descriptor
-returned by open rather than the name of the file.
-fstat is used in the system-dependent routine
-canseek (in the libI77 source file err.c), which
-is supposed to return 1 if it's possible to issue
-seeks on the file in question, 0 if it's not; you may
-need to suitably modify err.c . On non-UNIX systems,
-you can avoid references to fstat and stat by compiling
-with NON_UNIX_STDIO defined; in that case, you may need
-to supply access(char *Name,0), which is supposed to
-return 0 if file Name exists, nonzero otherwise.
-
- char * mktemp(char *buf) is supposed to replace the
-6 trailing X's in buf with a unique number and then
-return buf. The idea is to get a unique name for
-a temporary file.
-
-On non-UNIX systems, you may need to change a few other,
-e.g.: the form of name computed by mktemp() in endfile.c and
-open.c; the use of the open(), close(), and creat() system
-calls in endfile.c, err.c, open.c; and the modes in calls on
-fopen() and fdopen() (and perhaps the use of fdopen() itself
--- it's supposed to return a FILE* corresponding to a given
-an integer file descriptor) in err.c and open.c (component ufmt
-of struct unit is 1 for formatted I/O -- text mode on some systems
--- and 0 for unformatted I/O -- binary mode on some systems).
-Compiling with -DNON_UNIX_STDIO omits all references to creat()
-and almost all references to open() and close(), the exception
-being in the function f__isdev() (in open.c).
-
-For MS-DOS, compile all of libI77 with -DMSDOS (which implies
--DNON_UNIX_STDIO). You may need to make other compiler-dependent
-adjustments; for example, for Turbo C++ you need to adjust the mktemp
-invocations and to #undef ungetc in lread.c and rsne.c .
-
-If you want to be able to load against libI77 but not libF77,
-then you will need to add sig_die.o (from libF77) to libI77.
-
-If you wish to use translated Fortran that has funny notions
-of record length for direct unformatted I/O (i.e., that assumes
-RECL= values in OPEN statements are not bytes but rather counts
-of some other units -- e.g., 4-character words for VMS), then you
-should insert an appropriate #define for url_Adjust at the
-beginning of open.c . For VMS Fortran, for example,
-#define url_Adjust(x) x *= 4
-would suffice.
-
-To check for transmission errors, issue the command
- make check
-This assumes you have the xsum program whose source, xsum.c,
-is distributed as part of "all from f2c/src". If you do not
-have xsum, you can obtain xsum.c by sending the following E-mail
-message to netlib@netlib.bell-labs.com
- send xsum.c from f2c/src
-
-The makefile assumes you have installed f2c.h in a standard
-place (and does not cause recompilation when f2c.h is changed);
-f2c.h comes with "all from f2c" (the source for f2c) and is
-available separately ("f2c.h from f2c").
-
-By default, Fortran I/O units 5, 6, and 0 are pre-connected to
-stdin, stdout, and stderr, respectively. You can change this
-behavior by changing f_init() in err.c to suit your needs.
-Note that f2c assumes READ(*... means READ(5... and WRITE(*...
-means WRITE(6... . Moreover, an OPEN(n,... statement that does
-not specify a file name (and does not specify STATUS='SCRATCH')
-assumes FILE='fort.n' . You can change this by editing open.c
-and endfile.c suitably.
-
-Unless you adjust the "#define MXUNIT" line in fio.h, Fortran units
-0, 1, ..., 99 are available, i.e., the highest allowed unit number
-is MXUNIT - 1.
-
-Lines protected from compilation by #ifdef Allow_TYQUAD
-are for a possible extension to 64-bit integers in which
-integer = int = 32 bits and longint = long = 64 bits.
-
-Extensions (Feb. 1993) to NAMELIST processing:
- 1. Reading a ? instead of &name (the start of a namelist) causes
-the namelist being sought to be written to stdout (unit 6);
-to omit this feature, compile rsne.c with -DNo_Namelist_Questions.
- 2. Reading the wrong namelist name now leads to an error message
-and an attempt to skip input until the right namelist name is found;
-to omit this feature, compile rsne.c with -DNo_Bad_Namelist_Skip.
- 3. Namelist writes now insert newlines before each variable; to omit
-this feature, compile xwsne.c with -DNo_Extra_Namelist_Newlines.
- 4. (Sept. 1995) When looking for the &name that starts namelist
-input, lines whose first non-blank character is something other
-than &, $, or ? are treated as comment lines and ignored, unless
-rsne.c is compiled with -DNo_Namelist_Comments.
-
-Nonstandard extension (Feb. 1993) to open: for sequential files,
-ACCESS='APPEND' (or access='anything else starting with "A" or "a"')
-causes the file to be positioned at end-of-file, so a write will
-append to the file.
-
-Some buggy Fortran programs use unformatted direct I/O to write
-an incomplete record and later read more from that record than
-they have written. For records other than the last, the unwritten
-portion of the record reads as binary zeros. The last record is
-a special case: attempting to read more from it than was written
-gives end-of-file -- which may help one find a bug. Some other
-Fortran I/O libraries treat the last record no differently than
-others and thus give no help in finding the bug of reading more
-than was written. If you wish to have this behavior, compile
-uio.c with -DPad_UDread .
-
-If you want to be able to catch write failures (e.g., due to a
-disk being full) with an ERR= specifier, compile dfe.c, due.c,
-sfe.c, sue.c, and wsle.c with -DALWAYS_FLUSH. This will lead to
-slower execution and more I/O, but should make ERR= work as
-expected, provided fflush returns an error return when its
-physical write fails.
-
-Carriage controls are meant to be interpreted by the UNIX col
-program (or a similar program). Sometimes it's convenient to use
-only ' ' as the carriage control character (normal single spacing).
-If you compile lwrite.c and wsfe.c with -DOMIT_BLANK_CC, formatted
-external output lines will have an initial ' ' quietly omitted,
-making use of the col program unnecessary with output that only
-has ' ' for carriage control.
-
-The Fortran 77 Standard leaves it up to the implementation whether
-formatted writes of floating-point numbers of absolute value < 1 have
-a zero before the decimal point. By default, libI77 omits such
-superfluous zeros, but you can cause them to appear by compiling
-lwrite.c, wref.c, and wrtfmt.c with -DWANT_LEAD_0 .
-
-If your system lacks a ranlib command, you don't need it.
-Either comment out the makefile's ranlib invocation, or install
-a harmless "ranlib" command somewhere in your PATH, such as the
-one-line shell script
-
- exit 0
-
-or (on some systems)
-
- exec /usr/bin/ar lts $1 >/dev/null
-
-Most of the routines in libI77 are support routines for Fortran
-I/O. There are a few exceptions, summarized below -- I/O related
-functions and subroutines that appear to your program as ordinary
-external Fortran routines.
-
-1. CALL FLUSH flushes all buffers.
-
-2. FTELL(i) is an INTEGER function that returns the current
- offset of Fortran unit i (or -1 if unit i is not open).
-
-3. CALL FSEEK(i, offset, whence, *errlab) attemps to move
- Fortran unit i to the specified offset: absolute offset
- if whence = 0; relative to the current offset if whence = 1;
- relative to the end of the file if whence = 2. It branches
- to label errlab if unit i is not open or if the call
- otherwise fails.
diff --git a/libf2c/libI77/Version.c b/libf2c/libI77/Version.c
deleted file mode 100644
index f6b3d5d8a5e..00000000000
--- a/libf2c/libI77/Version.c
+++ /dev/null
@@ -1,324 +0,0 @@
-const char __LIBI77_VERSION__[] = "@(#) LIBI77 VERSION pjw,dmg-mods 20001205\n";
-
-/*
-2.01 $ format added
-2.02 Coding bug in open.c repaired
-2.03 fixed bugs in lread.c (read * with negative f-format) and lio.c
- and lio.h (e-format conforming to spec)
-2.04 changed open.c and err.c (fopen and freopen respectively) to
- update to new c-library (append mode)
-2.05 added namelist capability
-2.06 allow internal list and namelist I/O
-*/
-
-/*
-close.c:
- allow upper-case STATUS= values
-endfile.c
- create fort.nnn if unit nnn not open;
- else if (file length == 0) use creat() rather than copy;
- use local copy() rather than forking /bin/cp;
- rewind, fseek to clear buffer (for no reading past EOF)
-err.c
- use neither setbuf nor setvbuf; make stderr buffered
-fio.h
- #define _bufend
-inquire.c
- upper case responses;
- omit byfile test from SEQUENTIAL=
- answer "YES" to DIRECT= for unopened file (open to debate)
-lio.c
- flush stderr, stdout at end of each stmt
- space before character strings in list output only at line start
-lio.h
- adjust LEW, LED consistent with old libI77
-lread.c
- use atof()
- allow "nnn*," when reading complex constants
-open.c
- try opening for writing when open for read fails, with
- special uwrt value (2) delaying creat() to first write;
- set curunit so error messages don't drop core;
- no file name ==> fort.nnn except for STATUS='SCRATCH'
-rdfmt.c
- use atof(); trust EOF == end-of-file (so don't read past
- end-of-file after endfile stmt)
-sfe.c
- flush stderr, stdout at end of each stmt
-wrtfmt.c:
- use upper case
- put wrt_E and wrt_F into wref.c, use sprintf()
- rather than ecvt() and fcvt() [more accurate on VAX]
-*/
-
-/* 16 Oct. 1988: uwrt = 3 after write, rewind, so close won't zap the file. */
-
-/* 10 July 1989: change _bufend to buf_end in fio.h, wsfe.c, wrtfmt.c */
-
-/* 28 Nov. 1989: corrections for IEEE and Cray arithmetic */
-/* 29 Nov. 1989: change various int return types to long for f2c */
-/* 30 Nov. 1989: various types from f2c.h */
-/* 6 Dec. 1989: types corrected various places */
-/* 19 Dec. 1989: make iostat= work right for internal I/O */
-/* 8 Jan. 1990: add rsne, wsne -- routines for handling NAMELIST */
-/* 28 Jan. 1990: have NAMELIST read treat $ as &, general white
- space as blank */
-/* 27 Mar. 1990: change an = to == in rd_L(rdfmt.c) so formatted reads
- of logical values reject letters other than fFtT;
- have nowwriting reset cf */
-/* 14 Aug. 1990: adjust lread.c to treat tabs as spaces in list input */
-/* 17 Aug. 1990: adjust open.c to recognize blank='Z...' as well as
- blank='z...' when reopening an open file */
-/* 30 Aug. 1990: prevent embedded blanks in list output of complex values;
- omit exponent field in list output of values of
- magnitude between 10 and 1e8; prevent writing stdin
- and reading stdout or stderr; don't close stdin, stdout,
- or stderr when reopening units 5, 6, 0. */
-/* 18 Sep. 1990: add component udev to unit and consider old == new file
- iff uinode and udev values agree; use stat rather than
- access to check existence of file (when STATUS='OLD')*/
-/* 2 Oct. 1990: adjust rewind.c so two successive rewinds after a write
- don't clobber the file. */
-/* 9 Oct. 1990: add #include "fcntl.h" to endfile.c, err.c, open.c;
- adjust g_char in util.c for segmented memories. */
-/* 17 Oct. 1990: replace abort() and _cleanup() with calls on
- sig_die(...,1) (defined in main.c). */
-/* 5 Nov. 1990: changes to open.c: complain if new= is specified and the
- file already exists; allow file= to be omitted in open stmts
- and allow status='replace' (Fortran 90 extensions). */
-/* 11 Dec. 1990: adjustments for POSIX. */
-/* 15 Jan. 1991: tweak i_ungetc in rsli.c to allow reading from
- strings in read-only memory. */
-/* 25 Apr. 1991: adjust namelist stuff to work with f2c -i2 */
-/* 26 Apr. 1991: fix some bugs with NAMELIST read of multi-dim. arrays */
-/* 16 May 1991: increase LEFBL in lio.h to bypass NeXT bug */
-/* 17 Oct. 1991: change type of length field in sequential unformatted
- records from int to long (for systems where sizeof(int)
- can vary, depending on the compiler or compiler options). */
-/* 14 Nov. 1991: change uint to Uint in fmt.h, rdfmt.c, wrtfmt.c. */
-/* 25 Nov. 1991: change uint to Uint in lwrite.c; change sizeof(int) to
- sizeof(uioint) in fseeks in sue.c (missed on 17 Oct.). */
-/* 1 Dec. 1991: uio.c: add test for read failure (seq. unformatted reads);
- adjust an error return from EOF to off end of record */
-/* 12 Dec. 1991: rsli.c: fix bug with internal list input that caused
- the last character of each record to be ignored.
- iio.c: adjust error message in internal formatted
- input from "end-of-file" to "off end of record" if
- the format specifies more characters than the
- record contains. */
-/* 17 Jan. 1992: lread.c, rsne.c: in list and namelist input,
- treat "r* ," and "r*," alike (where r is a
- positive integer constant), and fix a bug in
- handling null values following items with repeat
- counts (e.g., 2*1,,3); for namelist reading
- of a numeric array, allow a new name-value subsequence
- to terminate the current one (as though the current
- one ended with the right number of null values).
- lio.h, lwrite.c: omit insignificant zeros in
- list and namelist output. To get the old
- behavior, compile with -DOld_list_output . */
-/* 18 Jan. 1992: make list output consistent with F format by
- printing .1 rather than 0.1 (introduced yesterday). */
-/* 3 Feb. 1992: rsne.c: fix namelist read bug that caused the
- character following a comma to be ignored. */
-/* 19 May 1992: adjust iio.c, ilnw.c, rdfmt.c and rsli.c to make err=
- work with internal list and formatted I/O. */
-/* 18 July 1992: adjust rsne.c to allow namelist input to stop at
- an & (e.g. &end). */
-/* 23 July 1992: switch to ANSI prototypes unless KR_headers is #defined ;
- recognize Z format (assuming 8-bit bytes). */
-/* 14 Aug. 1992: tweak wrt_E in wref.c to avoid -NaN */
-/* 23 Oct. 1992: Supply missing l_eof = 0 assignment to s_rsne() in rsne.c
- (so end-of-file on other files won't confuse namelist
- reads of external files). Prepend f__ to external
- names that are only of internal interest to lib[FI]77. */
-/* 1 Feb. 1993: backspace.c: fix bug that bit when last char of 2nd
- buffer == '\n'.
- endfile.c: guard against tiny L_tmpnam; close and reopen
- files in t_runc().
- lio.h: lengthen LINTW (buffer size in lwrite.c).
- err.c, open.c: more prepending of f__ (to [rw]_mode). */
-/* 5 Feb. 1993: tweaks to NAMELIST: rsne.c: ? prints the namelist being
- sought; namelists of the wrong name are skipped (after
- an error message; xwsne.c: namelist writes have a
- newline before each new variable.
- open.c: ACCESS='APPEND' positions sequential files
- at EOF (nonstandard extension -- that doesn't require
- changing data structures). */
-/* 9 Feb. 1993: Change some #ifdef MSDOS lines to #ifdef NON_UNIX_STDIO.
- err.c: under NON_UNIX_STDIO, avoid close(creat(name,0666))
- when the unit has another file descriptor for name. */
-/* 4 March 1993: err.c, open.c: take declaration of fdopen from rawio.h;
- open.c: always give f__w_mode[] 4 elements for use
- in t_runc (in endfile.c -- for change of 1 Feb. 1993). */
-/* 6 March 1993: uio.c: adjust off-end-of-record test for sequential
- unformatted reads to respond to err= rather than end=. */
-/* 12 March 1993: various tweaks for C++ */
-/* 6 April 1993: adjust error returns for formatted inputs to flush
- the current input line when err=label is specified.
- To restore the old behavior (input left mid-line),
- either adjust the #definition of errfl in fio.h or
- omit the invocation of f__doend in err__fl (in err.c). */
-/* 23 June 1993: iio.c: fix bug in format reversions for internal writes. */
-/* 5 Aug. 1993: lread.c: fix bug in handling repetition counts for
- logical data (during list or namelist input).
- Change struct f__syl to struct syl (for buggy compilers). */
-/* 7 Aug. 1993: lread.c: fix bug in namelist reading of incomplete
- logical arrays. */
-/* 9 Aug. 1993: lread.c: fix bug in namelist reading of an incomplete
- array of numeric data followed by another namelist
- item whose name starts with 'd', 'D', 'e', or 'E'. */
-/* 8 Sept. 1993: open.c: protect #include "sys/..." with
- #ifndef NON_UNIX_STDIO; Version date not changed. */
-/* 10 Nov. 1993: backspace.c: add nonsense for #ifdef MSDOS */
-/* 8 Dec. 1993: iio.c: adjust internal formatted reads to treat
- short records as though padded with blanks
- (rather than causing an "off end of record" error). */
-/* 22 Feb. 1994: lread.c: check that realloc did not return NULL. */
-/* 6 June 1994: Under NON_UNIX_STDIO, use binary mode for direct
- formatted files (avoiding any confusion regarding \n). */
-/* 5 July 1994: Fix bug (introduced 6 June 1994?) in reopening files
- under NON_UNIX_STDIO. */
-/* 6 July 1994: wref.c: protect with #ifdef GOOD_SPRINTF_EXPONENT an
- optimization that requires exponents to have 2 digits
- when 2 digits suffice.
- lwrite.c wsfe.c (list and formatted external output):
- omit ' ' carriage-control when compiled with
- -DOMIT_BLANK_CC . Off-by-one bug fixed in character
- count for list output of character strings.
- Omit '.' in list-directed printing of Nan, Infinity. */
-/* 12 July 1994: wrtfmt.c: under G11.4, write 0. as " .0000 " rather
- than " .0000E+00". */
-/* 3 Aug. 1994: lwrite.c: do not insert a newline when appending an
- oversize item to an empty line. */
-/* 12 Aug. 1994: rsli.c rsne.c: fix glitch (reset nml_read) that kept
- ERR= (in list- or format-directed input) from working
- after a NAMELIST READ. */
-/* 7 Sept. 1994: typesize.c: adjust to allow types LOGICAL*1, LOGICAL*2,
- INTEGER*1, and (under -DAllow_TYQUAD) INTEGER*8
- in NAMELISTs. */
-/* 6 Oct. 1994: util.c: omit f__mvgbt, as it is never used. */
-/* 2 Nov. 1994: add #ifdef ALWAYS_FLUSH logic. */
-/* 26 Jan. 1995: wref.c: fix glitch in printing the exponent of 0 when
- GOOD_SPRINTF_EXPONENT is not #defined. */
-/* 24 Feb. 1995: iio.c: z_getc: insert (unsigned char *) to allow
- internal reading of characters with high-bit set
- (on machines that sign-extend characters). */
-/* 14 March 1995:lread.c and rsfe.c: adjust s_rsle and s_rsfe to
- check for end-of-file (to prevent infinite loops
- with empty read statements). */
-/* 26 May 1995: iio.c: z_wnew: fix bug in handling T format items
- in internal writes whose last item is written to
- an earlier position than some previous item. */
-/* 29 Aug. 1995: backspace.c: adjust MSDOS logic. */
-/* 6 Sept. 1995: Adjust namelist input to treat a subscripted name
- whose subscripts do not involve colons similarly
- to the name without a subscript: accept several
- values, stored in successive elements starting at
- the indicated subscript. Adjust namelist output
- to quote character strings (avoiding confusion with
- arrays of character strings). Adjust f_init calls
- for people who don't use libF77's main(); now open and
- namelist read statements invoke f_init if needed. */
-/* 7 Sept. 1995: Fix some bugs with -DAllow_TYQUAD (for integer*8).
- Add -DNo_Namelist_Comments lines to rsne.c. */
-/* 5 Oct. 1995: wrtfmt.c: fix bug with t editing (f__cursor was not
- always zeroed in mv_cur). */
-/* 11 Oct. 1995: move defs of f__hiwater, f__svic, f__icptr from wrtfmt.c
- to err.c */
-/* 15 Mar. 1996: lread.c, rsfe.c: honor END= in READ stmt with empty iolist */
-
-/* 13 May 1996: add ftell_.c and fseek_.c */
-/* 9 June 1996: Adjust rsli.c and lread.c so internal list input with
- too few items in the input string will honor end= . */
-/* 12 Sept. 1995:fmtlib.c: fix glitch in printing the most negative integer. */
-/* 25 Sept. 1995:fmt.h: for formatted writes of negative integer*1 values,
- make ic signed on ANSI systems. If formatted writes of
- integer*1 values trouble you when using a K&R C compiler,
- switch to an ANSI compiler or use a compiler flag that
- makes characters signed. */
-/* 9 Dec. 1996: d[fu]e.c, err.c: complain about non-positive rec=
- in direct read and write statements.
- ftell_.c: change param "unit" to "Unit" for -DKR_headers. */
-/* 26 Feb. 1997: ftell_.c: on systems that define SEEK_SET, etc., use
- SEEK_SET, SEEK_CUR, SEEK_END for *whence = 0, 1, 2. */
-/* 7 Apr. 1997: fmt.c: adjust to complain at missing numbers in formats
- (but still treat missing ".nnn" as ".0"). */
-/* 11 Apr. 1997: err.c: attempt to make stderr line buffered rather
- than fully buffered. (Buffering is needed for format
- items T and TR.) */
-/* 27 May 1997: ftell_.c: fix typo (that caused the third argument to be
- treated as 2 on some systems). */
-/* 5 Aug. 1997: lread.c: adjust to accord with a change to the Fortran 8X
- draft (in 1990 or 1991) that rescinded permission to elide
- quote marks in namelist input of character data; compile
- with -DF8X_NML_ELIDE_QUOTES to get the old behavior.
- wrtfmt.o: wrt_G: tweak to print the right number of 0's
- for zero under G format. */
-/* 16 Aug. 1997: iio.c: fix bug in internal writes to an array of character
- strings that sometimes caused one more array element than
- required by the format to be blank-filled. Example:
- format(1x). */
-/* 16 Sept. 1997:fmt.[ch] rdfmt.c wrtfmt.c: tweak struct syl for machines
- with 64-bit pointers and 32-bit ints that did not 64-bit
- align struct syl (e.g., Linux on the DEC Alpha). */
-/* 19 Jan. 1998: backspace.c: for b->ufmt==0, change sizeof(int) to
- sizeof(uiolen). On machines where this would make a
- difference, it is best for portability to compile libI77 with
- -DUIOLEN_int (which will render the change invisible). */
-/* 4 March 1998: open.c: fix glitch in comparing file names under
- -DNON_UNIX_STDIO */
-/* 17 March 1998: endfile.c, open.c: acquire temporary files from tmpfile(),
- unless compiled with -DNON_ANSI_STDIO, which uses mktemp().
- New buffering scheme independent of NON_UNIX_STDIO for
- handling T format items. Now -DNON_UNIX_STDIO is no
- longer be necessary for Linux, and libf2c no longer
- causes stderr to be buffered -- the former setbuf or
- setvbuf call for stderr was to make T format items work.
- open.c: use the Posix access() function to check existence
- or nonexistence of files, except under -DNON_POSIX_STDIO,
- where trial fopen calls are used. */
-/* 5 April 1998: wsfe.c: make $ format item work: this was lost in the
- changes of 17 March 1998. */
-/* 28 May 1998: backspace.c dfe.c due.c iio.c lread.c rsfe.c sue.c wsfe.c:
- set f__curunit sooner so various error messages will
- correctly identify the I/O unit involved. */
-/* 17 June 1998: lread.c: unless compiled with
- ALLOW_FLOAT_IN_INTEGER_LIST_INPUT #defined, treat
- floating-point numbers (containing either a decimal point
- or an exponent field) as errors when they appear as list
- input for integer data. */
-/* 7 Sept. 1998: move e_wdfe from sfe.c to dfe.c, where it was originally.
- Why did it ever move to sfe.c? */
-/* 2 May 1999: open.c: set f__external (to get "external" versus "internal"
- right in the error message if we cannot open the file).
- err.c: cast a pointer difference to (int) for %d.
- rdfmt.c: omit fixed-length buffer that could be overwritten
- by formats Inn or Lnn with nn > 83. */
-/* 3 May 1999: open.c: insert two casts for machines with 64-bit longs. */
-/* 18 June 1999: backspace.c: allow for b->ufd changing in t_runc */
-/* 27 June 1999: rsne.c: fix bug in namelist input: a misplaced increment */
-/* could cause wrong array elements to be assigned; e.g., */
-/* "&input k(5)=10*1 &end" assigned k(5) and k(15..23) */
-/* 15 Nov. 1999: endfile.c: set state to writing (b->uwrt = 1) when an */
-/* endfile statement requires copying the file. */
-/* (Otherwise an immediately following rewind statement */
-/* could make the file appear empty.) Also, supply a */
-/* missing (long) cast in the sprintf call. */
-/* sfe.c: add #ifdef ALWAYS_FLUSH logic, for formatted I/O: */
-/* Compiling libf2c with -DALWAYS_FLUSH should prevent losing */
-/* any data in buffers should the program fault. It also */
-/* makes the program run more slowly. */
-/* 20 April 2000: rsne.c, xwsne.c: tweaks that only matter if ftnint and */
-/* ftnlen are of different fundamental types (different numbers */
-/* of bits). Since these files will not compile when this */
-/* change matters, the above VERSION string remains unchanged. */
-/* 4 July 2000: adjustments to permit compilation by C++ compilers; */
-/* VERSION string remains unchanged. NOT APPLIED FOR G77 */
-/* 5 Dec. 2000: lread.c: under namelist input, when reading a logical array, */
-/* treat Tstuff= and Fstuff= as new assignments rather than as */
-/* logical constants. */
-
-/* Changes for GNU Fortran (g77) version of libf2c: */
-
-/* 17 June 1997: detect recursive I/O and call f__fatal explaining it. */
diff --git a/libf2c/libI77/backspace.c b/libf2c/libI77/backspace.c
deleted file mode 100644
index c31e71147b5..00000000000
--- a/libf2c/libI77/backspace.c
+++ /dev/null
@@ -1,81 +0,0 @@
-#include "config.h"
-#include <sys/types.h>
-#include "f2c.h"
-#include "fio.h"
-integer
-f_back (alist * a)
-{
- unit *b;
- off_t v, w, x, y, z;
- uiolen n;
- FILE *f;
-
- f__curunit = b = &f__units[a->aunit]; /* curunit for error messages */
- if (f__init & 2)
- f__fatal (131, "I/O recursion");
- if (a->aunit >= MXUNIT || a->aunit < 0)
- err (a->aerr, 101, "backspace");
- if (b->useek == 0)
- err (a->aerr, 106, "backspace");
- if (b->ufd == NULL)
- {
- fk_open (1, 1, a->aunit);
- return (0);
- }
- if (b->uend == 1)
- {
- b->uend = 0;
- return (0);
- }
- if (b->uwrt)
- {
- t_runc (a);
- if (f__nowreading (b))
- err (a->aerr, errno, "backspace");
- }
- f = b->ufd; /* may have changed in t_runc() */
- if (b->url > 0)
- {
- x = FTELL (f);
- y = x % b->url;
- if (y == 0)
- x--;
- x /= b->url;
- x *= b->url;
- FSEEK (f, x, SEEK_SET);
- return (0);
- }
-
- if (b->ufmt == 0)
- {
- FSEEK (f, -(off_t) sizeof (uiolen), SEEK_CUR);
- fread ((char *) &n, sizeof (uiolen), 1, f);
- FSEEK (f, -(off_t) n - 2 * sizeof (uiolen), SEEK_CUR);
- return (0);
- }
- w = x = FTELL (f);
- z = 0;
-loop:
- while (x)
- {
- x -= x < 64 ? x : 64;
- FSEEK (f, x, SEEK_SET);
- for (y = x; y < w; y++)
- {
- if (getc (f) != '\n')
- continue;
- v = FTELL (f);
- if (v == w)
- {
- if (z)
- goto break2;
- goto loop;
- }
- z = v;
- }
- err (a->aerr, (EOF), "backspace");
- }
-break2:
- FSEEK (f, z, SEEK_SET);
- return 0;
-}
diff --git a/libf2c/libI77/close.c b/libf2c/libI77/close.c
deleted file mode 100644
index 769c569f8c5..00000000000
--- a/libf2c/libI77/close.c
+++ /dev/null
@@ -1,101 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-
-#undef abs
-#undef min
-#undef max
-#include <stdlib.h>
-#ifdef NON_UNIX_STDIO
-#ifndef unlink
-#define unlink remove
-#endif
-#else
-#if defined (MSDOS) && !defined (GO32)
-#include "io.h"
-#else
-extern int unlink (const char *);
-#endif
-#endif
-
-integer
-f_clos (cllist * a)
-{
- unit *b;
-
- if (f__init & 2)
- f__fatal (131, "I/O recursion");
- if (a->cunit >= MXUNIT)
- return (0);
- b = &f__units[a->cunit];
- if (b->ufd == NULL)
- goto done;
- if (b->uscrtch == 1)
- goto Delete;
- if (!a->csta)
- goto Keep;
- switch (*a->csta)
- {
- default:
- Keep:
- case 'k':
- case 'K':
- if (b->uwrt == 1)
- t_runc ((alist *) a);
- if (b->ufnm)
- {
- fclose (b->ufd);
- free (b->ufnm);
- }
- break;
- case 'd':
- case 'D':
- Delete:
- fclose (b->ufd);
- if (b->ufnm)
- {
- unlink (b->ufnm);
- /*SYSDEP*/ free (b->ufnm);
- }
- }
- b->ufd = NULL;
-done:
- b->uend = 0;
- b->ufnm = NULL;
- return (0);
-}
-
-void
-f_exit (void)
-{
- int i;
- static cllist xx;
- if (!(f__init & 1))
- return; /* Not initialized, so no open units. */
- /* I/O no longer in progress. If, during an I/O operation (such
- as waiting for the user to enter a line), there is an
- interrupt (such as ^C to stop the program on a UNIX system),
- f_exit() is called, but there is no longer any I/O in
- progress. Without turning off this flag, f_clos() would
- think that there is an I/O recursion in this circumstance. */
- f__init &= ~2;
- if (!xx.cerr)
- {
- xx.cerr = 1;
- xx.csta = NULL;
- for (i = 0; i < MXUNIT; i++)
- {
- xx.cunit = i;
- (void) f_clos (&xx);
- }
- }
-}
-int
-G77_flush_0 (void)
-{
- int i;
- for (i = 0; i < MXUNIT; i++)
- if (f__units[i].ufd != NULL && f__units[i].uwrt)
- fflush (f__units[i].ufd);
- return 0;
-}
diff --git a/libf2c/libI77/configure.in b/libf2c/libI77/configure.in
deleted file mode 100644
index 71a34d42eda..00000000000
--- a/libf2c/libI77/configure.in
+++ /dev/null
@@ -1,222 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-# Copyright (C) 1995, 1997, 1998, 2001, 2002 Free Software Foundation, Inc.
-# Contributed by Dave Love (d.love@dl.ac.uk).
-#
-#This file is part of GNU Fortran.
-#
-#GNU Fortran 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 Fortran 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 Fortran; see the file COPYING. If not, write to
-#the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-#02111-1307, USA.
-
-AC_PREREQ(2.13)
-AC_INIT(ftell_.c)
-AC_CONFIG_HEADER(config.h)
-
-dnl FIXME AC_PROG_CC wants CC to be able to link things, but it may
-dnl not be able to.
-define([AC_PROG_CC_WORKS],[])
-
-# For g77 we'll set CC to point at the built gcc, but this will get it into
-# the makefiles
-AC_PROG_CC
-
-# These defines are necessary to get 64-bit file size support.
-# NetBSD 1.4 header files does not support XOPEN_SOURCE == 600, but it
-# handles 64-bit file sizes without needing these defines.
-AC_MSG_CHECKING(whether _XOPEN_SOURCE may be defined)
-AC_TRY_COMPILE([#define _XOPEN_SOURCE 600L
-#include <unistd.h>],,
-may_use_xopen_source=yes,
-may_use_xopen_source=no)
-AC_MSG_RESULT($may_use_xopen_source)
-if test $may_use_xopen_source = yes; then
- AC_DEFINE(_XOPEN_SOURCE, 600L, [Get Single Unix Specification semantics])
- # The following is needed by irix6.2 so that struct timeval is declared.
- AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Get Single Unix Specification semantics])
- # The following is needed by Solaris2.5.1 so that struct timeval is declared.
- AC_DEFINE(__EXTENSIONS__, 1, [Solaris extensions])
- AC_DEFINE(_FILE_OFFSET_BITS, 64, [Get 64-bit file size support])
- AC_DEFINE(_LARGEFILE_SOURCE, 1, [Define for HP-UX ftello and fseeko extension.])
-fi
-
-dnl Checks for programs.
-
-LIBTOOL='$(SHELL) ../libtool'
-AC_SUBST(LIBTOOL)
-
-test "$AR" || AR=ar
-AC_SUBST(AR)
-AC_PROG_MAKE_SET
-
-dnl Checks for libraries.
-
-dnl Checks for header files.
-# Sanity check for the cross-compilation case:
-AC_CHECK_HEADER(stdio.h,:,
- [AC_MSG_ERROR([Can't find stdio.h.
-You must have a usable C system for the target already installed, at least
-including headers and, preferably, the library, before you can configure
-the G77 runtime system. If necessary, install gcc now with \`LANGUAGES=c',
-then the target library, then build with \`LANGUAGES=f77'.])])
-
-AC_HEADER_STDC
-AC_MSG_CHECKING(for posix)
-AC_CACHE_VAL(g77_cv_header_posix,
- AC_EGREP_CPP(yes,
- [#include <sys/types.h>
-#include <unistd.h>
-#ifdef _POSIX_VERSION
- yes
-#endif
-],
- g77_cv_header_posix=yes,
- g77_cv_header_posix=no))
-AC_MSG_RESULT($g77_cv_header_posix)
-
-# We can rely on the GNU library being posix-ish. I guess checking the
-# header isn't actually like checking the functions, though...
-AC_MSG_CHECKING(for GNU library)
-AC_CACHE_VAL(g77_cv_lib_gnu,
- AC_EGREP_CPP(yes,
- [#include <stdio.h>
-#ifdef __GNU_LIBRARY__
- yes
-#endif
-],
- g77_cv_lib_gnu=yes, g77_cv_lib_gnu=no))
-AC_MSG_RESULT($g77_cv_lib_gnu)
-
-# Apparently cygwin needs to be special-cased.
-AC_MSG_CHECKING([for cyg\`win'32])
-AC_CACHE_VAL(g77_cv_sys_cygwin32,
- AC_EGREP_CPP(yes,
- [#ifdef __CYGWIN32__
- yes
-#endif
-],
- g77_cv_sys_cygwin32=yes,
- g77_cv_sys_cygwin32=no))
-AC_MSG_RESULT($g77_cv_sys_cygwin32)
-
-# ditto for mingw32.
-AC_MSG_CHECKING([for mingw32])
-AC_CACHE_VAL(g77_cv_sys_mingw32,
- AC_EGREP_CPP(yes,
- [#ifdef __MINGW32__
- yes
-#endif
-],
- g77_cv_sys_mingw32=yes,
- g77_cv_sys_mingw32=no))
-AC_MSG_RESULT($g77_cv_sys_mingw32)
-
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_TYPE_SIZE_T
-
-dnl Checks for library functions.
-
-# This should always succeed on unix.
-# Apparently positive result on cygwin loses re. NON_UNIX_STDIO
-# (as of cygwin b18). Likewise on mingw.
-AC_CHECK_FUNC(fstat)
-AC_MSG_CHECKING([need for NON_UNIX_STDIO])
-if test $g77_cv_sys_cygwin32 = yes \
- || test $g77_cv_sys_mingw32 = yes \
- || test $ac_cv_func_fstat = no; then
- AC_MSG_RESULT(yes)
- AC_DEFINE(NON_UNIX_STDIO, 1, [Define if we do not have Unix Stdio.])
-else
- AC_MSG_RESULT(no)
-fi
-
-AC_CHECK_FUNCS(fseeko)
-AC_CHECK_FUNCS(ftello)
-AC_CHECK_FUNCS(ftruncate)
-AC_CHECK_FUNCS(mkstemp)
-AC_CHECK_FUNCS(tempnam)
-AC_CHECK_FUNCS(tmpnam)
-
-# posix will guarantee the right behaviour for sprintf, else we can't be
-# sure; HEADER_STDC wouldn't be the right check in sunos4, for instance.
-# However, on my sunos4/gcc setup unistd.h leads us wrongly to believe
-# we're posix-conformant, so always do the test.
-AC_MSG_CHECKING(for ansi/posix sprintf result)
-dnl This loses if included as an argument to AC_CACHE_VAL because the
-dnl changequote doesn't take effect and the [] vanish.
-dnl fixme: use cached value
-AC_TRY_RUN(changequote(<<, >>)dnl
- <<#include <stdio.h>
- /* does sprintf return the number of chars transferred? */
- main () {char foo[2]; (sprintf(foo, "1") == 1) ? exit(0) : exit(1);}
->>changequote([, ]),
- g77_cv_sys_sprintf_ansi=yes,
- g77_cv_sys_sprintf_ansi=no,
- g77_cv_sys_sprintf_ansi=no)
-AC_CACHE_VAL(g77_cv_sys_sprintf_ansi,
- g77_cv_sys_sprintf_ansi=$g77_cv_sys_sprintf_ansi)
-dnl We get a misleading `(cached)' message...
-AC_MSG_RESULT($g77_cv_sys_sprintf_ansi)
-
-# The cygwin patch takes steps to avoid defining USE_STRLEN here -- I don't
-# understand why.
-if test $g77_cv_sys_sprintf_ansi != yes; then
- AC_DEFINE(USE_STRLEN, 1, [Define if we use strlen.])
-fi
-
-# define NON_ANSI_RW_MODES on unix (can't hurt)
-AC_MSG_CHECKING(NON_ANSI_RW_MODES)
-AC_EGREP_CPP(yes,
-[#ifdef unix
- yes
-#endif
-#ifdef __unix
- yes
-#endif
-#ifdef __unix__
- yes
-#endif
-], is_unix=yes, is_unix=no)
-# NON_ANSI_RW_MODES shouldn't be necessary on cygwin for binary mounts.
-if test $g77_cv_sys_cygwin32 = yes || test $g77_cv_sys_mingw32 = yes; then
- AC_MSG_RESULT(no)
-else
- if test $is_unix = yes; then
- AC_DEFINE(NON_ANSI_RW_MODES, 1, [Define if we have non ANSI RW modes.])
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
-fi
-
-# This EOF_CHAR is a misfeature on unix.
-AC_DEFINE(NO_EOF_CHAR_CHECK, 1, [Always defined.])
-
-AC_TYPE_OFF_T
-
-AC_DEFINE(Skip_f2c_Undefs, 1, [Define to skip f2c undefs.])
-
-AC_OUTPUT(Makefile)
-
-dnl We might have configuration options to:
-dnl * change unit preconnexion in err.c (f_init.c)
-dnl * -DALWAYS_FLUSH
-dnl * -DOMIT_BLANK_CC
-
-dnl Local Variables:
-dnl comment-start: "dnl "
-dnl comment-end: ""
-dnl comment-start-skip: "\\bdnl\\b\\s *"
-dnl End:
diff --git a/libf2c/libI77/dfe.c b/libf2c/libI77/dfe.c
deleted file mode 100644
index 5ce0b4cd661..00000000000
--- a/libf2c/libI77/dfe.c
+++ /dev/null
@@ -1,156 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-#include "fmt.h"
-
-int
-y_rsk (void)
-{
- if (f__curunit->uend || f__curunit->url <= f__recpos
- || f__curunit->url == 1)
- return 0;
- do
- {
- getc (f__cf);
- }
- while (++f__recpos < f__curunit->url);
- return 0;
-}
-
-int
-y_getc (void)
-{
- int ch;
- if (f__curunit->uend)
- return (-1);
- if ((ch = getc (f__cf)) != EOF)
- {
- f__recpos++;
- if (f__curunit->url >= f__recpos || f__curunit->url == 1)
- return (ch);
- else
- return (' ');
- }
- if (feof (f__cf))
- {
- f__curunit->uend = 1;
- errno = 0;
- return (-1);
- }
- err (f__elist->cierr, errno, "readingd");
-}
-
-static int
-y_rev (void)
-{
- if (f__recpos < f__hiwater)
- f__recpos = f__hiwater;
- if (f__curunit->url > 1)
- while (f__recpos < f__curunit->url)
- (*f__putn) (' ');
- if (f__recpos)
- f__putbuf (0);
- f__recpos = 0;
- return (0);
-}
-
-static int
-y_err (void)
-{
- err (f__elist->cierr, 110, "dfe");
-}
-
-static int
-y_newrec (void)
-{
- y_rev ();
- f__hiwater = f__cursor = 0;
- return (1);
-}
-
-int
-c_dfe (cilist * a)
-{
- f__sequential = 0;
- f__formatted = f__external = 1;
- f__elist = a;
- f__cursor = f__scale = f__recpos = 0;
- f__curunit = &f__units[a->ciunit];
- if (a->ciunit > MXUNIT || a->ciunit < 0)
- err (a->cierr, 101, "startchk");
- if (f__curunit->ufd == NULL && fk_open (DIR, FMT, a->ciunit))
- err (a->cierr, 104, "dfe");
- f__cf = f__curunit->ufd;
- if (!f__curunit->ufmt)
- err (a->cierr, 102, "dfe");
- if (!f__curunit->useek)
- err (a->cierr, 104, "dfe");
- f__fmtbuf = a->cifmt;
- if (a->cirec <= 0)
- err (a->cierr, 130, "dfe");
- FSEEK (f__cf, (off_t) f__curunit->url * (a->cirec - 1), SEEK_SET);
- f__curunit->uend = 0;
- return (0);
-}
-
-integer
-s_rdfe (cilist * a)
-{
- int n;
- if (f__init != 1)
- f_init ();
- f__init = 3;
- f__reading = 1;
- if ((n = c_dfe (a)))
- return (n);
- if (f__curunit->uwrt && f__nowreading (f__curunit))
- err (a->cierr, errno, "read start");
- f__getn = y_getc;
- f__doed = rd_ed;
- f__doned = rd_ned;
- f__dorevert = f__donewrec = y_err;
- f__doend = y_rsk;
- if (pars_f (f__fmtbuf) < 0)
- err (a->cierr, 100, "read start");
- fmt_bg ();
- return (0);
-}
-
-integer
-s_wdfe (cilist * a)
-{
- int n;
- if (f__init != 1)
- f_init ();
- f__init = 3;
- f__reading = 0;
- if ((n = c_dfe (a)))
- return (n);
- if (f__curunit->uwrt != 1 && f__nowwriting (f__curunit))
- err (a->cierr, errno, "startwrt");
- f__putn = x_putc;
- f__doed = w_ed;
- f__doned = w_ned;
- f__dorevert = y_err;
- f__donewrec = y_newrec;
- f__doend = y_rev;
- if (pars_f (f__fmtbuf) < 0)
- err (a->cierr, 100, "startwrt");
- fmt_bg ();
- return (0);
-}
-
-integer
-e_rdfe (void)
-{
- f__init = 1;
- en_fio ();
- return (0);
-}
-
-integer
-e_wdfe (void)
-{
- f__init = 1;
- return en_fio ();
-}
diff --git a/libf2c/libI77/dolio.c b/libf2c/libI77/dolio.c
deleted file mode 100644
index e50e9005317..00000000000
--- a/libf2c/libI77/dolio.c
+++ /dev/null
@@ -1,10 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-
-extern int (*f__lioproc) (ftnint *, char *, ftnlen, ftnint);
-
-integer
-do_lio (ftnint * type, ftnint * number, char *ptr, ftnlen len)
-{
- return ((*f__lioproc) (number, ptr, len, *type));
-}
diff --git a/libf2c/libI77/due.c b/libf2c/libI77/due.c
deleted file mode 100644
index 7c6a801e0f9..00000000000
--- a/libf2c/libI77/due.c
+++ /dev/null
@@ -1,80 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-
-int
-c_due (cilist * a)
-{
- if (f__init != 1)
- f_init ();
- f__init = 3;
- if (a->ciunit >= MXUNIT || a->ciunit < 0)
- err (a->cierr, 101, "startio");
- f__sequential = f__formatted = f__recpos = 0;
- f__external = 1;
- f__curunit = &f__units[a->ciunit];
- if (a->ciunit >= MXUNIT || a->ciunit < 0)
- err (a->cierr, 101, "startio");
- f__elist = a;
- if (f__curunit->ufd == NULL && fk_open (DIR, UNF, a->ciunit))
- err (a->cierr, 104, "due");
- f__cf = f__curunit->ufd;
- if (f__curunit->ufmt)
- err (a->cierr, 102, "cdue");
- if (!f__curunit->useek)
- err (a->cierr, 104, "cdue");
- if (f__curunit->ufd == NULL)
- err (a->cierr, 114, "cdue");
- if (a->cirec <= 0)
- err (a->cierr, 130, "due");
- FSEEK (f__cf, (off_t) (a->cirec - 1) * f__curunit->url, SEEK_SET);
- f__curunit->uend = 0;
- return (0);
-}
-
-integer
-s_rdue (cilist * a)
-{
- int n;
- f__reading = 1;
- if ((n = c_due (a)))
- return (n);
- if (f__curunit->uwrt && f__nowreading (f__curunit))
- err (a->cierr, errno, "read start");
- return (0);
-}
-
-integer
-s_wdue (cilist * a)
-{
- int n;
- f__reading = 0;
- if ((n = c_due (a)))
- return (n);
- if (f__curunit->uwrt != 1 && f__nowwriting (f__curunit))
- err (a->cierr, errno, "write start");
- return (0);
-}
-
-integer
-e_rdue (void)
-{
- f__init = 1;
- if (f__curunit->url == 1 || f__recpos == f__curunit->url)
- return (0);
- FSEEK (f__cf, (off_t) (f__curunit->url - f__recpos), SEEK_CUR);
- if (FTELL (f__cf) % f__curunit->url)
- err (f__elist->cierr, 200, "syserr");
- return (0);
-}
-
-integer
-e_wdue (void)
-{
- f__init = 1;
-#ifdef ALWAYS_FLUSH
- if (fflush (f__cf))
- err (f__elist->cierr, errno, "write end");
-#endif
- return (e_rdue ());
-}
diff --git a/libf2c/libI77/endfile.c b/libf2c/libI77/endfile.c
deleted file mode 100644
index 513f2107ef7..00000000000
--- a/libf2c/libI77/endfile.c
+++ /dev/null
@@ -1,130 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-
-#include <sys/types.h>
-#include <unistd.h>
-
-#undef abs
-#undef min
-#undef max
-#include <stdlib.h>
-#include <string.h>
-
-extern char *f__r_mode[], *f__w_mode[];
-
-integer
-f_end (alist * a)
-{
- unit *b;
- FILE *tf;
-
- if (f__init & 2)
- f__fatal (131, "I/O recursion");
- if (a->aunit >= MXUNIT || a->aunit < 0)
- err (a->aerr, 101, "endfile");
- b = &f__units[a->aunit];
- if (b->ufd == NULL)
- {
- char nbuf[10];
- sprintf (nbuf, "fort.%ld", (long) a->aunit);
- if ((tf = fopen (nbuf, f__w_mode[0])))
- fclose (tf);
- return (0);
- }
- b->uend = 1;
- return (b->useek ? t_runc (a) : 0);
-}
-
-#ifndef HAVE_FTRUNCATE
-static int
-copy (FILE * from, register long len, FILE * to)
-{
- int len1;
- char buf[BUFSIZ];
-
- while (fread (buf, len1 = len > BUFSIZ ? BUFSIZ : (int) len, 1, from))
- {
- if (!fwrite (buf, len1, 1, to))
- return 1;
- if ((len -= len1) <= 0)
- break;
- }
- return 0;
-}
-#endif /* !defined(HAVE_FTRUNCATE) */
-
-int
-t_runc (alist * a)
-{
- off_t loc, len;
- unit *b;
- int rc;
- FILE *bf;
-#ifndef HAVE_FTRUNCATE
- FILE *tf;
-#endif /* !defined(HAVE_FTRUNCATE) */
-
- b = &f__units[a->aunit];
- if (b->url)
- return (0); /*don't truncate direct files */
- loc = FTELL (bf = b->ufd);
- FSEEK (bf, 0, SEEK_END);
- len = FTELL (bf);
- if (loc >= len || b->useek == 0 || b->ufnm == NULL)
- return (0);
-#ifndef HAVE_FTRUNCATE
- rc = 0;
- fclose (b->ufd);
- if (!loc)
- {
- if (!(bf = fopen (b->ufnm, f__w_mode[b->ufmt])))
- rc = 1;
- if (b->uwrt)
- b->uwrt = 1;
- goto done;
- }
- if (!(bf = fopen (b->ufnm, f__r_mode[0])) || !(tf = tmpfile ()))
- {
-#ifdef NON_UNIX_STDIO
- bad:
-#endif
- rc = 1;
- goto done;
- }
- if (copy (bf, loc, tf))
- {
- bad1:
- rc = 1;
- goto done1;
- }
- if (!(bf = freopen (b->ufnm, f__w_mode[0], bf)))
- goto bad1;
- FSEEK (tf, 0, SEEK_SET);
- if (copy (tf, loc, bf))
- goto bad1;
- b->uwrt = 1;
- b->urw = 2;
-#ifdef NON_UNIX_STDIO
- if (b->ufmt)
- {
- fclose (bf);
- if (!(bf = fopen (b->ufnm, f__w_mode[3])))
- goto bad;
- FSEEK (bf, 0, SEEK_END);
- b->urw = 3;
- }
-#endif
-done1:
- fclose (tf);
-done:
- f__cf = b->ufd = bf;
-#else /* !defined(HAVE_FTRUNCATE) */
- fflush (b->ufd);
- rc = ftruncate (fileno (b->ufd), loc);
- FSEEK (bf, loc, SEEK_SET);
-#endif /* !defined(HAVE_FTRUNCATE) */
- if (rc)
- err (a->aerr, 111, "endfile");
- return 0;
-}
diff --git a/libf2c/libI77/err.c b/libf2c/libI77/err.c
deleted file mode 100644
index 1a204e820bc..00000000000
--- a/libf2c/libI77/err.c
+++ /dev/null
@@ -1,279 +0,0 @@
-#include "config.h"
-#ifndef NON_UNIX_STDIO
-#define _INCLUDE_POSIX_SOURCE /* for HP-UX */
-#define _INCLUDE_XOPEN_SOURCE /* for HP-UX */
-#include <sys/types.h>
-#include <sys/stat.h>
-#endif
-#include "f2c.h"
-#undef abs
-#undef min
-#undef max
-#include <stdlib.h>
-#include "fio.h"
-#include "fmt.h" /* for struct syl */
-
-/*global definitions*/
-unit f__units[MXUNIT]; /*unit table */
-int f__init; /*bit 0: set after initializations;
- bit 1: set during I/O involving returns to
- caller of library (or calls to user code) */
-cilist *f__elist; /*active external io list */
-icilist *f__svic; /*active internal io list */
-flag f__reading; /*1 if reading, 0 if writing */
-flag f__cplus, f__cblank;
-char *f__fmtbuf;
-int f__fmtlen;
-flag f__external; /*1 if external io, 0 if internal */
-int (*f__getn) (void); /* for formatted input */
-void (*f__putn) (int); /* for formatted output */
-int (*f__doed) (struct syl *, char *, ftnlen), (*f__doned) (struct syl *);
-int (*f__dorevert) (void), (*f__donewrec) (void), (*f__doend) (void);
-flag f__sequential; /*1 if sequential io, 0 if direct */
-flag f__formatted; /*1 if formatted io, 0 if unformatted */
-FILE *f__cf; /*current file */
-unit *f__curunit; /*current unit */
-int f__recpos; /*place in current record */
-int f__cursor, f__hiwater, f__scale;
-char *f__icptr;
-
-/*error messages*/
-char *F_err[] = {
- "error in format", /* 100 */
- "illegal unit number", /* 101 */
- "formatted io not allowed", /* 102 */
- "unformatted io not allowed", /* 103 */
- "direct io not allowed", /* 104 */
- "sequential io not allowed", /* 105 */
- "can't backspace file", /* 106 */
- "null file name", /* 107 */
- "can't stat file", /* 108 */
- "unit not connected", /* 109 */
- "off end of record", /* 110 */
- "truncation failed in endfile", /* 111 */
- "incomprehensible list input", /* 112 */
- "out of free space", /* 113 */
- "unit not connected", /* 114 */
- "read unexpected character", /* 115 */
- "bad logical input field", /* 116 */
- "bad variable type", /* 117 */
- "bad namelist name", /* 118 */
- "variable not in namelist", /* 119 */
- "no end record", /* 120 */
- "variable count incorrect", /* 121 */
- "subscript for scalar variable", /* 122 */
- "invalid array section", /* 123 */
- "substring out of bounds", /* 124 */
- "subscript out of bounds", /* 125 */
- "can't read file", /* 126 */
- "can't write file", /* 127 */
- "'new' file exists", /* 128 */
- "can't append to file", /* 129 */
- "non-positive record number", /* 130 */
- "I/O started while already doing I/O", /* 131 */
- "Temporary file name (TMPDIR?) too long" /* 132 */
-};
-#define MAXERR (sizeof(F_err)/sizeof(char *)+100)
-
-int
-f__canseek (FILE * f) /*SYSDEP*/
-{
-#ifdef NON_UNIX_STDIO
- return !isatty (fileno (f));
-#else
- struct stat x;
-
- if (fstat (fileno (f), &x) < 0)
- return (0);
-#ifdef S_IFMT
- switch (x.st_mode & S_IFMT)
- {
- case S_IFDIR:
- case S_IFREG:
- if (x.st_nlink > 0) /* !pipe */
- return (1);
- else
- return (0);
- case S_IFCHR:
- if (isatty (fileno (f)))
- return (0);
- return (1);
-#ifdef S_IFBLK
- case S_IFBLK:
- return (1);
-#endif
- }
-#else
-#ifdef S_ISDIR
- /* POSIX version */
- if (S_ISREG (x.st_mode) || S_ISDIR (x.st_mode))
- {
- if (x.st_nlink > 0) /* !pipe */
- return (1);
- else
- return (0);
- }
- if (S_ISCHR (x.st_mode))
- {
- if (isatty (fileno (f)))
- return (0);
- return (1);
- }
- if (S_ISBLK (x.st_mode))
- return (1);
-#else
- Help ! How does fstat work on this system ?
-#endif
-#endif
- return (0); /* who knows what it is? */
-#endif
-}
-
-void
-f__fatal (int n, char *s)
-{
- static int dead = 0;
-
- if (n < 100 && n >= 0)
- perror (s);
- /*SYSDEP*/
- else if (n >= (int) MAXERR || n < -1)
- {
- fprintf (stderr, "%s: illegal error number %d\n", s, n);
- }
- else if (n == -1)
- fprintf (stderr, "%s: end of file\n", s);
- else
- fprintf (stderr, "%s: %s\n", s, F_err[n - 100]);
- if (dead)
- {
- fprintf (stderr, "(libf2c f__fatal already called, aborting.)");
- abort ();
- }
- dead = 1;
- if (f__init & 1)
- {
- if (f__curunit)
- {
- fprintf (stderr, "apparent state: unit %d ",
- (int) (f__curunit - f__units));
- fprintf (stderr, f__curunit->ufnm ? "named %s\n" : "(unnamed)\n",
- f__curunit->ufnm);
- }
- else
- fprintf (stderr, "apparent state: internal I/O\n");
- if (f__fmtbuf)
- fprintf (stderr, "last format: %.*s\n", f__fmtlen, f__fmtbuf);
- fprintf (stderr, "lately %s %s %s %s",
- f__reading ? "reading" : "writing",
- f__sequential ? "sequential" : "direct",
- f__formatted ? "formatted" : "unformatted",
- f__external ? "external" : "internal");
- }
- f__init &= ~2; /* No longer doing I/O (no more user code to be called). */
- sig_die (" IO", 1);
-}
-
-/*initialization routine*/
-void
-f_init (void)
-{
- unit *p;
-
- if (f__init & 2)
- f__fatal (131, "I/O recursion");
- f__init = 1;
- p = &f__units[0];
- p->ufd = stderr;
- p->useek = f__canseek (stderr);
- p->ufmt = 1;
- p->uwrt = 1;
- p = &f__units[5];
- p->ufd = stdin;
- p->useek = f__canseek (stdin);
- p->ufmt = 1;
- p->uwrt = 0;
- p = &f__units[6];
- p->ufd = stdout;
- p->useek = f__canseek (stdout);
- p->ufmt = 1;
- p->uwrt = 1;
-}
-
-int
-f__nowreading (unit * x)
-{
- off_t loc;
- int ufmt, urw;
- extern char *f__r_mode[], *f__w_mode[];
-
- if (x->urw & 1)
- goto done;
- if (!x->ufnm)
- goto cantread;
- ufmt = x->url ? 0 : x->ufmt;
- loc = FTELL (x->ufd);
- urw = 3;
- if (!freopen (x->ufnm, f__w_mode[ufmt | 2], x->ufd))
- {
- urw = 1;
- if (!freopen (x->ufnm, f__r_mode[ufmt], x->ufd))
- {
- cantread:
- errno = 126;
- return 1;
- }
- }
- FSEEK (x->ufd, loc, SEEK_SET);
- x->urw = urw;
-done:
- x->uwrt = 0;
- return 0;
-}
-
-int
-f__nowwriting (unit * x)
-{
- off_t loc;
- int ufmt;
- extern char *f__w_mode[];
-
- if (x->urw & 2)
- goto done;
- if (!x->ufnm)
- goto cantwrite;
- ufmt = x->url ? 0 : x->ufmt;
- if (x->uwrt == 3)
- { /* just did write, rewind */
- if (!(f__cf = x->ufd = freopen (x->ufnm, f__w_mode[ufmt], x->ufd)))
- goto cantwrite;
- x->urw = 2;
- }
- else
- {
- loc = FTELL (x->ufd);
- if (!(f__cf = x->ufd = freopen (x->ufnm, f__w_mode[ufmt |= 2], x->ufd)))
- {
- x->ufd = NULL;
- cantwrite:
- errno = 127;
- return (1);
- }
- x->urw = 3;
- FSEEK (x->ufd, loc, SEEK_SET);
- }
-done:
- x->uwrt = 1;
- return 0;
-}
-
-int
-err__fl (int f, int m, char *s)
-{
- if (!f)
- f__fatal (m, s);
- if (f__doend)
- (*f__doend) ();
- f__init &= ~2;
- return errno = m;
-}
diff --git a/libf2c/libI77/f2ch.add b/libf2c/libI77/f2ch.add
deleted file mode 100644
index 04b13e8de5d..00000000000
--- a/libf2c/libI77/f2ch.add
+++ /dev/null
@@ -1,163 +0,0 @@
-/* If you are using a C++ compiler, append the following to f2c.h
- for compiling libF77 and libI77. */
-
-#ifdef __cplusplus
-extern "C"
-{
- extern int abort_ (void);
- extern double c_abs (complex *);
- extern void c_cos (complex *, complex *);
- extern void c_div (complex *, complex *, complex *);
- extern void c_exp (complex *, complex *);
- extern void c_log (complex *, complex *);
- extern void c_sin (complex *, complex *);
- extern void c_sqrt (complex *, complex *);
- extern double d_abs (double *);
- extern double d_acos (double *);
- extern double d_asin (double *);
- extern double d_atan (double *);
- extern double d_atn2 (double *, double *);
- extern void d_cnjg (doublecomplex *, doublecomplex *);
- extern double d_cos (double *);
- extern double d_cosh (double *);
- extern double d_dim (double *, double *);
- extern double d_exp (double *);
- extern double d_imag (doublecomplex *);
- extern double d_int (double *);
- extern double d_lg10 (double *);
- extern double d_log (double *);
- extern double d_mod (double *, double *);
- extern double d_nint (double *);
- extern double d_prod (float *, float *);
- extern double d_sign (double *, double *);
- extern double d_sin (double *);
- extern double d_sinh (double *);
- extern double d_sqrt (double *);
- extern double d_tan (double *);
- extern double d_tanh (double *);
- extern double derf_ (double *);
- extern double derfc_ (double *);
- extern integer do_fio (ftnint *, char *, ftnlen);
- extern integer do_lio (ftnint *, ftnint *, char *, ftnlen);
- extern integer do_uio (ftnint *, char *, ftnlen);
- extern integer e_rdfe (void);
- extern integer e_rdue (void);
- extern integer e_rsfe (void);
- extern integer e_rsfi (void);
- extern integer e_rsle (void);
- extern integer e_rsli (void);
- extern integer e_rsue (void);
- extern integer e_wdfe (void);
- extern integer e_wdue (void);
- extern integer e_wsfe (void);
- extern integer e_wsfi (void);
- extern integer e_wsle (void);
- extern integer e_wsli (void);
- extern integer e_wsue (void);
- extern int ef1asc_ (ftnint *, ftnlen *, ftnint *, ftnlen *);
- extern integer ef1cmc_ (ftnint *, ftnlen *, ftnint *, ftnlen *);
- extern double erf (double);
- extern double erf_ (float *);
- extern double erfc (double);
- extern double erfc_ (float *);
- extern integer f_back (alist *);
- extern integer f_clos (cllist *);
- extern integer f_end (alist *);
- extern void f_exit (void);
- extern integer f_inqu (inlist *);
- extern integer f_open (olist *);
- extern integer f_rew (alist *);
- extern int flush_ (void);
- extern void getarg_ (integer *, char *, ftnlen);
- extern void getenv_ (char *, char *, ftnlen, ftnlen);
- extern short h_abs (short *);
- extern short h_dim (short *, short *);
- extern short h_dnnt (double *);
- extern short h_indx (char *, char *, ftnlen, ftnlen);
- extern short h_len (char *, ftnlen);
- extern short h_mod (short *, short *);
- extern short h_nint (float *);
- extern short h_sign (short *, short *);
- extern short hl_ge (char *, char *, ftnlen, ftnlen);
- extern short hl_gt (char *, char *, ftnlen, ftnlen);
- extern short hl_le (char *, char *, ftnlen, ftnlen);
- extern short hl_lt (char *, char *, ftnlen, ftnlen);
- extern integer i_abs (integer *);
- extern integer i_dim (integer *, integer *);
- extern integer i_dnnt (double *);
- extern integer i_indx (char *, char *, ftnlen, ftnlen);
- extern integer i_len (char *, ftnlen);
- extern integer i_mod (integer *, integer *);
- extern integer i_nint (float *);
- extern integer i_sign (integer *, integer *);
- extern integer iargc_ (void);
- extern ftnlen l_ge (char *, char *, ftnlen, ftnlen);
- extern ftnlen l_gt (char *, char *, ftnlen, ftnlen);
- extern ftnlen l_le (char *, char *, ftnlen, ftnlen);
- extern ftnlen l_lt (char *, char *, ftnlen, ftnlen);
- extern void pow_ci (complex *, complex *, integer *);
- extern double pow_dd (double *, double *);
- extern double pow_di (double *, integer *);
- extern short pow_hh (short *, shortint *);
- extern integer pow_ii (integer *, integer *);
- extern double pow_ri (float *, integer *);
- extern void pow_zi (doublecomplex *, doublecomplex *, integer *);
- extern void pow_zz (doublecomplex *, doublecomplex *, doublecomplex *);
- extern double r_abs (float *);
- extern double r_acos (float *);
- extern double r_asin (float *);
- extern double r_atan (float *);
- extern double r_atn2 (float *, float *);
- extern void r_cnjg (complex *, complex *);
- extern double r_cos (float *);
- extern double r_cosh (float *);
- extern double r_dim (float *, float *);
- extern double r_exp (float *);
- extern double r_imag (complex *);
- extern double r_int (float *);
- extern double r_lg10 (float *);
- extern double r_log (float *);
- extern double r_mod (float *, float *);
- extern double r_nint (float *);
- extern double r_sign (float *, float *);
- extern double r_sin (float *);
- extern double r_sinh (float *);
- extern double r_sqrt (float *);
- extern double r_tan (float *);
- extern double r_tanh (float *);
- extern void s_cat (char *, char **, integer *, integer *, ftnlen);
- extern integer s_cmp (char *, char *, ftnlen, ftnlen);
- extern void s_copy (char *, char *, ftnlen, ftnlen);
- extern int s_paus (char *, ftnlen);
- extern integer s_rdfe (cilist *);
- extern integer s_rdue (cilist *);
- extern integer s_rnge (char *, integer, char *, integer);
- extern integer s_rsfe (cilist *);
- extern integer s_rsfi (icilist *);
- extern integer s_rsle (cilist *);
- extern integer s_rsli (icilist *);
- extern integer s_rsne (cilist *);
- extern integer s_rsni (icilist *);
- extern integer s_rsue (cilist *);
- extern int s_stop (char *, ftnlen);
- extern integer s_wdfe (cilist *);
- extern integer s_wdue (cilist *);
- extern integer s_wsfe (cilist *);
- extern integer s_wsfi (icilist *);
- extern integer s_wsle (cilist *);
- extern integer s_wsli (icilist *);
- extern integer s_wsne (cilist *);
- extern integer s_wsni (icilist *);
- extern integer s_wsue (cilist *);
- extern void sig_die (char *, int);
- extern integer signal_ (integer *, void (*)(int));
- extern integer system_ (char *, ftnlen);
- extern double z_abs (doublecomplex *);
- extern void z_cos (doublecomplex *, doublecomplex *);
- extern void z_div (doublecomplex *, doublecomplex *, doublecomplex *);
- extern void z_exp (doublecomplex *, doublecomplex *);
- extern void z_log (doublecomplex *, doublecomplex *);
- extern void z_sin (doublecomplex *, doublecomplex *);
- extern void z_sqrt (doublecomplex *, doublecomplex *);
-}
-#endif
diff --git a/libf2c/libI77/fio.h b/libf2c/libI77/fio.h
deleted file mode 100644
index 7734f0c2f2f..00000000000
--- a/libf2c/libI77/fio.h
+++ /dev/null
@@ -1,104 +0,0 @@
-#include <sys/types.h>
-#include <stdio.h>
-#include <errno.h>
-#ifndef NULL
-/* ANSI C */
-#include <stddef.h>
-#endif
-#ifdef STDC_HEADERS
-#include <string.h>
-#endif
-
-#ifndef SEEK_SET
-#define SEEK_SET 0
-#define SEEK_CUR 1
-#define SEEK_END 2
-#endif
-
-/* Only use fseeko/ftello if they are both there. */
-
-#if defined (HAVE_FSEEKO) && defined (HAVE_FTELLO)
-#define FSEEK fseeko
-#define FTELL ftello
-#else
-#define FSEEK fseek
-#define FTELL ftell
-#endif
-
-#if defined (MSDOS) && !defined (GO32)
-#ifndef NON_UNIX_STDIO
-#define NON_UNIX_STDIO
-#endif
-#endif
-
-#ifdef UIOLEN_int
-typedef int uiolen;
-#else
-typedef long uiolen;
-#endif
-
-/*units*/
-typedef struct
-{
- FILE *ufd; /*0=unconnected */
- char *ufnm;
-#if !(defined (MSDOS) && !defined (GO32))
- long uinode;
- int udev;
-#endif
- int url; /*0=sequential */
- flag useek; /*true=can backspace, use dir, ... */
- flag ufmt;
- flag urw; /* (1 for can read) | (2 for can write) */
- flag ublnk;
- flag uend;
- flag uwrt; /*last io was write */
- flag uscrtch;
-}
-unit;
-
-extern int f__init;
-extern cilist *f__elist; /*active external io list */
-extern flag f__reading, f__external, f__sequential, f__formatted;
-extern int (*f__getn) (void); /* for formatted input */
-extern void (*f__putn) (int); /* for formatted output */
-extern void x_putc (int);
-extern long f__inode (char *, int *);
-extern void sig_die (char *, int);
-extern void f__fatal (int, char *);
-extern int t_runc (alist *);
-extern int f__nowreading (unit *), f__nowwriting (unit *);
-extern int fk_open (int, int, ftnint);
-extern int en_fio (void);
-extern void f_init (void);
-extern int (*f__donewrec) (void), t_putc (int), x_wSL (void);
-extern void b_char (char *, char *, ftnlen), g_char (char *, ftnlen, char *);
-extern int c_sfe (cilist *), z_rnew (void);
-extern int isatty (int);
-extern int err__fl (int, int, char *);
-extern int xrd_SL (void);
-extern int f__putbuf (int);
-extern int (*f__doend) (void);
-extern FILE *f__cf; /*current file */
-extern unit *f__curunit; /*current unit */
-extern unit f__units[];
-#define err(f,m,s) do {if(f) {f__init &= ~2; errno= m;} else f__fatal(m,s); return(m);} while(0)
-#define errfl(f,m,s) do {return err__fl((int)f,m,s);} while(0)
-
-/*Table sizes*/
-#define MXUNIT 100
-
-extern int f__recpos; /*position in current record */
-extern int f__cursor; /* offset to move to */
-extern int f__hiwater; /* so TL doesn't confuse us */
-
-#define WRITE 1
-#define READ 2
-#define SEQ 3
-#define DIR 4
-#define FMT 5
-#define UNF 6
-#define EXT 7
-#define INT 8
-
-#define buf_end(x) (x->_flag & _IONBF ? x->_ptr : x->_base + BUFSIZ)
diff --git a/libf2c/libI77/fmt.c b/libf2c/libI77/fmt.c
deleted file mode 100644
index fa9b73cd60e..00000000000
--- a/libf2c/libI77/fmt.c
+++ /dev/null
@@ -1,602 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-#include "fmt.h"
-#define skip(s) while(*s==' ') s++
-#ifdef interdata
-#define SYLMX 300
-#endif
-#ifdef pdp11
-#define SYLMX 300
-#endif
-#ifdef vax
-#define SYLMX 300
-#endif
-#ifndef SYLMX
-#define SYLMX 300
-#endif
-#define GLITCH '\2'
- /* special quote character for stu */
-extern int f__cursor, f__scale;
-extern flag f__cblank, f__cplus; /*blanks in I and compulsory plus */
-static struct syl f__syl[SYLMX];
-int f__parenlvl, f__pc, f__revloc;
-
-static char *
-ap_end (char *s)
-{
- char quote;
- quote = *s++;
- for (; *s; s++)
- {
- if (*s != quote)
- continue;
- if (*++s != quote)
- return (s);
- }
- if (f__elist->cierr)
- {
- errno = 100;
- return (NULL);
- }
- f__fatal (100, "bad string");
- /*NOTREACHED*/ return 0;
-}
-
-static int
-op_gen (int a, int b, int c, int d)
-{
- struct syl *p = &f__syl[f__pc];
- if (f__pc >= SYLMX)
- {
- fprintf (stderr, "format too complicated:\n");
- sig_die (f__fmtbuf, 1);
- }
- p->op = a;
- p->p1 = b;
- p->p2.i[0] = c;
- p->p2.i[1] = d;
- return (f__pc++);
-}
-static char *f_list (char *);
-static char *
-gt_num (char *s, int *n, int n1)
-{
- int m = 0, f__cnt = 0;
- char c;
- for (c = *s;; c = *s)
- {
- if (c == ' ')
- {
- s++;
- continue;
- }
- if (c > '9' || c < '0')
- break;
- m = 10 * m + c - '0';
- f__cnt++;
- s++;
- }
- if (f__cnt == 0)
- {
- if (!n1)
- s = 0;
- *n = n1;
- }
- else
- *n = m;
- return (s);
-}
-
-static char *
-f_s (char *s, int curloc)
-{
- skip (s);
- if (*s++ != '(')
- {
- return (NULL);
- }
- if (f__parenlvl++ == 1)
- f__revloc = curloc;
- if (op_gen (RET1, curloc, 0, 0) < 0 || (s = f_list (s)) == NULL)
- {
- return (NULL);
- }
- return (s);
-}
-
-static int
-ne_d (char *s, char **p)
-{
- int n, x, sign = 0;
- struct syl *sp;
- switch (*s)
- {
- default:
- return (0);
- case ':':
- (void) op_gen (COLON, 0, 0, 0);
- break;
- case '$':
- (void) op_gen (NONL, 0, 0, 0);
- break;
- case 'B':
- case 'b':
- if (*++s == 'z' || *s == 'Z')
- (void) op_gen (BZ, 0, 0, 0);
- else
- (void) op_gen (BN, 0, 0, 0);
- break;
- case 'S':
- case 's':
- if (*(s + 1) == 's' || *(s + 1) == 'S')
- {
- x = SS;
- s++;
- }
- else if (*(s + 1) == 'p' || *(s + 1) == 'P')
- {
- x = SP;
- s++;
- }
- else
- x = S;
- (void) op_gen (x, 0, 0, 0);
- break;
- case '/':
- (void) op_gen (SLASH, 0, 0, 0);
- break;
- case '-':
- sign = 1;
- case '+':
- s++; /*OUTRAGEOUS CODING TRICK */
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (!(s = gt_num (s, &n, 0)))
- {
- bad:*p = 0;
- return 1;
- }
- switch (*s)
- {
- default:
- return (0);
- case 'P':
- case 'p':
- if (sign)
- n = -n;
- (void) op_gen (P, n, 0, 0);
- break;
- case 'X':
- case 'x':
- (void) op_gen (X, n, 0, 0);
- break;
- case 'H':
- case 'h':
- sp = &f__syl[op_gen (H, n, 0, 0)];
- sp->p2.s = s + 1;
- s += n;
- break;
- }
- break;
- case GLITCH:
- case '"':
- case '\'':
- sp = &f__syl[op_gen (APOS, 0, 0, 0)];
- sp->p2.s = s;
- if ((*p = ap_end (s)) == NULL)
- return (0);
- return (1);
- case 'T':
- case 't':
- if (*(s + 1) == 'l' || *(s + 1) == 'L')
- {
- x = TL;
- s++;
- }
- else if (*(s + 1) == 'r' || *(s + 1) == 'R')
- {
- x = TR;
- s++;
- }
- else
- x = T;
- if (!(s = gt_num (s + 1, &n, 0)))
- goto bad;
- s--;
- (void) op_gen (x, n, 0, 0);
- break;
- case 'X':
- case 'x':
- (void) op_gen (X, 1, 0, 0);
- break;
- case 'P':
- case 'p':
- (void) op_gen (P, 1, 0, 0);
- break;
- }
- s++;
- *p = s;
- return (1);
-}
-
-static int
-e_d (char *s, char **p)
-{
- int i, im, n, w, d, e, found = 0, x = 0;
- char *sv = s;
- s = gt_num (s, &n, 1);
- (void) op_gen (STACK, n, 0, 0);
- switch (*s++)
- {
- default:
- break;
- case 'E':
- case 'e':
- x = 1;
- case 'G':
- case 'g':
- found = 1;
- if (!(s = gt_num (s, &w, 0)))
- {
- bad:
- *p = 0;
- return 1;
- }
- if (w == 0)
- break;
- if (*s == '.')
- {
- if (!(s = gt_num (s + 1, &d, 0)))
- goto bad;
- }
- else
- d = 0;
- if (*s != 'E' && *s != 'e')
- (void) op_gen (x == 1 ? E : G, w, d, 0); /* default is Ew.dE2 */
- else
- {
- if (!(s = gt_num (s + 1, &e, 0)))
- goto bad;
- (void) op_gen (x == 1 ? EE : GE, w, d, e);
- }
- break;
- case 'O':
- case 'o':
- i = O;
- im = OM;
- goto finish_I;
- case 'Z':
- case 'z':
- i = Z;
- im = ZM;
- goto finish_I;
- case 'L':
- case 'l':
- found = 1;
- if (!(s = gt_num (s, &w, 0)))
- goto bad;
- if (w == 0)
- break;
- (void) op_gen (L, w, 0, 0);
- break;
- case 'A':
- case 'a':
- found = 1;
- skip (s);
- if (*s >= '0' && *s <= '9')
- {
- s = gt_num (s, &w, 1);
- if (w == 0)
- break;
- (void) op_gen (AW, w, 0, 0);
- break;
- }
- (void) op_gen (A, 0, 0, 0);
- break;
- case 'F':
- case 'f':
- if (!(s = gt_num (s, &w, 0)))
- goto bad;
- found = 1;
- if (w == 0)
- break;
- if (*s == '.')
- {
- if (!(s = gt_num (s + 1, &d, 0)))
- goto bad;
- }
- else
- d = 0;
- (void) op_gen (F, w, d, 0);
- break;
- case 'D':
- case 'd':
- found = 1;
- if (!(s = gt_num (s, &w, 0)))
- goto bad;
- if (w == 0)
- break;
- if (*s == '.')
- {
- if (!(s = gt_num (s + 1, &d, 0)))
- goto bad;
- }
- else
- d = 0;
- (void) op_gen (D, w, d, 0);
- break;
- case 'I':
- case 'i':
- i = I;
- im = IM;
- finish_I:
- if (!(s = gt_num (s, &w, 0)))
- goto bad;
- found = 1;
- if (w == 0)
- break;
- if (*s != '.')
- {
- (void) op_gen (i, w, 0, 0);
- break;
- }
- if (!(s = gt_num (s + 1, &d, 0)))
- goto bad;
- (void) op_gen (im, w, d, 0);
- break;
- }
- if (found == 0)
- {
- f__pc--; /*unSTACK */
- *p = sv;
- return (0);
- }
- *p = s;
- return (1);
-}
-static char *
-i_tem (char *s)
-{
- char *t;
- int n, curloc;
- if (*s == ')')
- return (s);
- if (ne_d (s, &t))
- return (t);
- if (e_d (s, &t))
- return (t);
- s = gt_num (s, &n, 1);
- if ((curloc = op_gen (STACK, n, 0, 0)) < 0)
- return (NULL);
- return (f_s (s, curloc));
-}
-
-static char *
-f_list (char *s)
-{
- for (; *s != 0;)
- {
- skip (s);
- if ((s = i_tem (s)) == NULL)
- return (NULL);
- skip (s);
- if (*s == ',')
- s++;
- else if (*s == ')')
- {
- if (--f__parenlvl == 0)
- {
- (void) op_gen (REVERT, f__revloc, 0, 0);
- return (++s);
- }
- (void) op_gen (GOTO, 0, 0, 0);
- return (++s);
- }
- }
- return (NULL);
-}
-
-int
-pars_f (char *s)
-{
- char *e;
-
- f__parenlvl = f__revloc = f__pc = 0;
- if ((e = f_s (s, 0)) == NULL)
- {
- /* Try and delimit the format string. Parens within
- hollerith and quoted strings have to match for this
- to work, but it's probably adequate for most needs.
- Note that this is needed because a valid CHARACTER
- variable passed for FMT= can contain '(I)garbage',
- where `garbage' is billions and billions of junk
- characters, and it's up to the run-time library to
- know where the format string ends by counting parens.
- Meanwhile, still treat NUL byte as "hard stop", since
- f2c still appends that at end of FORMAT-statement
- strings. */
-
- int level = 0;
-
- for (f__fmtlen = 0;
- ((*s != ')') || (--level > 0))
- && (*s != '\0') && (f__fmtlen < 80); ++s, ++f__fmtlen)
- {
- if (*s == '(')
- ++level;
- }
- if (*s == ')')
- ++f__fmtlen;
- return (-1);
- }
- f__fmtlen = e - s;
- return (0);
-}
-
-#define STKSZ 10
-int f__cnt[STKSZ], f__ret[STKSZ], f__cp, f__rp;
-flag f__workdone, f__nonl;
-
-static int
-type_f (int n)
-{
- switch (n)
- {
- default:
- return (n);
- case RET1:
- return (RET1);
- case REVERT:
- return (REVERT);
- case GOTO:
- return (GOTO);
- case STACK:
- return (STACK);
- case X:
- case SLASH:
- case APOS:
- case H:
- case T:
- case TL:
- case TR:
- return (NED);
- case F:
- case I:
- case IM:
- case A:
- case AW:
- case O:
- case OM:
- case L:
- case E:
- case EE:
- case D:
- case G:
- case GE:
- case Z:
- case ZM:
- return (ED);
- }
-}
-integer
-do_fio (ftnint * number, char *ptr, ftnlen len)
-{
- struct syl *p;
- int n, i;
- for (i = 0; i < *number; i++, ptr += len)
- {
- loop:switch (type_f ((p = &f__syl[f__pc])->op))
- {
- default:
- fprintf (stderr, "unknown code in do_fio: %d\n%.*s\n",
- p->op, f__fmtlen, f__fmtbuf);
- err (f__elist->cierr, 100, "do_fio");
- case NED:
- if ((*f__doned) (p))
- {
- f__pc++;
- goto loop;
- }
- f__pc++;
- continue;
- case ED:
- if (f__cnt[f__cp] <= 0)
- {
- f__cp--;
- f__pc++;
- goto loop;
- }
- if (ptr == NULL)
- return ((*f__doend) ());
- f__cnt[f__cp]--;
- f__workdone = 1;
- if ((n = (*f__doed) (p, ptr, len)) > 0)
- errfl (f__elist->cierr, errno, "fmt");
- if (n < 0)
- err (f__elist->ciend, (EOF), "fmt");
- continue;
- case STACK:
- f__cnt[++f__cp] = p->p1;
- f__pc++;
- goto loop;
- case RET1:
- f__ret[++f__rp] = p->p1;
- f__pc++;
- goto loop;
- case GOTO:
- if (--f__cnt[f__cp] <= 0)
- {
- f__cp--;
- f__rp--;
- f__pc++;
- goto loop;
- }
- f__pc = 1 + f__ret[f__rp--];
- goto loop;
- case REVERT:
- f__rp = f__cp = 0;
- f__pc = p->p1;
- if (ptr == NULL)
- return ((*f__doend) ());
- if (!f__workdone)
- return (0);
- if ((n = (*f__dorevert) ()) != 0)
- return (n);
- goto loop;
- case COLON:
- if (ptr == NULL)
- return ((*f__doend) ());
- f__pc++;
- goto loop;
- case NONL:
- f__nonl = 1;
- f__pc++;
- goto loop;
- case S:
- case SS:
- f__cplus = 0;
- f__pc++;
- goto loop;
- case SP:
- f__cplus = 1;
- f__pc++;
- goto loop;
- case P:
- f__scale = p->p1;
- f__pc++;
- goto loop;
- case BN:
- f__cblank = 0;
- f__pc++;
- goto loop;
- case BZ:
- f__cblank = 1;
- f__pc++;
- goto loop;
- }
- }
- return (0);
-}
-
-int
-en_fio (void)
-{
- ftnint one = 1;
- return (do_fio (&one, (char *) NULL, (ftnint) 0));
-}
-
-void
-fmt_bg (void)
-{
- f__workdone = f__cp = f__rp = f__pc = f__cursor = 0;
- f__cnt[0] = f__ret[0] = 0;
-}
diff --git a/libf2c/libI77/fmt.h b/libf2c/libI77/fmt.h
deleted file mode 100644
index bcd84cee40a..00000000000
--- a/libf2c/libI77/fmt.h
+++ /dev/null
@@ -1,92 +0,0 @@
-struct syl
-{
- int op;
- int p1;
- union
- {
- int i[2];
- char *s;
- }
- p2;
-};
-#define RET1 1
-#define REVERT 2
-#define GOTO 3
-#define X 4
-#define SLASH 5
-#define STACK 6
-#define I 7
-#define ED 8
-#define NED 9
-#define IM 10
-#define APOS 11
-#define H 12
-#define TL 13
-#define TR 14
-#define T 15
-#define COLON 16
-#define S 17
-#define SP 18
-#define SS 19
-#define P 20
-#define BN 21
-#define BZ 22
-#define F 23
-#define E 24
-#define EE 25
-#define D 26
-#define G 27
-#define GE 28
-#define L 29
-#define A 30
-#define AW 31
-#define O 32
-#define NONL 33
-#define OM 34
-#define Z 35
-#define ZM 36
-extern int f__pc, f__parenlvl, f__revloc;
-typedef union
-{
- real pf;
- doublereal pd;
-}
-ufloat;
-typedef union
-{
- short is;
- signed char ic;
- integer il;
-#ifdef Allow_TYQUAD
- longint ili;
-#endif
-}
-Uint;
-extern int (*f__doed) (struct syl *, char *, ftnlen),
- (*f__doned) (struct syl *);
-extern int (*f__dorevert) (void);
-extern void fmt_bg (void);
-extern int pars_f (char *);
-extern int rd_ed (struct syl *, char *, ftnlen), rd_ned (struct syl *);
-extern int w_ed (struct syl *, char *, ftnlen), w_ned (struct syl *);
-extern int wrt_E (ufloat *, int, int, int, ftnlen);
-extern int wrt_F (ufloat *, int, int, ftnlen);
-extern int wrt_L (Uint *, int, ftnlen);
-extern flag f__cblank, f__cplus, f__workdone, f__nonl;
-extern char *f__fmtbuf;
-extern int f__fmtlen;
-extern int f__scale;
-#define GET(x) if((x=(*f__getn)())<0) return(x)
-#define VAL(x) (x!='\n'?x:' ')
-#define PUT(x) (*f__putn)(x)
-extern int f__cursor;
-
-#undef TYQUAD
-#ifndef Allow_TYQUAD
-#undef longint
-#define longint long
-#else
-#define TYQUAD 14
-#endif
-
-extern char *f__icvt (longint, int *, int *, int);
diff --git a/libf2c/libI77/fmtlib.c b/libf2c/libI77/fmtlib.c
deleted file mode 100644
index 3d2a299d232..00000000000
--- a/libf2c/libI77/fmtlib.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* @(#)fmtlib.c 1.2 */
-#define MAXINTLENGTH 23
-#include "config.h"
-
-#include "f2c.h"
-#ifndef Allow_TYQUAD
-#undef longint
-#define longint long
-#undef ulongint
-#define ulongint unsigned long
-#endif
-
-char *
-f__icvt (longint value, int *ndigit, int *sign, int base)
-{
- static char buf[MAXINTLENGTH + 1];
- register int i;
- ulongint uvalue;
-
- if (value > 0)
- {
- uvalue = value;
- *sign = 0;
- }
- else if (value < 0)
- {
- uvalue = -value;
- *sign = 1;
- }
- else
- {
- *sign = 0;
- *ndigit = 1;
- buf[MAXINTLENGTH - 1] = '0';
- return &buf[MAXINTLENGTH - 1];
- }
- i = MAXINTLENGTH;
- do
- {
- buf[--i] = (uvalue % base) + '0';
- uvalue /= base;
- }
- while (uvalue > 0);
- *ndigit = MAXINTLENGTH - i;
- return &buf[i];
-}
diff --git a/libf2c/libI77/fp.h b/libf2c/libI77/fp.h
deleted file mode 100644
index 2b78ef9cc52..00000000000
--- a/libf2c/libI77/fp.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#define FMAX 40
-#define EXPMAXDIGS 8
-#define EXPMAX 99999999
-/* FMAX = max number of nonzero digits passed to atof() */
-/* EXPMAX = 10^EXPMAXDIGS - 1 = largest allowed exponent absolute value */
-
-#ifdef V10 /* Research Tenth-Edition Unix */
-#include "local.h"
-#endif
-
-/* MAXFRACDIGS and MAXINTDIGS are for wrt_F -- bounds (not necessarily
- tight) on the maximum number of digits to the right and left of
- * the decimal point.
- */
-
-#ifdef VAX
-#define MAXFRACDIGS 56
-#define MAXINTDIGS 38
-#else
-#ifdef CRAY
-#define MAXFRACDIGS 9880
-#define MAXINTDIGS 9864
-#else
-/* values that suffice for IEEE double */
-#define MAXFRACDIGS 344
-#define MAXINTDIGS 308
-#endif
-#endif
diff --git a/libf2c/libI77/ftell_.c b/libf2c/libI77/ftell_.c
deleted file mode 100644
index 63153420fbc..00000000000
--- a/libf2c/libI77/ftell_.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-
-static FILE *
-unit_chk (integer Unit, char *who)
-{
- if (Unit >= MXUNIT || Unit < 0)
- f__fatal (101, who);
- return f__units[Unit].ufd;
-}
-
-integer
-G77_ftell_0 (integer * Unit)
-{
- FILE *f;
- return (f = unit_chk (*Unit, "ftell")) ? (integer) FTELL (f) : -1L;
-}
-
-integer
-G77_fseek_0 (integer * Unit, integer * offset, integer * xwhence)
-{
- FILE *f;
- int w = (int) *xwhence;
-#ifdef SEEK_SET
- static int wohin[3] = { SEEK_SET, SEEK_CUR, SEEK_END };
-#endif
- if (w < 0 || w > 2)
- w = 0;
-#ifdef SEEK_SET
- w = wohin[w];
-#endif
- return !(f = unit_chk (*Unit, "fseek"))
- || FSEEK (f, (off_t) * offset, w) ? 1 : 0;
-}
diff --git a/libf2c/libI77/iio.c b/libf2c/libI77/iio.c
deleted file mode 100644
index 940cbf82f91..00000000000
--- a/libf2c/libI77/iio.c
+++ /dev/null
@@ -1,157 +0,0 @@
-#include "f2c.h"
-#include "fio.h"
-#include "fmt.h"
-extern char *f__icptr;
-char *f__icend;
-extern icilist *f__svic;
-int f__icnum;
-extern int f__hiwater;
-int
-z_getc (void)
-{
- if (f__recpos++ < f__svic->icirlen)
- {
- if (f__icptr >= f__icend)
- err (f__svic->iciend, (EOF), "endfile");
- return (*(unsigned char *) f__icptr++);
- }
- return '\n';
-}
-
-void
-z_putc (int c)
-{
- if (f__recpos++ < f__svic->icirlen && f__icptr < f__icend)
- *f__icptr++ = c;
-}
-int
-z_rnew (void)
-{
- f__icptr = f__svic->iciunit + (++f__icnum) * f__svic->icirlen;
- f__recpos = 0;
- f__cursor = 0;
- f__hiwater = 0;
- return 1;
-}
-
-static int
-z_endp (void)
-{
- (*f__donewrec) ();
- return 0;
-}
-
-int
-c_si (icilist * a)
-{
- if (f__init & 2)
- f__fatal (131, "I/O recursion");
- f__init |= 2;
- f__elist = (cilist *) a;
- f__fmtbuf = a->icifmt;
- f__curunit = 0;
- f__sequential = f__formatted = 1;
- f__external = 0;
- if (pars_f (f__fmtbuf) < 0)
- err (a->icierr, 100, "startint");
- fmt_bg ();
- f__cblank = f__cplus = f__scale = 0;
- f__svic = a;
- f__icnum = f__recpos = 0;
- f__cursor = 0;
- f__hiwater = 0;
- f__icptr = a->iciunit;
- f__icend = f__icptr + a->icirlen * a->icirnum;
- f__cf = 0;
- return (0);
-}
-
-int
-iw_rev (void)
-{
- if (f__workdone)
- z_endp ();
- f__hiwater = f__recpos = f__cursor = 0;
- return (f__workdone = 0);
-}
-
-integer
-s_rsfi (icilist * a)
-{
- int n;
- if ((n = c_si (a)))
- return (n);
- f__reading = 1;
- f__doed = rd_ed;
- f__doned = rd_ned;
- f__getn = z_getc;
- f__dorevert = z_endp;
- f__donewrec = z_rnew;
- f__doend = z_endp;
- return (0);
-}
-
-int
-z_wnew (void)
-{
- if (f__recpos < f__hiwater)
- {
- f__icptr += f__hiwater - f__recpos;
- f__recpos = f__hiwater;
- }
- while (f__recpos++ < f__svic->icirlen)
- *f__icptr++ = ' ';
- f__recpos = 0;
- f__cursor = 0;
- f__hiwater = 0;
- f__icnum++;
- return 1;
-}
-
-integer
-s_wsfi (icilist * a)
-{
- int n;
- if ((n = c_si (a)))
- return (n);
- f__reading = 0;
- f__doed = w_ed;
- f__doned = w_ned;
- f__putn = z_putc;
- f__dorevert = iw_rev;
- f__donewrec = z_wnew;
- f__doend = z_endp;
- return (0);
-}
-
-integer
-e_rsfi (void)
-{
- int n;
- f__init &= ~2;
- n = en_fio ();
- f__fmtbuf = NULL;
- return (n);
-}
-
-integer
-e_wsfi (void)
-{
- int n;
- f__init &= ~2;
- n = en_fio ();
- f__fmtbuf = NULL;
- if (f__svic->icirnum != 1
- && (f__icnum > f__svic->icirnum
- || (f__icnum == f__svic->icirnum && (f__recpos | f__hiwater))))
- err (f__svic->icierr, 110, "inwrite");
- if (f__recpos < f__hiwater)
- f__recpos = f__hiwater;
- if (f__recpos >= f__svic->icirlen)
- err (f__svic->icierr, 110, "recend");
- if (!f__recpos && f__icnum)
- return n;
- while (f__recpos++ < f__svic->icirlen)
- *f__icptr++ = ' ';
- return n;
-}
diff --git a/libf2c/libI77/ilnw.c b/libf2c/libI77/ilnw.c
deleted file mode 100644
index 0a92a0cbac2..00000000000
--- a/libf2c/libI77/ilnw.c
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-#include "lio.h"
-extern char *f__icptr;
-extern char *f__icend;
-extern icilist *f__svic;
-extern int f__icnum;
-extern void z_putc (int);
-
-static int
-z_wSL (void)
-{
- while (f__recpos < f__svic->icirlen)
- z_putc (' ');
- return z_rnew ();
-}
-
-static void
-c_liw (icilist * a)
-{
- f__reading = 0;
- f__external = 0;
- f__formatted = 1;
- f__putn = z_putc;
- L_len = a->icirlen;
- f__donewrec = z_wSL;
- f__svic = a;
- f__icnum = f__recpos = 0;
- f__cursor = 0;
- f__cf = 0;
- f__curunit = 0;
- f__icptr = a->iciunit;
- f__icend = f__icptr + a->icirlen * a->icirnum;
- f__elist = (cilist *) a;
-}
-
-integer
-s_wsni (icilist * a)
-{
- cilist ca;
-
- if (f__init != 1)
- f_init ();
- f__init = 3;
- c_liw (a);
- ca.cifmt = a->icifmt;
- x_wsne (&ca);
- z_wSL ();
- return 0;
-}
-
-integer
-s_wsli (icilist * a)
-{
- if (f__init != 1)
- f_init ();
- f__init = 3;
- f__lioproc = l_write;
- c_liw (a);
- return (0);
-}
-
-integer
-e_wsli (void)
-{
- f__init = 1;
- z_wSL ();
- return (0);
-}
diff --git a/libf2c/libI77/inquire.c b/libf2c/libI77/inquire.c
deleted file mode 100644
index dae869cb4bf..00000000000
--- a/libf2c/libI77/inquire.c
+++ /dev/null
@@ -1,143 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-#include <string.h>
-#if defined (MSDOS) && !defined (GO32)
-#undef abs
-#undef min
-#undef max
-#include "io.h"
-#endif
-integer
-f_inqu (inlist * a)
-{
- flag byfile;
- int i, n;
- unit *p;
- char buf[256];
- long x;
- if (f__init & 2)
- f__fatal (131, "I/O recursion");
- if (a->infile != NULL)
- {
- byfile = 1;
- g_char (a->infile, a->infilen, buf);
-#ifdef NON_UNIX_STDIO
- x = access (buf, 0) ? -1 : 0;
- for (i = 0, p = NULL; i < MXUNIT; i++)
- if (f__units[i].ufd != NULL
- && f__units[i].ufnm != NULL && !strcmp (f__units[i].ufnm, buf))
- {
- p = &f__units[i];
- break;
- }
-#else
- x = f__inode (buf, &n);
- for (i = 0, p = NULL; i < MXUNIT; i++)
- if (f__units[i].uinode == x
- && f__units[i].ufd != NULL && f__units[i].udev == n)
- {
- p = &f__units[i];
- break;
- }
-#endif
- }
- else
- {
- byfile = 0;
- if (a->inunit < MXUNIT && a->inunit >= 0)
- {
- p = &f__units[a->inunit];
- }
- else
- {
- p = NULL;
- }
- }
- if (a->inex != NULL)
- {
- if ((byfile && x != -1) || (!byfile && p != NULL))
- *a->inex = 1;
- else
- *a->inex = 0;
- }
- if (a->inopen != NULL)
- {
- if (byfile)
- *a->inopen = (p != NULL);
- else
- *a->inopen = (p != NULL && p->ufd != NULL);
- }
- if (a->innum != NULL)
- *a->innum = p - f__units;
- if (a->innamed != NULL)
- {
- if (byfile || (p != NULL && p->ufnm != NULL))
- *a->innamed = 1;
- else
- *a->innamed = 0;
- }
- if (a->inname != NULL)
- {
- if (byfile)
- b_char (buf, a->inname, a->innamlen);
- else if (p != NULL && p->ufnm != NULL)
- b_char (p->ufnm, a->inname, a->innamlen);
- }
- if (a->inacc != NULL && p != NULL && p->ufd != NULL)
- {
- if (p->url)
- b_char ("DIRECT", a->inacc, a->inacclen);
- else
- b_char ("SEQUENTIAL", a->inacc, a->inacclen);
- }
- if (a->inseq != NULL)
- {
- if (p != NULL && p->url)
- b_char ("NO", a->inseq, a->inseqlen);
- else
- b_char ("YES", a->inseq, a->inseqlen);
- }
- if (a->indir != NULL)
- {
- if (p == NULL || p->url)
- b_char ("YES", a->indir, a->indirlen);
- else
- b_char ("NO", a->indir, a->indirlen);
- }
- if (a->infmt != NULL)
- {
- if (p != NULL && p->ufmt == 0)
- b_char ("UNFORMATTED", a->infmt, a->infmtlen);
- else
- b_char ("FORMATTED", a->infmt, a->infmtlen);
- }
- if (a->inform != NULL)
- {
- if (p != NULL && p->ufmt == 0)
- b_char ("NO", a->inform, a->informlen);
- else
- b_char ("YES", a->inform, a->informlen);
- }
- if (a->inunf)
- {
- if (p != NULL && p->ufmt == 0)
- b_char ("YES", a->inunf, a->inunflen);
- else if (p != NULL)
- b_char ("NO", a->inunf, a->inunflen);
- else
- b_char ("UNKNOWN", a->inunf, a->inunflen);
- }
- if (a->inrecl != NULL && p != NULL)
- *a->inrecl = p->url;
- if (a->innrec != NULL && p != NULL && p->url > 0)
- *a->innrec = FTELL (p->ufd) / p->url + 1;
- if (a->inblank && p != NULL && p->ufmt)
- {
- if (p->ublnk)
- b_char ("ZERO", a->inblank, a->inblanklen);
- else
- b_char ("NULL", a->inblank, a->inblanklen);
- }
- return (0);
-}
diff --git a/libf2c/libI77/lio.h b/libf2c/libI77/lio.h
deleted file mode 100644
index 4e17115e8d4..00000000000
--- a/libf2c/libI77/lio.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* copy of ftypes from the compiler */
-/* variable types
- * numeric assumptions:
- * int < reals < complexes
- * TYDREAL-TYREAL = TYDCOMPLEX-TYCOMPLEX
- */
-
-/* 0-10 retain their old (pre LOGICAL*1, etc.) */
-/* values to allow mixing old and new objects. */
-
-#define TYUNKNOWN 0
-#define TYADDR 1
-#define TYSHORT 2
-#define TYLONG 3
-#define TYREAL 4
-#define TYDREAL 5
-#define TYCOMPLEX 6
-#define TYDCOMPLEX 7
-#define TYLOGICAL 8
-#define TYCHAR 9
-#define TYSUBR 10
-#define TYINT1 11
-#define TYLOGICAL1 12
-#define TYLOGICAL2 13
-#ifdef Allow_TYQUAD
-#undef TYQUAD
-#define TYQUAD 14
-#endif
-
-#define LINTW 24
-#define LINE 80
-#define LLOGW 2
-#ifdef Old_list_output
-#define LLOW 1.0
-#define LHIGH 1.e9
-#define LEFMT " %# .8E"
-#define LFFMT " %# .9g"
-#else
-#define LGFMT "%.9G"
-#endif
-/* LEFBL 20 should suffice; 24 overcomes a NeXT bug. */
-#define LEFBL 24
-
-typedef union
-{
- signed char flchar;
- short flshort;
- ftnint flint;
-#ifdef Allow_TYQUAD
- longint fllongint;
-#endif
- real flreal;
- doublereal fldouble;
-}
-flex;
-extern int f__scale;
-extern int (*f__lioproc) (ftnint *, char *, ftnlen, ftnint);
-extern int l_write (ftnint *, char *, ftnlen, ftnint);
-extern void x_wsne (cilist *);
-extern int c_le (cilist *), (*l_getc) (void), (*l_ungetc) (int, FILE *);
-extern int l_read (ftnint *, char *, ftnlen, ftnint);
-extern integer e_rsle (void), e_wsle (void), s_wsne (cilist *);
-extern int z_rnew (void);
-extern ftnint L_len;
diff --git a/libf2c/libI77/lread.c b/libf2c/libI77/lread.c
deleted file mode 100644
index b926367b930..00000000000
--- a/libf2c/libI77/lread.c
+++ /dev/null
@@ -1,845 +0,0 @@
-#include "config.h"
-#include <ctype.h>
-#include "f2c.h"
-#include "fio.h"
-
-/* Compile with -DF8X_NML_ELIDE_QUOTES to permit eliding quotation */
-/* marks in namelist input a la the Fortran 8X Draft published in */
-/* the May 1989 issue of Fortran Forum. */
-
-
-extern char *f__fmtbuf;
-extern int f__fmtlen;
-
-#ifdef Allow_TYQUAD
-static longint f__llx;
-#endif
-
-#undef abs
-#undef min
-#undef max
-#include <stdlib.h>
-
-#include "fmt.h"
-#include "lio.h"
-#include "fp.h"
-
-int (*f__lioproc) (ftnint *, char *, ftnlen, ftnint), (*l_getc) (void),
- (*l_ungetc) (int, FILE *);
-
-int l_eof;
-
-#define isblnk(x) (f__ltab[x+1]&B)
-#define issep(x) (f__ltab[x+1]&SX)
-#define isapos(x) (f__ltab[x+1]&AX)
-#define isexp(x) (f__ltab[x+1]&EX)
-#define issign(x) (f__ltab[x+1]&SG)
-#define iswhit(x) (f__ltab[x+1]&WH)
-#define SX 1
-#define B 2
-#define AX 4
-#define EX 8
-#define SG 16
-#define WH 32
-char f__ltab[128 + 1] = { /* offset one for EOF */
- 0,
- 0, 0, AX, 0, 0, 0, 0, 0, 0, WH | B, SX | WH, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- SX | B | WH, 0, AX, 0, 0, 0, 0, AX, 0, 0, 0, SG, SX, SG, 0, SX,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, EX, EX, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- AX, 0, 0, 0, EX, EX, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-#ifdef ungetc
-static int
-un_getc (int x, FILE * f__cf)
-{
- return ungetc (x, f__cf);
-}
-#else
-#define un_getc ungetc
-extern int ungetc (int, FILE *); /* for systems with a buggy stdio.h */
-#endif
-
-int
-t_getc (void)
-{
- int ch;
- if (f__curunit->uend)
- return (EOF);
- if ((ch = getc (f__cf)) != EOF)
- return (ch);
- if (feof (f__cf))
- f__curunit->uend = l_eof = 1;
- return (EOF);
-}
-
-integer
-e_rsle (void)
-{
- int ch;
- f__init = 1;
- if (f__curunit->uend)
- return (0);
- while ((ch = t_getc ()) != '\n')
- if (ch == EOF)
- {
- if (feof (f__cf))
- f__curunit->uend = l_eof = 1;
- return EOF;
- }
- return (0);
-}
-
-flag f__lquit;
-int f__lcount, f__ltype, nml_read;
-char *f__lchar;
-double f__lx, f__ly;
-#define ERR(x) if((n=(x))) {f__init &= ~2; return(n);}
-#define GETC(x) (x=(*l_getc)())
-#define Ungetc(x,y) (*l_ungetc)(x,y)
-
-static int
-l_R (int poststar, int reqint)
-{
- char s[FMAX + EXPMAXDIGS + 4];
- register int ch;
- register char *sp, *spe, *sp1;
- long e, exp;
- int havenum, havestar, se;
-
- if (!poststar)
- {
- if (f__lcount > 0)
- return (0);
- f__lcount = 1;
- }
-#ifdef Allow_TYQUAD
- f__llx = 0;
-#endif
- f__ltype = 0;
- exp = 0;
- havestar = 0;
-retry:
- sp1 = sp = s;
- spe = sp + FMAX;
- havenum = 0;
-
- switch (GETC (ch))
- {
- case '-':
- *sp++ = ch;
- sp1++;
- spe++;
- case '+':
- GETC (ch);
- }
- while (ch == '0')
- {
- ++havenum;
- GETC (ch);
- }
- while (isdigit (ch))
- {
- if (sp < spe)
- *sp++ = ch;
- else
- ++exp;
- GETC (ch);
- }
- if (ch == '*' && !poststar)
- {
- if (sp == sp1 || exp || *s == '-')
- {
- errfl (f__elist->cierr, 112, "bad repetition count");
- }
- poststar = havestar = 1;
- *sp = 0;
- f__lcount = atoi (s);
- goto retry;
- }
- if (ch == '.')
- {
-#ifndef ALLOW_FLOAT_IN_INTEGER_LIST_INPUT
- if (reqint)
- errfl (f__elist->cierr, 115, "invalid integer");
-#endif
- GETC (ch);
- if (sp == sp1)
- while (ch == '0')
- {
- ++havenum;
- --exp;
- GETC (ch);
- }
- while (isdigit (ch))
- {
- if (sp < spe)
- {
- *sp++ = ch;
- --exp;
- }
- GETC (ch);
- }
- }
- havenum += sp - sp1;
- se = 0;
- if (issign (ch))
- goto signonly;
- if (havenum && isexp (ch))
- {
-#ifndef ALLOW_FLOAT_IN_INTEGER_LIST_INPUT
- if (reqint)
- errfl (f__elist->cierr, 115, "invalid integer");
-#endif
- GETC (ch);
- if (issign (ch))
- {
- signonly:
- if (ch == '-')
- se = 1;
- GETC (ch);
- }
- if (!isdigit (ch))
- {
- bad:
- errfl (f__elist->cierr, 112, "exponent field");
- }
-
- e = ch - '0';
- while (isdigit (GETC (ch)))
- {
- e = 10 * e + ch - '0';
- if (e > EXPMAX)
- goto bad;
- }
- if (se)
- exp -= e;
- else
- exp += e;
- }
- (void) Ungetc (ch, f__cf);
- if (sp > sp1)
- {
- ++havenum;
- while (*--sp == '0')
- ++exp;
- if (exp)
- sprintf (sp + 1, "e%ld", exp);
- else
- sp[1] = 0;
- f__lx = atof (s);
-#ifdef Allow_TYQUAD
- if (reqint & 2 && (se = sp - sp1 + exp) > 14 && se < 20)
- {
- /* Assuming 64-bit longint and 32-bit long. */
- if (exp < 0)
- sp += exp;
- if (sp1 <= sp)
- {
- f__llx = *sp1 - '0';
- while (++sp1 <= sp)
- f__llx = 10 * f__llx + (*sp1 - '0');
- }
- while (--exp >= 0)
- f__llx *= 10;
- if (*s == '-')
- f__llx = -f__llx;
- }
-#endif
- }
- else
- f__lx = 0.;
- if (havenum)
- f__ltype = TYLONG;
- else
- switch (ch)
- {
- case ',':
- case '/':
- break;
- default:
- if (havestar && (ch == ' ' || ch == '\t' || ch == '\n'))
- break;
- if (nml_read > 1)
- {
- f__lquit = 2;
- return 0;
- }
- errfl (f__elist->cierr, 112, "invalid number");
- }
- return 0;
-}
-
-static int
-rd_count (register int ch)
-{
- if (ch < '0' || ch > '9')
- return 1;
- f__lcount = ch - '0';
- while (GETC (ch) >= '0' && ch <= '9')
- f__lcount = 10 * f__lcount + ch - '0';
- Ungetc (ch, f__cf);
- return f__lcount <= 0;
-}
-
-static int
-l_C (void)
-{
- int ch, nml_save;
- double lz;
- if (f__lcount > 0)
- return (0);
- f__ltype = 0;
- GETC (ch);
- if (ch != '(')
- {
- if (nml_read > 1 && (ch < '0' || ch > '9'))
- {
- Ungetc (ch, f__cf);
- f__lquit = 2;
- return 0;
- }
- if (rd_count (ch))
- {
- if (!f__cf || !feof (f__cf))
- errfl (f__elist->cierr, 112, "complex format");
- else
- err (f__elist->cierr, (EOF), "lread");
- }
- if (GETC (ch) != '*')
- {
- if (!f__cf || !feof (f__cf))
- errfl (f__elist->cierr, 112, "no star");
- else
- err (f__elist->cierr, (EOF), "lread");
- }
- if (GETC (ch) != '(')
- {
- Ungetc (ch, f__cf);
- return (0);
- }
- }
- else
- f__lcount = 1;
- while (iswhit (GETC (ch)));
- Ungetc (ch, f__cf);
- nml_save = nml_read;
- nml_read = 0;
- if ((ch = l_R (1, 0)))
- return ch;
- if (!f__ltype)
- errfl (f__elist->cierr, 112, "no real part");
- lz = f__lx;
- while (iswhit (GETC (ch)));
- if (ch != ',')
- {
- (void) Ungetc (ch, f__cf);
- errfl (f__elist->cierr, 112, "no comma");
- }
- while (iswhit (GETC (ch)));
- (void) Ungetc (ch, f__cf);
- if ((ch = l_R (1, 0)))
- return ch;
- if (!f__ltype)
- errfl (f__elist->cierr, 112, "no imaginary part");
- while (iswhit (GETC (ch)));
- if (ch != ')')
- errfl (f__elist->cierr, 112, "no )");
- f__ly = f__lx;
- f__lx = lz;
-#ifdef Allow_TYQUAD
- f__llx = 0;
-#endif
- nml_read = nml_save;
- return (0);
-}
-
-static char nmLbuf[256], *nmL_next;
-static int (*nmL_getc_save) (void);
-static int (*nmL_ungetc_save) (int, FILE *);
-
-static int
-nmL_getc (void)
-{
- int rv;
- if ((rv = *nmL_next++))
- return rv;
- l_getc = nmL_getc_save;
- l_ungetc = nmL_ungetc_save;
- return (*l_getc) ();
-}
-
-static int
-nmL_ungetc (int x, FILE * f)
-{
- f = f; /* banish non-use warning */
- return *--nmL_next = x;
-}
-
-static int
-Lfinish (int ch, int dot, int *rvp)
-{
- char *s, *se;
- static char what[] = "namelist input";
-
- s = nmLbuf + 2;
- se = nmLbuf + sizeof (nmLbuf) - 1;
- *s++ = ch;
- while (!issep (GETC (ch)) && ch != EOF)
- {
- if (s >= se)
- {
- nmLbuf_ovfl:
- return *rvp = err__fl (f__elist->cierr, 131, what);
- }
- *s++ = ch;
- if (ch != '=')
- continue;
- if (dot)
- return *rvp = err__fl (f__elist->cierr, 112, what);
- got_eq:
- *s = 0;
- nmL_getc_save = l_getc;
- l_getc = nmL_getc;
- nmL_ungetc_save = l_ungetc;
- l_ungetc = nmL_ungetc;
- nmLbuf[1] = *(nmL_next = nmLbuf) = ',';
- *rvp = f__lcount = 0;
- return 1;
- }
- if (dot)
- goto done;
- for (;;)
- {
- if (s >= se)
- goto nmLbuf_ovfl;
- *s++ = ch;
- if (!isblnk (ch))
- break;
- if (GETC (ch) == EOF)
- goto done;
- }
- if (ch == '=')
- goto got_eq;
-done:
- Ungetc (ch, f__cf);
- return 0;
-}
-
-static int
-l_L (void)
-{
- int ch, rv, sawdot;
- if (f__lcount > 0)
- return (0);
- f__lcount = 1;
- f__ltype = 0;
- GETC (ch);
- if (isdigit (ch))
- {
- rd_count (ch);
- if (GETC (ch) != '*')
- {
- if (!f__cf || !feof (f__cf))
- errfl (f__elist->cierr, 112, "no star");
- else
- err (f__elist->cierr, (EOF), "lread");
- }
- GETC (ch);
- }
- sawdot = 0;
- if (ch == '.')
- {
- sawdot = 1;
- GETC (ch);
- }
- switch (ch)
- {
- case 't':
- case 'T':
- if (nml_read && Lfinish (ch, sawdot, &rv))
- return rv;
- f__lx = 1;
- break;
- case 'f':
- case 'F':
- if (nml_read && Lfinish (ch, sawdot, &rv))
- return rv;
- f__lx = 0;
- break;
- default:
- if (isblnk (ch) || issep (ch) || ch == EOF)
- {
- (void) Ungetc (ch, f__cf);
- return (0);
- }
- if (nml_read > 1)
- {
- Ungetc (ch, f__cf);
- f__lquit = 2;
- return 0;
- }
- errfl (f__elist->cierr, 112, "logical");
- }
- f__ltype = TYLONG;
- while (!issep (GETC (ch)) && ch != EOF);
- (void) Ungetc (ch, f__cf);
- return (0);
-}
-
-#define BUFSIZE 128
-
-static int
-l_CHAR (void)
-{
- int ch, size, i;
- static char rafail[] = "realloc failure";
- char quote, *p;
- if (f__lcount > 0)
- return (0);
- f__ltype = 0;
- if (f__lchar != NULL)
- free (f__lchar);
- size = BUFSIZE;
- p = f__lchar = (char *) malloc ((unsigned int) size);
- if (f__lchar == NULL)
- errfl (f__elist->cierr, 113, "no space");
-
- GETC (ch);
- if (isdigit (ch))
- {
- /* allow Fortran 8x-style unquoted string... */
- /* either find a repetition count or the string */
- f__lcount = ch - '0';
- *p++ = ch;
- for (i = 1;;)
- {
- switch (GETC (ch))
- {
- case '*':
- if (f__lcount == 0)
- {
- f__lcount = 1;
-#ifndef F8X_NML_ELIDE_QUOTES
- if (nml_read)
- goto no_quote;
-#endif
- goto noquote;
- }
- p = f__lchar;
- goto have_lcount;
- case ',':
- case ' ':
- case '\t':
- case '\n':
- case '/':
- Ungetc (ch, f__cf);
- /* no break */
- case EOF:
- f__lcount = 1;
- f__ltype = TYCHAR;
- return *p = 0;
- }
- if (!isdigit (ch))
- {
- f__lcount = 1;
-#ifndef F8X_NML_ELIDE_QUOTES
- if (nml_read)
- {
- no_quote:
- errfl (f__elist->cierr, 112,
- "undelimited character string");
- }
-#endif
- goto noquote;
- }
- *p++ = ch;
- f__lcount = 10 * f__lcount + ch - '0';
- if (++i == size)
- {
- f__lchar = (char *) realloc (f__lchar,
- (unsigned int) (size += BUFSIZE));
- if (f__lchar == NULL)
- errfl (f__elist->cierr, 113, rafail);
- p = f__lchar + i;
- }
- }
- }
- else
- (void) Ungetc (ch, f__cf);
-have_lcount:
- if (GETC (ch) == '\'' || ch == '"')
- quote = ch;
- else if (isblnk (ch) || (issep (ch) && ch != '\n') || ch == EOF)
- {
- Ungetc (ch, f__cf);
- return 0;
- }
-#ifndef F8X_NML_ELIDE_QUOTES
- else if (nml_read > 1)
- {
- Ungetc (ch, f__cf);
- f__lquit = 2;
- return 0;
- }
-#endif
- else
- {
- /* Fortran 8x-style unquoted string */
- *p++ = ch;
- for (i = 1;;)
- {
- switch (GETC (ch))
- {
- case ',':
- case ' ':
- case '\t':
- case '\n':
- case '/':
- Ungetc (ch, f__cf);
- /* no break */
- case EOF:
- f__ltype = TYCHAR;
- return *p = 0;
- }
- noquote:
- *p++ = ch;
- if (++i == size)
- {
- f__lchar = (char *) realloc (f__lchar,
- (unsigned int) (size += BUFSIZE));
- if (f__lchar == NULL)
- errfl (f__elist->cierr, 113, rafail);
- p = f__lchar + i;
- }
- }
- }
- f__ltype = TYCHAR;
- for (i = 0;;)
- {
- while (GETC (ch) != quote && ch != '\n' && ch != EOF && ++i < size)
- *p++ = ch;
- if (i == size)
- {
- newone:
- f__lchar = (char *) realloc (f__lchar,
- (unsigned int) (size += BUFSIZE));
- if (f__lchar == NULL)
- errfl (f__elist->cierr, 113, rafail);
- p = f__lchar + i - 1;
- *p++ = ch;
- }
- else if (ch == EOF)
- return (EOF);
- else if (ch == '\n')
- {
- if (*(p - 1) != '\\')
- continue;
- i--;
- p--;
- if (++i < size)
- *p++ = ch;
- else
- goto newone;
- }
- else if (GETC (ch) == quote)
- {
- if (++i < size)
- *p++ = ch;
- else
- goto newone;
- }
- else
- {
- (void) Ungetc (ch, f__cf);
- *p = 0;
- return (0);
- }
- }
-}
-
-int
-c_le (cilist * a)
-{
- if (f__init != 1)
- f_init ();
- f__init = 3;
- f__fmtbuf = "list io";
- f__curunit = &f__units[a->ciunit];
- f__fmtlen = 7;
- if (a->ciunit >= MXUNIT || a->ciunit < 0)
- err (a->cierr, 101, "stler");
- f__scale = f__recpos = 0;
- f__elist = a;
- if (f__curunit->ufd == NULL && fk_open (SEQ, FMT, a->ciunit))
- err (a->cierr, 102, "lio");
- f__cf = f__curunit->ufd;
- if (!f__curunit->ufmt)
- err (a->cierr, 103, "lio");
- return (0);
-}
-
-int
-l_read (ftnint * number, char *ptr, ftnlen len, ftnint type)
-{
-#define Ptr ((flex *)ptr)
- int i, n, ch;
- doublereal *yy;
- real *xx;
- for (i = 0; i < *number; i++)
- {
- if (f__lquit)
- return (0);
- if (l_eof)
- err (f__elist->ciend, EOF, "list in");
- if (f__lcount == 0)
- {
- f__ltype = 0;
- for (;;)
- {
- GETC (ch);
- switch (ch)
- {
- case EOF:
- err (f__elist->ciend, (EOF), "list in");
- case ' ':
- case '\t':
- case '\n':
- continue;
- case '/':
- f__lquit = 1;
- goto loopend;
- case ',':
- f__lcount = 1;
- goto loopend;
- default:
- (void) Ungetc (ch, f__cf);
- goto rddata;
- }
- }
- }
- rddata:
- switch ((int) type)
- {
- case TYINT1:
- case TYSHORT:
- case TYLONG:
-#ifndef ALLOW_FLOAT_IN_INTEGER_LIST_INPUT
- ERR (l_R (0, 1));
- break;
-#endif
- case TYREAL:
- case TYDREAL:
- ERR (l_R (0, 0));
- break;
-#ifdef TYQUAD
- case TYQUAD:
- n = l_R (0, 2);
- if (n)
- return n;
- break;
-#endif
- case TYCOMPLEX:
- case TYDCOMPLEX:
- ERR (l_C ());
- break;
- case TYLOGICAL1:
- case TYLOGICAL2:
- case TYLOGICAL:
- ERR (l_L ());
- break;
- case TYCHAR:
- ERR (l_CHAR ());
- break;
- }
- while (GETC (ch) == ' ' || ch == '\t');
- if (ch != ',' || f__lcount > 1)
- Ungetc (ch, f__cf);
- loopend:
- if (f__lquit)
- return (0);
- if (f__cf && ferror (f__cf))
- {
- clearerr (f__cf);
- errfl (f__elist->cierr, errno, "list in");
- }
- if (f__ltype == 0)
- goto bump;
- switch ((int) type)
- {
- case TYINT1:
- case TYLOGICAL1:
- Ptr->flchar = (char) f__lx;
- break;
- case TYLOGICAL2:
- case TYSHORT:
- Ptr->flshort = (short) f__lx;
- break;
- case TYLOGICAL:
- case TYLONG:
- Ptr->flint = (ftnint) f__lx;
- break;
-#ifdef Allow_TYQUAD
- case TYQUAD:
- if (!(Ptr->fllongint = f__llx))
- Ptr->fllongint = f__lx;
- break;
-#endif
- case TYREAL:
- Ptr->flreal = f__lx;
- break;
- case TYDREAL:
- Ptr->fldouble = f__lx;
- break;
- case TYCOMPLEX:
- xx = (real *) ptr;
- *xx++ = f__lx;
- *xx = f__ly;
- break;
- case TYDCOMPLEX:
- yy = (doublereal *) ptr;
- *yy++ = f__lx;
- *yy = f__ly;
- break;
- case TYCHAR:
- b_char (f__lchar, ptr, len);
- break;
- }
- bump:
- if (f__lcount > 0)
- f__lcount--;
- ptr += len;
- if (nml_read)
- nml_read++;
- }
- return (0);
-#undef Ptr
-}
-
-integer
-s_rsle (cilist * a)
-{
- int n;
-
- f__reading = 1;
- f__external = 1;
- f__formatted = 1;
- if ((n = c_le (a)))
- return (n);
- f__lioproc = l_read;
- f__lquit = 0;
- f__lcount = 0;
- l_eof = 0;
- if (f__curunit->uwrt && f__nowreading (f__curunit))
- err (a->cierr, errno, "read start");
- if (f__curunit->uend)
- err (f__elist->ciend, (EOF), "read start");
- l_getc = t_getc;
- l_ungetc = un_getc;
- f__doend = xrd_SL;
- return (0);
-}
diff --git a/libf2c/libI77/lwrite.c b/libf2c/libI77/lwrite.c
deleted file mode 100644
index b910ab19872..00000000000
--- a/libf2c/libI77/lwrite.c
+++ /dev/null
@@ -1,277 +0,0 @@
-#include "f2c.h"
-#include "fio.h"
-#include "fmt.h"
-#include "lio.h"
-
-ftnint L_len;
-int f__Aquote;
-
-static void
-donewrec (void)
-{
- if (f__recpos)
- (*f__donewrec) ();
-}
-
-static void
-lwrt_I (longint n)
-{
- char *p;
- int ndigit, sign;
-
- p = f__icvt (n, &ndigit, &sign, 10);
- if (f__recpos + ndigit >= L_len)
- donewrec ();
- PUT (' ');
- if (sign)
- PUT ('-');
- while (*p)
- PUT (*p++);
-}
-static void
-lwrt_L (ftnint n, ftnlen len)
-{
- if (f__recpos + LLOGW >= L_len)
- donewrec ();
- wrt_L ((Uint *) & n, LLOGW, len);
-}
-static void
-lwrt_A (char *p, ftnlen len)
-{
- int a;
- char *p1, *pe;
-
- a = 0;
- pe = p + len;
- if (f__Aquote)
- {
- a = 3;
- if (len > 1 && p[len - 1] == ' ')
- {
- while (--len > 1 && p[len - 1] == ' ');
- pe = p + len;
- }
- p1 = p;
- while (p1 < pe)
- if (*p1++ == '\'')
- a++;
- }
- if (f__recpos + len + a >= L_len)
- donewrec ();
- if (a
-#ifndef OMIT_BLANK_CC
- || !f__recpos
-#endif
- )
- PUT (' ');
- if (a)
- {
- PUT ('\'');
- while (p < pe)
- {
- if (*p == '\'')
- PUT ('\'');
- PUT (*p++);
- }
- PUT ('\'');
- }
- else
- while (p < pe)
- PUT (*p++);
-}
-
-static int
-l_g (char *buf, double n)
-{
-#ifdef Old_list_output
- doublereal absn;
- char *fmt;
-
- absn = n;
- if (absn < 0)
- absn = -absn;
- fmt = LLOW <= absn && absn < LHIGH ? LFFMT : LEFMT;
-#ifdef USE_STRLEN
- sprintf (buf, fmt, n);
- return strlen (buf);
-#else
- return sprintf (buf, fmt, n);
-#endif
-
-#else
- register char *b, c, c1;
-
- b = buf;
- *b++ = ' ';
- if (n < 0)
- {
- *b++ = '-';
- n = -n;
- }
- else
- *b++ = ' ';
- if (n == 0)
- {
- *b++ = '0';
- *b++ = '.';
- *b = 0;
- goto f__ret;
- }
- sprintf (b, LGFMT, n);
- switch (*b)
- {
-#ifndef WANT_LEAD_0
- case '0':
- while (b[0] = b[1])
- b++;
- break;
-#endif
- case 'i':
- case 'I':
- /* Infinity */
- case 'n':
- case 'N':
- /* NaN */
- while (*++b);
- break;
-
- default:
- /* Fortran 77 insists on having a decimal point... */
- for (;; b++)
- switch (*b)
- {
- case 0:
- *b++ = '.';
- *b = 0;
- goto f__ret;
- case '.':
- while (*++b);
- goto f__ret;
- case 'E':
- for (c1 = '.', c = 'E'; (*b = c1); c1 = c, c = *++b);
- goto f__ret;
- }
- }
-f__ret:
- return b - buf;
-#endif
-}
-
-static void
-l_put (register char *s)
-{
- register void (*pn) (int) = f__putn;
- register int c;
-
- while ((c = *s++))
- (*pn) (c);
-}
-
-static void
-lwrt_F (double n)
-{
- char buf[LEFBL];
-
- if (f__recpos + l_g (buf, n) >= L_len)
- donewrec ();
- l_put (buf);
-}
-static void
-lwrt_C (double a, double b)
-{
- char *ba, *bb, bufa[LEFBL], bufb[LEFBL];
- int al, bl;
-
- al = l_g (bufa, a);
- for (ba = bufa; *ba == ' '; ba++)
- --al;
- bl = l_g (bufb, b) + 1; /* intentionally high by 1 */
- for (bb = bufb; *bb == ' '; bb++)
- --bl;
- if (f__recpos + al + bl + 3 >= L_len)
- donewrec ();
-#ifdef OMIT_BLANK_CC
- else
-#endif
- PUT (' ');
- PUT ('(');
- l_put (ba);
- PUT (',');
- if (f__recpos + bl >= L_len)
- {
- (*f__donewrec) ();
-#ifndef OMIT_BLANK_CC
- PUT (' ');
-#endif
- }
- l_put (bb);
- PUT (')');
-}
-
-int
-l_write (ftnint * number, char *ptr, ftnlen len, ftnint type)
-{
-#define Ptr ((flex *)ptr)
- int i;
- longint x;
- double y, z;
- real *xx;
- doublereal *yy;
- for (i = 0; i < *number; i++)
- {
- switch ((int) type)
- {
- default:
- f__fatal (204, "unknown type in lio");
- case TYINT1:
- x = Ptr->flchar;
- goto xint;
- case TYSHORT:
- x = Ptr->flshort;
- goto xint;
-#ifdef Allow_TYQUAD
- case TYQUAD:
- x = Ptr->fllongint;
- goto xint;
-#endif
- case TYLONG:
- x = Ptr->flint;
- xint:lwrt_I (x);
- break;
- case TYREAL:
- y = Ptr->flreal;
- goto xfloat;
- case TYDREAL:
- y = Ptr->fldouble;
- xfloat:lwrt_F (y);
- break;
- case TYCOMPLEX:
- xx = &Ptr->flreal;
- y = *xx++;
- z = *xx;
- goto xcomplex;
- case TYDCOMPLEX:
- yy = &Ptr->fldouble;
- y = *yy++;
- z = *yy;
- xcomplex:
- lwrt_C (y, z);
- break;
- case TYLOGICAL1:
- x = Ptr->flchar;
- goto xlog;
- case TYLOGICAL2:
- x = Ptr->flshort;
- goto xlog;
- case TYLOGICAL:
- x = Ptr->flint;
- xlog:lwrt_L (Ptr->flint, len);
- break;
- case TYCHAR:
- lwrt_A (ptr, len);
- break;
- }
- ptr += len;
- }
- return (0);
-}
diff --git a/libf2c/libI77/makefile.netlib b/libf2c/libI77/makefile.netlib
deleted file mode 100644
index edba1fe8569..00000000000
--- a/libf2c/libI77/makefile.netlib
+++ /dev/null
@@ -1,104 +0,0 @@
-.SUFFIXES: .c .o
-CC = cc
-CFLAGS = -O
-SHELL = /bin/sh
-
-# compile, then strip unnecessary symbols
-.c.o:
- $(CC) -c -DSkip_f2c_Undefs $(CFLAGS) $*.c
- ld -r -x -o $*.xxx $*.o
- mv $*.xxx $*.o
-## Under Solaris (and other systems that do not understand ld -x),
-## omit -x in the ld line above.
-## If your system does not have the ld command, comment out
-## or remove both the ld and mv lines above.
-
-OBJ = Version.o backspace.o close.o dfe.o dolio.o due.o endfile.o err.o \
- fmt.o fmtlib.o ftell_.o iio.o ilnw.o inquire.o lread.o lwrite.o \
- open.o rdfmt.o rewind.o rsfe.o rsli.o rsne.o sfe.o sue.o typesize.o \
- uio.o util.o wref.o wrtfmt.o wsfe.o wsle.o wsne.o xwsne.o
-libI77.a: $(OBJ)
- ar r libI77.a $?
- -ranlib libI77.a
-
-### If your system lacks ranlib, you don't need it; see README.
-
-install: libI77.a
- cp libI77.a /usr/lib/libI77.a
- ranlib /usr/lib/libI77.a
-
-Version.o: Version.c
- $(CC) -c Version.c
-
-# To compile with C++, first "make f2c.h"
-f2c.h: f2ch.add
- cat /usr/include/f2c.h f2ch.add >f2c.h
-
-
-clean:
- rm -f $(OBJ) libI77.a
-
-clobber: clean
- rm -f libI77.a
-
-backspace.o: fio.h
-close.o: fio.h
-dfe.o: fio.h
-dfe.o: fmt.h
-due.o: fio.h
-endfile.o: fio.h rawio.h
-err.o: fio.h rawio.h
-fmt.o: fio.h
-fmt.o: fmt.h
-ftell_.o: fio.h
-iio.o: fio.h
-iio.o: fmt.h
-ilnw.o: fio.h
-ilnw.o: lio.h
-inquire.o: fio.h
-lread.o: fio.h
-lread.o: fmt.h
-lread.o: lio.h
-lread.o: fp.h
-lwrite.o: fio.h
-lwrite.o: fmt.h
-lwrite.o: lio.h
-open.o: fio.h rawio.h
-rdfmt.o: fio.h
-rdfmt.o: fmt.h
-rdfmt.o: fp.h
-rewind.o: fio.h
-rsfe.o: fio.h
-rsfe.o: fmt.h
-rsli.o: fio.h
-rsli.o: lio.h
-rsne.o: fio.h
-rsne.o: lio.h
-sfe.o: fio.h
-sue.o: fio.h
-uio.o: fio.h
-util.o: fio.h
-wref.o: fio.h
-wref.o: fmt.h
-wref.o: fp.h
-wrtfmt.o: fio.h
-wrtfmt.o: fmt.h
-wsfe.o: fio.h
-wsfe.o: fmt.h
-wsle.o: fio.h
-wsle.o: fmt.h
-wsle.o: lio.h
-wsne.o: fio.h
-wsne.o: lio.h
-xwsne.o: fio.h
-xwsne.o: lio.h
-xwsne.o: fmt.h
-
-check:
- xsum Notice README Version.c backspace.c close.c dfe.c dolio.c \
- due.c endfile.c err.c f2ch.add fio.h fmt.c fmt.h fmtlib.c fp.h \
- ftell_.c iio.c ilnw.c inquire.c lio.h lread.c lwrite.c makefile \
- open.c rawio.h rdfmt.c rewind.c rsfe.c rsli.c rsne.c sfe.c sue.c \
- typesize.c uio.c util.c wref.c wrtfmt.c wsfe.c wsle.c wsne.c \
- xwsne.c >zap
- cmp zap libI77.xsum && rm zap || diff libI77.xsum zap
diff --git a/libf2c/libI77/open.c b/libf2c/libI77/open.c
deleted file mode 100644
index ac1e00ec6de..00000000000
--- a/libf2c/libI77/open.c
+++ /dev/null
@@ -1,301 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-#include <string.h>
-#ifndef NON_POSIX_STDIO
-#ifdef MSDOS
-#include "io.h"
-#else
-#include "unistd.h" /* for access */
-#endif
-#endif
-
-#undef abs
-#undef min
-#undef max
-#include <stdlib.h>
-extern int f__canseek (FILE *);
-extern integer f_clos (cllist *);
-
-#ifdef NON_ANSI_RW_MODES
-char *f__r_mode[2] = { "r", "r" };
-char *f__w_mode[4] = { "w", "w", "r+w", "r+w" };
-#else
-char *f__r_mode[2] = { "rb", "r" };
-char *f__w_mode[4] = { "wb", "w", "r+b", "r+" };
-#endif
-
-static char f__buf0[400], *f__buf = f__buf0;
-int f__buflen = (int) sizeof (f__buf0);
-
-static void
-f__bufadj (int n, int c)
-{
- unsigned int len;
- char *nbuf, *s, *t, *te;
-
- if (f__buf == f__buf0)
- f__buflen = 1024;
- while (f__buflen <= n)
- f__buflen <<= 1;
- len = (unsigned int) f__buflen;
- if (len != f__buflen || !(nbuf = (char *) malloc (len)))
- f__fatal (113, "malloc failure");
- s = nbuf;
- t = f__buf;
- te = t + c;
- while (t < te)
- *s++ = *t++;
- if (f__buf != f__buf0)
- free (f__buf);
- f__buf = nbuf;
-}
-
-int
-f__putbuf (int c)
-{
- char *s, *se;
- int n;
-
- if (f__hiwater > f__recpos)
- f__recpos = f__hiwater;
- n = f__recpos + 1;
- if (n >= f__buflen)
- f__bufadj (n, f__recpos);
- s = f__buf;
- se = s + f__recpos;
- if (c)
- *se++ = c;
- *se = 0;
- for (;;)
- {
- fputs (s, f__cf);
- s += strlen (s);
- if (s >= se)
- break; /* normally happens the first time */
- putc (*s++, f__cf);
- }
- return 0;
-}
-
-void
-x_putc (int c)
-{
- if (f__recpos >= f__buflen)
- f__bufadj (f__recpos, f__buflen);
- f__buf[f__recpos++] = c;
-}
-
-#define opnerr(f,m,s) \
- do {if(f) {f__init &= ~2; errno= m;} else opn_err(m,s,a); return(m);} while(0)
-
-static void
-opn_err (int m, char *s, olist * a)
-{
- if (a->ofnm)
- {
- /* supply file name to error message */
- if (a->ofnmlen >= f__buflen)
- f__bufadj ((int) a->ofnmlen, 0);
- g_char (a->ofnm, a->ofnmlen, f__curunit->ufnm = f__buf);
- }
- f__fatal (m, s);
-}
-
-integer
-f_open (olist * a)
-{
- unit *b;
- integer rv;
- char buf[256], *s, *env;
- cllist x;
- int ufmt;
- FILE *tf;
- int fd, len;
-#ifndef NON_UNIX_STDIO
- int n;
-#endif
- if (f__init != 1)
- f_init ();
- f__external = 1;
- if (a->ounit >= MXUNIT || a->ounit < 0)
- err (a->oerr, 101, "open");
- f__curunit = b = &f__units[a->ounit];
- if (b->ufd)
- {
- if (a->ofnm == 0)
- {
- same:if (a->oblnk)
- b->ublnk = *a->oblnk == 'z' || *a->oblnk == 'Z';
- return (0);
- }
-#ifdef NON_UNIX_STDIO
- if (b->ufnm
- && strlen (b->ufnm) == a->ofnmlen
- && !strncmp (b->ufnm, a->ofnm, (unsigned) a->ofnmlen))
- goto same;
-#else
- g_char (a->ofnm, a->ofnmlen, buf);
- if (f__inode (buf, &n) == b->uinode && n == b->udev)
- goto same;
-#endif
- x.cunit = a->ounit;
- x.csta = 0;
- x.cerr = a->oerr;
- if ((rv = f_clos (&x)) != 0)
- return rv;
- }
- b->url = (int) a->orl;
- b->ublnk = a->oblnk && (*a->oblnk == 'z' || *a->oblnk == 'Z');
- if (a->ofm == 0)
- if ((a->oacc) && (*a->oacc == 'D' || *a->oacc == 'd'))
- b->ufmt = 0;
- else
- b->ufmt = 1;
- else if (*a->ofm == 'f' || *a->ofm == 'F')
- b->ufmt = 1;
- else
- b->ufmt = 0;
- ufmt = b->ufmt;
-#ifdef url_Adjust
- if (b->url && !ufmt)
- url_Adjust (b->url);
-#endif
- if (a->ofnm)
- {
- g_char (a->ofnm, a->ofnmlen, buf);
- if (!buf[0])
- opnerr (a->oerr, 107, "open");
- }
- else
- sprintf (buf, "fort.%ld", (long) a->ounit);
- b->uscrtch = 0;
- b->uend = 0;
- b->uwrt = 0;
- b->ufd = 0;
- b->urw = 3;
- switch (a->osta ? *a->osta : 'u')
- {
- case 'o':
- case 'O':
-#ifdef NON_POSIX_STDIO
- if (!(tf = fopen (buf, "r")))
- opnerr (a->oerr, errno, "open");
- fclose (tf);
-#else
- if (access (buf, 0))
- opnerr (a->oerr, errno, "open");
-#endif
- break;
- case 's':
- case 'S':
- b->uscrtch = 1;
-#ifdef HAVE_MKSTEMP /* Allow use of TMPDIR preferentially. */
- env = getenv ("TMPDIR");
- if (!env)
- env = getenv ("TEMP");
- if (!env)
- env = "/tmp";
- len = strlen (env);
- if (len > 256 - (int) sizeof ("/tmp.FXXXXXX"))
- err (a->oerr, 132, "open");
- strcpy (buf, env);
- strcat (buf, "/tmp.FXXXXXX");
- fd = mkstemp (buf);
- if (fd == -1 || close (fd))
- err (a->oerr, 132, "open");
-#else /* ! defined (HAVE_MKSTEMP) */
-#ifdef HAVE_TEMPNAM /* Allow use of TMPDIR preferentially. */
- s = tempnam (0, buf);
- if (strlen (s) >= sizeof (buf))
- err (a->oerr, 132, "open");
- (void) strcpy (buf, s);
- free (s);
-#else /* ! defined (HAVE_TEMPNAM) */
-#ifdef HAVE_TMPNAM
- tmpnam (buf);
-#else
- (void) strcpy (buf, "tmp.FXXXXXX");
- (void) mktemp (buf);
-#endif
-#endif /* ! defined (HAVE_TEMPNAM) */
-#endif /* ! defined (HAVE_MKSTEMP) */
- goto replace;
- case 'n':
- case 'N':
-#ifdef NON_POSIX_STDIO
- if ((tf = fopen (buf, "r")) || (tf = fopen (buf, "a")))
- {
- fclose (tf);
- opnerr (a->oerr, 128, "open");
- }
-#else
- if (!access (buf, 0))
- opnerr (a->oerr, 128, "open");
-#endif
- /* no break */
- case 'r': /* Fortran 90 replace option */
- case 'R':
- replace:
- if ((tf = fopen (buf, f__w_mode[0])))
- fclose (tf);
- }
-
- b->ufnm = (char *) malloc ((unsigned int) (strlen (buf) + 1));
- if (b->ufnm == NULL)
- opnerr (a->oerr, 113, "no space");
- (void) strcpy (b->ufnm, buf);
- if ((s = a->oacc) && b->url)
- ufmt = 0;
- if (!(tf = fopen (buf, f__w_mode[ufmt | 2])))
- {
- if ((tf = fopen (buf, f__r_mode[ufmt])))
- b->urw = 1;
- else if ((tf = fopen (buf, f__w_mode[ufmt])))
- {
- b->uwrt = 1;
- b->urw = 2;
- }
- else
- err (a->oerr, errno, "open");
- }
- b->useek = f__canseek (b->ufd = tf);
-#ifndef NON_UNIX_STDIO
- if ((b->uinode = f__inode (buf, &b->udev)) == -1)
- opnerr (a->oerr, 108, "open");
-#endif
- if (b->useek)
- {
- if (a->orl)
- FSEEK (b->ufd, 0, SEEK_SET);
- else if ((s = a->oacc) && (*s == 'a' || *s == 'A')
- && FSEEK (b->ufd, 0, SEEK_END))
- opnerr (a->oerr, 129, "open");
- }
- return (0);
-}
-
-int
-fk_open (int seq, int fmt, ftnint n)
-{
- char nbuf[10];
- olist a;
- int rtn;
- int save_init;
-
- (void) sprintf (nbuf, "fort.%ld", (long) n);
- a.oerr = 1;
- a.ounit = n;
- a.ofnm = nbuf;
- a.ofnmlen = strlen (nbuf);
- a.osta = NULL;
- a.oacc = seq == SEQ ? "s" : "d";
- a.ofm = fmt == FMT ? "f" : "u";
- a.orl = seq == DIR ? 1 : 0;
- a.oblnk = NULL;
- save_init = f__init;
- f__init &= ~2;
- rtn = f_open (&a);
- f__init = save_init | 1;
- return rtn;
-}
diff --git a/libf2c/libI77/rdfmt.c b/libf2c/libI77/rdfmt.c
deleted file mode 100644
index 8a8818aefb9..00000000000
--- a/libf2c/libI77/rdfmt.c
+++ /dev/null
@@ -1,615 +0,0 @@
-#include "config.h"
-#include <ctype.h>
-#include "f2c.h"
-#include "fio.h"
-
-extern int f__cursor;
-#undef abs
-#undef min
-#undef max
-#include <stdlib.h>
-
-#include "fmt.h"
-#include "fp.h"
-
-static int
-rd_Z (Uint * n, int w, ftnlen len)
-{
- long x[9];
- char *s, *s0, *s1, *se, *t;
- int ch, i, w1, w2;
- static char hex[256];
- static int one = 1;
- int bad = 0;
-
- if (!hex['0'])
- {
- s = "0123456789";
- while ((ch = *s++))
- hex[ch] = ch - '0' + 1;
- s = "ABCDEF";
- while ((ch = *s++))
- hex[ch] = hex[ch + 'a' - 'A'] = ch - 'A' + 11;
- }
- s = s0 = (char *) x;
- s1 = (char *) &x[4];
- se = (char *) &x[8];
- if (len > 4 * (ftnlen) sizeof (long))
- return errno = 117;
- while (w)
- {
- GET (ch);
- if (ch == ',' || ch == '\n')
- break;
- w--;
- if (ch > ' ')
- {
- if (!hex[ch & 0xff])
- bad++;
- *s++ = ch;
- if (s == se)
- {
- /* discard excess characters */
- for (t = s0, s = s1; t < s1;)
- *t++ = *s++;
- s = s1;
- }
- }
- }
- if (bad)
- return errno = 115;
- w = (int) len;
- w1 = s - s0;
- w2 = (w1 + 1) >> 1;
- t = (char *) n;
- if (*(char *) &one)
- {
- /* little endian */
- t += w - 1;
- i = -1;
- }
- else
- i = 1;
- for (; w > w2; t += i, --w)
- *t = 0;
- if (!w)
- return 0;
- if (w < w2)
- s0 = s - (w << 1);
- else if (w1 & 1)
- {
- *t = hex[*s0++ & 0xff] - 1;
- if (!--w)
- return 0;
- t += i;
- }
- do
- {
- *t = (hex[*s0 & 0xff] - 1) << 4 | (hex[s0[1] & 0xff] - 1);
- t += i;
- s0 += 2;
- }
- while (--w);
- return 0;
-}
-
-static int
-rd_I (Uint * n, int w, ftnlen len, register int base)
-{
- int ch, sign;
- longint x = 0;
-
- if (w <= 0)
- goto have_x;
- for (;;)
- {
- GET (ch);
- if (ch != ' ')
- break;
- if (!--w)
- goto have_x;
- }
- sign = 0;
- switch (ch)
- {
- case ',':
- case '\n':
- w = 0;
- goto have_x;
- case '-':
- sign = 1;
- case '+':
- break;
- default:
- if (ch >= '0' && ch <= '9')
- {
- x = ch - '0';
- break;
- }
- goto have_x;
- }
- while (--w)
- {
- GET (ch);
- if (ch >= '0' && ch <= '9')
- {
- x = x * base + ch - '0';
- continue;
- }
- if (ch != ' ')
- {
- if (ch == '\n' || ch == ',')
- w = 0;
- break;
- }
- if (f__cblank)
- x *= base;
- }
- if (sign)
- x = -x;
-have_x:
- if (len == sizeof (integer))
- n->il = x;
- else if (len == sizeof (char))
- n->ic = (char) x;
-#ifdef Allow_TYQUAD
- else if (len == sizeof (longint))
- n->ili = x;
-#endif
- else
- n->is = (short) x;
- if (w)
- {
- while (--w)
- GET (ch);
- return errno = 115;
- }
- return 0;
-}
-
-static int
-rd_L (ftnint * n, int w, ftnlen len)
-{
- int ch, dot, lv;
-
- if (w <= 0)
- goto bad;
- for (;;)
- {
- GET (ch);
- --w;
- if (ch != ' ')
- break;
- if (!w)
- goto bad;
- }
- dot = 0;
-retry:
- switch (ch)
- {
- case '.':
- if (dot++ || !w)
- goto bad;
- GET (ch);
- --w;
- goto retry;
- case 't':
- case 'T':
- lv = 1;
- break;
- case 'f':
- case 'F':
- lv = 0;
- break;
- default:
- bad:
- for (; w > 0; --w)
- GET (ch);
- /* no break */
- case ',':
- case '\n':
- return errno = 116;
- }
- /* The switch statement that was here
- didn't cut it: It broke down for targets
- where sizeof(char) == sizeof(short). */
- if (len == sizeof (char))
- *(char *) n = (char) lv;
- else if (len == sizeof (short))
- *(short *) n = (short) lv;
- else
- *n = lv;
- while (w-- > 0)
- {
- GET (ch);
- if (ch == ',' || ch == '\n')
- break;
- }
- return 0;
-}
-
-static int
-rd_F (ufloat * p, int w, int d, ftnlen len)
-{
- char s[FMAX + EXPMAXDIGS + 4];
- register int ch;
- register char *sp, *spe, *sp1;
- double x;
- int scale1, se;
- long e, exp;
-
- sp1 = sp = s;
- spe = sp + FMAX;
- exp = -d;
- x = 0.;
-
- do
- {
- GET (ch);
- w--;
- }
- while (ch == ' ' && w);
- switch (ch)
- {
- case '-':
- *sp++ = ch;
- sp1++;
- spe++;
- case '+':
- if (!w)
- goto zero;
- --w;
- GET (ch);
- }
- while (ch == ' ')
- {
- blankdrop:
- if (!w--)
- goto zero;
- GET (ch);
- }
- while (ch == '0')
- {
- if (!w--)
- goto zero;
- GET (ch);
- }
- if (ch == ' ' && f__cblank)
- goto blankdrop;
- scale1 = f__scale;
- while (isdigit (ch))
- {
- digloop1:
- if (sp < spe)
- *sp++ = ch;
- else
- ++exp;
- digloop1e:
- if (!w--)
- goto done;
- GET (ch);
- }
- if (ch == ' ')
- {
- if (f__cblank)
- {
- ch = '0';
- goto digloop1;
- }
- goto digloop1e;
- }
- if (ch == '.')
- {
- exp += d;
- if (!w--)
- goto done;
- GET (ch);
- if (sp == sp1)
- { /* no digits yet */
- while (ch == '0')
- {
- skip01:
- --exp;
- skip0:
- if (!w--)
- goto done;
- GET (ch);
- }
- if (ch == ' ')
- {
- if (f__cblank)
- goto skip01;
- goto skip0;
- }
- }
- while (isdigit (ch))
- {
- digloop2:
- if (sp < spe)
- {
- *sp++ = ch;
- --exp;
- }
- digloop2e:
- if (!w--)
- goto done;
- GET (ch);
- }
- if (ch == ' ')
- {
- if (f__cblank)
- {
- ch = '0';
- goto digloop2;
- }
- goto digloop2e;
- }
- }
- switch (ch)
- {
- default:
- break;
- case '-':
- se = 1;
- goto signonly;
- case '+':
- se = 0;
- goto signonly;
- case 'e':
- case 'E':
- case 'd':
- case 'D':
- if (!w--)
- goto bad;
- GET (ch);
- while (ch == ' ')
- {
- if (!w--)
- goto bad;
- GET (ch);
- }
- se = 0;
- switch (ch)
- {
- case '-':
- se = 1;
- case '+':
- signonly:
- if (!w--)
- goto bad;
- GET (ch);
- }
- while (ch == ' ')
- {
- if (!w--)
- goto bad;
- GET (ch);
- }
- if (!isdigit (ch))
- goto bad;
-
- e = ch - '0';
- for (;;)
- {
- if (!w--)
- {
- ch = '\n';
- break;
- }
- GET (ch);
- if (!isdigit (ch))
- {
- if (ch == ' ')
- {
- if (f__cblank)
- ch = '0';
- else
- continue;
- }
- else
- break;
- }
- e = 10 * e + ch - '0';
- if (e > EXPMAX && sp > sp1)
- goto bad;
- }
- if (se)
- exp -= e;
- else
- exp += e;
- scale1 = 0;
- }
- switch (ch)
- {
- case '\n':
- case ',':
- break;
- default:
- bad:
- return (errno = 115);
- }
-done:
- if (sp > sp1)
- {
- while (*--sp == '0')
- ++exp;
- if (exp -= scale1)
- sprintf (sp + 1, "e%ld", exp);
- else
- sp[1] = 0;
- x = atof (s);
- }
-zero:
- if (len == sizeof (real))
- p->pf = x;
- else
- p->pd = x;
- return (0);
-}
-
-
-static int
-rd_A (char *p, ftnlen len)
-{
- int i, ch;
- for (i = 0; i < len; i++)
- {
- GET (ch);
- *p++ = VAL (ch);
- }
- return (0);
-}
-static int
-rd_AW (char *p, int w, ftnlen len)
-{
- int i, ch;
- if (w >= len)
- {
- for (i = 0; i < w - len; i++)
- GET (ch);
- for (i = 0; i < len; i++)
- {
- GET (ch);
- *p++ = VAL (ch);
- }
- return (0);
- }
- for (i = 0; i < w; i++)
- {
- GET (ch);
- *p++ = VAL (ch);
- }
- for (i = 0; i < len - w; i++)
- *p++ = ' ';
- return (0);
-}
-static int
-rd_H (int n, char *s)
-{
- int i, ch;
- for (i = 0; i < n; i++)
- if ((ch = (*f__getn) ()) < 0)
- return (ch);
- else
- *s++ = ch == '\n' ? ' ' : ch;
- return (1);
-}
-static int
-rd_POS (char *s)
-{
- char quote;
- int ch;
- quote = *s++;
- for (; *s; s++)
- if (*s == quote && *(s + 1) != quote)
- break;
- else if ((ch = (*f__getn) ()) < 0)
- return (ch);
- else
- *s = ch == '\n' ? ' ' : ch;
- return (1);
-}
-
-int
-rd_ed (struct syl * p, char *ptr, ftnlen len)
-{
- int ch;
- for (; f__cursor > 0; f__cursor--)
- if ((ch = (*f__getn) ()) < 0)
- return (ch);
- if (f__cursor < 0)
- {
- if (f__recpos + f__cursor < 0) /*err(elist->cierr,110,"fmt") */
- f__cursor = -f__recpos; /* is this in the standard? */
- if (f__external == 0)
- {
- extern char *f__icptr;
- f__icptr += f__cursor;
- }
- else if (f__curunit && f__curunit->useek)
- FSEEK (f__cf, (off_t) f__cursor, SEEK_CUR);
- else
- err (f__elist->cierr, 106, "fmt");
- f__recpos += f__cursor;
- f__cursor = 0;
- }
- switch (p->op)
- {
- default:
- fprintf (stderr, "rd_ed, unexpected code: %d\n", p->op);
- sig_die (f__fmtbuf, 1);
- case IM:
- case I:
- ch = rd_I ((Uint *) ptr, p->p1, len, 10);
- break;
-
- /* O and OM don't work right for character, double, complex, */
- /* or doublecomplex, and they differ from Fortran 90 in */
- /* showing a minus sign for negative values. */
-
- case OM:
- case O:
- ch = rd_I ((Uint *) ptr, p->p1, len, 8);
- break;
- case L:
- ch = rd_L ((ftnint *) ptr, p->p1, len);
- break;
- case A:
- ch = rd_A (ptr, len);
- break;
- case AW:
- ch = rd_AW (ptr, p->p1, len);
- break;
- case E:
- case EE:
- case D:
- case G:
- case GE:
- case F:
- ch = rd_F ((ufloat *) ptr, p->p1, p->p2.i[0], len);
- break;
-
- /* Z and ZM assume 8-bit bytes. */
-
- case ZM:
- case Z:
- ch = rd_Z ((Uint *) ptr, p->p1, len);
- break;
- }
- if (ch == 0)
- return (ch);
- else if (ch == EOF)
- return (EOF);
- if (f__cf)
- clearerr (f__cf);
- return (errno);
-}
-
-int
-rd_ned (struct syl * p)
-{
- switch (p->op)
- {
- default:
- fprintf (stderr, "rd_ned, unexpected code: %d\n", p->op);
- sig_die (f__fmtbuf, 1);
- case APOS:
- return (rd_POS (p->p2.s));
- case H:
- return (rd_H (p->p1, p->p2.s));
- case SLASH:
- return ((*f__donewrec) ());
- case TR:
- case X:
- f__cursor += p->p1;
- return (1);
- case T:
- f__cursor = p->p1 - f__recpos - 1;
- return (1);
- case TL:
- f__cursor -= p->p1;
- if (f__cursor < -f__recpos) /* TL1000, 1X */
- f__cursor = -f__recpos;
- return (1);
- }
-}
diff --git a/libf2c/libI77/rewind.c b/libf2c/libI77/rewind.c
deleted file mode 100644
index d7a9b766192..00000000000
--- a/libf2c/libI77/rewind.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-integer
-f_rew (alist * a)
-{
- unit *b;
- if (f__init & 2)
- f__fatal (131, "I/O recursion");
- if (a->aunit >= MXUNIT || a->aunit < 0)
- err (a->aerr, 101, "rewind");
- b = &f__units[a->aunit];
- if (b->ufd == NULL || b->uwrt == 3)
- return (0);
- if (!b->useek)
- err (a->aerr, 106, "rewind");
- if (b->uwrt)
- {
- (void) t_runc (a);
- b->uwrt = 3;
- }
- FSEEK (b->ufd, 0, SEEK_SET);
- b->uend = 0;
- return (0);
-}
diff --git a/libf2c/libI77/rsfe.c b/libf2c/libI77/rsfe.c
deleted file mode 100644
index 0dcda392ce0..00000000000
--- a/libf2c/libI77/rsfe.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/* read sequential formatted external */
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-#include "fmt.h"
-
-int
-xrd_SL (void)
-{
- int ch;
- if (!f__curunit->uend)
- while ((ch = getc (f__cf)) != '\n')
- if (ch == EOF)
- {
- f__curunit->uend = 1;
- break;
- }
- f__cursor = f__recpos = 0;
- return (1);
-}
-
-int
-x_getc (void)
-{
- int ch;
- if (f__curunit->uend)
- return (EOF);
- ch = getc (f__cf);
- if (ch != EOF && ch != '\n')
- {
- f__recpos++;
- return (ch);
- }
- if (ch == '\n')
- {
- (void) ungetc (ch, f__cf);
- return (ch);
- }
- if (f__curunit->uend || feof (f__cf))
- {
- errno = 0;
- f__curunit->uend = 1;
- return (-1);
- }
- return (-1);
-}
-
-int
-x_endp (void)
-{
- xrd_SL ();
- return f__curunit->uend == 1 ? EOF : 0;
-}
-
-int
-x_rev (void)
-{
- (void) xrd_SL ();
- return (0);
-}
-
-integer
-s_rsfe (cilist * a) /* start */
-{
- int n;
- if (f__init != 1)
- f_init ();
- f__init = 3;
- f__reading = 1;
- f__sequential = 1;
- f__formatted = 1;
- f__external = 1;
- if ((n = c_sfe (a)))
- return (n);
- f__elist = a;
- f__cursor = f__recpos = 0;
- f__scale = 0;
- f__fmtbuf = a->cifmt;
- f__curunit = &f__units[a->ciunit];
- f__cf = f__curunit->ufd;
- if (pars_f (f__fmtbuf) < 0)
- err (a->cierr, 100, "startio");
- f__getn = x_getc;
- f__doed = rd_ed;
- f__doned = rd_ned;
- fmt_bg ();
- f__doend = x_endp;
- f__donewrec = xrd_SL;
- f__dorevert = x_rev;
- f__cblank = f__curunit->ublnk;
- f__cplus = 0;
- if (f__curunit->uwrt && f__nowreading (f__curunit))
- err (a->cierr, errno, "read start");
- if (f__curunit->uend)
- err (f__elist->ciend, (EOF), "read start");
- return (0);
-}
diff --git a/libf2c/libI77/rsli.c b/libf2c/libI77/rsli.c
deleted file mode 100644
index c07632a0fca..00000000000
--- a/libf2c/libI77/rsli.c
+++ /dev/null
@@ -1,99 +0,0 @@
-#include "f2c.h"
-#include "fio.h"
-#include "lio.h"
-#include "fmt.h" /* for f__doend */
-
-extern flag f__lquit;
-extern int f__lcount;
-extern char *f__icptr;
-extern char *f__icend;
-extern icilist *f__svic;
-extern int f__icnum, f__recpos;
-
-static int
-i_getc (void)
-{
- if (f__recpos >= f__svic->icirlen)
- {
- if (f__recpos++ == f__svic->icirlen)
- return '\n';
- z_rnew ();
- }
- f__recpos++;
- if (f__icptr >= f__icend)
- return EOF;
- return (*f__icptr++);
-}
-
-static int
-i_ungetc (int ch __attribute__ ((__unused__)),
- FILE * f __attribute__ ((__unused__)))
-{
- if (--f__recpos == f__svic->icirlen)
- return '\n';
- if (f__recpos < -1)
- err (f__svic->icierr, 110, "recend");
- /* *--icptr == ch, and icptr may point to read-only memory */
- return *--f__icptr /* = ch */ ;
-}
-
-static void
-c_lir (icilist * a)
-{
- extern int l_eof;
- if (f__init != 1)
- f_init ();
- f__init = 3;
- f__reading = 1;
- f__external = 0;
- f__formatted = 1;
- f__svic = a;
- L_len = a->icirlen;
- f__recpos = -1;
- f__icnum = f__recpos = 0;
- f__cursor = 0;
- l_getc = i_getc;
- l_ungetc = i_ungetc;
- l_eof = 0;
- f__icptr = a->iciunit;
- f__icend = f__icptr + a->icirlen * a->icirnum;
- f__cf = 0;
- f__curunit = 0;
- f__elist = (cilist *) a;
-}
-
-
-integer
-s_rsli (icilist * a)
-{
- f__lioproc = l_read;
- f__lquit = 0;
- f__lcount = 0;
- c_lir (a);
- f__doend = 0;
- return (0);
-}
-
-integer
-e_rsli (void)
-{
- f__init = 1;
- return 0;
-}
-
-extern int x_rsne (cilist *);
-
-integer
-s_rsni (icilist * a)
-{
- extern int nml_read;
- integer rv;
- cilist ca;
- ca.ciend = a->iciend;
- ca.cierr = a->icierr;
- ca.cifmt = a->icifmt;
- c_lir (a);
- rv = x_rsne (&ca);
- nml_read = 0;
- return rv;
-}
diff --git a/libf2c/libI77/rsne.c b/libf2c/libI77/rsne.c
deleted file mode 100644
index f233a4ad9f8..00000000000
--- a/libf2c/libI77/rsne.c
+++ /dev/null
@@ -1,599 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-#include "lio.h"
-
-#define MAX_NL_CACHE 3 /* maximum number of namelist hash tables to cache */
-#define MAXDIM 20 /* maximum number of subscripts */
-
-struct dimen
-{
- ftnlen extent;
- ftnlen curval;
- ftnlen delta;
- ftnlen stride;
-};
-typedef struct dimen dimen;
-
-struct hashentry
-{
- struct hashentry *next;
- char *name;
- Vardesc *vd;
-};
-typedef struct hashentry hashentry;
-
-struct hashtab
-{
- struct hashtab *next;
- Namelist *nl;
- int htsize;
- hashentry *tab[1];
-};
-typedef struct hashtab hashtab;
-
-static hashtab *nl_cache;
-static int n_nlcache;
-static hashentry **zot;
-static int colonseen;
-extern ftnlen f__typesize[];
-
-extern flag f__lquit;
-extern int f__lcount, nml_read;
-extern int t_getc (void);
-
-#undef abs
-#undef min
-#undef max
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef ungetc
-static int
-un_getc (int x, FILE * f__cf)
-{
- return ungetc (x, f__cf);
-}
-#else
-#define un_getc ungetc
-extern int ungetc (int, FILE *); /* for systems with a buggy stdio.h */
-#endif
-
-static Vardesc *
-hash (hashtab * ht, register char *s)
-{
- register int c, x;
- register hashentry *h;
- char *s0 = s;
-
- for (x = 0; (c = *s++); x = x & 0x4000 ? ((x << 1) & 0x7fff) + 1 : x << 1)
- x += c;
- for (h = *(zot = ht->tab + x % ht->htsize); h; h = h->next)
- if (!strcmp (s0, h->name))
- return h->vd;
- return 0;
-}
-
-hashtab *
-mk_hashtab (Namelist * nl)
-{
- int nht, nv;
- hashtab *ht;
- Vardesc *v, **vd, **vde;
- hashentry *he;
-
- hashtab **x, **x0, *y;
- for (x = &nl_cache; (y = *x); x0 = x, x = &y->next)
- if (nl == y->nl)
- return y;
- if (n_nlcache >= MAX_NL_CACHE)
- {
- /* discard least recently used namelist hash table */
- y = *x0;
- free ((char *) y->next);
- y->next = 0;
- }
- else
- n_nlcache++;
- nv = nl->nvars;
- if (nv >= 0x4000)
- nht = 0x7fff;
- else
- {
- for (nht = 1; nht < nv; nht <<= 1);
- nht += nht - 1;
- }
- ht = (hashtab *) malloc (sizeof (hashtab) + (nht - 1) * sizeof (hashentry *)
- + nv * sizeof (hashentry));
- if (!ht)
- return 0;
- he = (hashentry *) & ht->tab[nht];
- ht->nl = nl;
- ht->htsize = nht;
- ht->next = nl_cache;
- nl_cache = ht;
- memset ((char *) ht->tab, 0, nht * sizeof (hashentry *));
- vd = nl->vars;
- vde = vd + nv;
- while (vd < vde)
- {
- v = *vd++;
- if (!hash (ht, v->name))
- {
- he->next = *zot;
- *zot = he;
- he->name = v->name;
- he->vd = v;
- he++;
- }
- }
- return ht;
-}
-
-static char Alpha[256], Alphanum[256];
-
-static void
-nl_init (void)
-{
- register char *s;
- register int c;
-
- for (s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; (c = *s++);)
- Alpha[c]
- = Alphanum[c] = Alpha[c + 'a' - 'A'] = Alphanum[c + 'a' - 'A'] = c;
- for (s = "0123456789_"; (c = *s++);)
- Alphanum[c] = c;
-}
-
-#define GETC(x) (x=(*l_getc)())
-#define Ungetc(x,y) (*l_ungetc)(x,y)
-
-static int
-getname (register char *s, int slen)
-{
- register char *se = s + slen - 1;
- register int ch;
-
- GETC (ch);
- if (!(*s++ = Alpha[ch & 0xff]))
- {
- if (ch != EOF)
- ch = 115;
- errfl (f__elist->cierr, ch, "namelist read");
- }
- while ((*s = Alphanum[GETC (ch) & 0xff]))
- if (s < se)
- s++;
- if (ch == EOF)
- err (f__elist->cierr, EOF, "namelist read");
- if (ch > ' ')
- Ungetc (ch, f__cf);
- return *s = 0;
-}
-
-static int
-getnum (int *chp, ftnlen * val)
-{
- register int ch, sign;
- register ftnlen x;
-
- while (GETC (ch) <= ' ' && ch >= 0);
- if (ch == '-')
- {
- sign = 1;
- GETC (ch);
- }
- else
- {
- sign = 0;
- if (ch == '+')
- GETC (ch);
- }
- x = ch - '0';
- if (x < 0 || x > 9)
- return 115;
- while (GETC (ch) >= '0' && ch <= '9')
- x = 10 * x + ch - '0';
- while (ch <= ' ' && ch >= 0)
- GETC (ch);
- if (ch == EOF)
- return EOF;
- *val = sign ? -x : x;
- *chp = ch;
- return 0;
-}
-
-static int
-getdimen (int *chp, dimen * d, ftnlen delta, ftnlen extent, ftnlen * x1)
-{
- register int k;
- ftnlen x2, x3;
-
- if ((k = getnum (chp, x1)))
- return k;
- x3 = 1;
- if (*chp == ':')
- {
- if ((k = getnum (chp, &x2)))
- return k;
- x2 -= *x1;
- if (*chp == ':')
- {
- if ((k = getnum (chp, &x3)))
- return k;
- if (!x3)
- return 123;
- x2 /= x3;
- colonseen = 1;
- }
- if (x2 < 0 || x2 >= extent)
- return 123;
- d->extent = x2 + 1;
- }
- else
- d->extent = 1;
- d->curval = 0;
- d->delta = delta;
- d->stride = x3;
- return 0;
-}
-
-#ifndef No_Namelist_Questions
-static void
-print_ne (cilist * a)
-{
- flag intext = f__external;
- int rpsave = f__recpos;
- FILE *cfsave = f__cf;
- unit *usave = f__curunit;
- cilist t;
- t = *a;
- t.ciunit = 6;
- s_wsne (&t);
- fflush (f__cf);
- f__external = intext;
- f__reading = 1;
- f__recpos = rpsave;
- f__cf = cfsave;
- f__curunit = usave;
- f__elist = a;
-}
-#endif
-
-static char where0[] = "namelist read start ";
-
-int
-x_rsne (cilist * a)
-{
- int ch, got1, k, n, nd, quote, readall;
- Namelist *nl;
- static char where[] = "namelist read";
- char buf[64];
- hashtab *ht;
- Vardesc *v;
- dimen *dn, *dn0, *dn1;
- ftnlen *dims, *dims1;
- ftnlen b, b0, b1, ex, no, nomax, size, span;
- ftnint no1, type;
- char *vaddr;
- long iva, ivae;
- dimen dimens[MAXDIM], substr;
-
- if (!Alpha['a'])
- nl_init ();
- f__reading = 1;
- f__formatted = 1;
- got1 = 0;
-top:
- for (;;)
- switch (GETC (ch))
- {
- case EOF:
- eof:
- err (a->ciend, (EOF), where0);
- case '&':
- case '$':
- goto have_amp;
-#ifndef No_Namelist_Questions
- case '?':
- print_ne (a);
- continue;
-#endif
- default:
- if (ch <= ' ' && ch >= 0)
- continue;
-#ifndef No_Namelist_Comments
- while (GETC (ch) != '\n')
- if (ch == EOF)
- goto eof;
-#else
- errfl (a->cierr, 115, where0);
-#endif
- }
-have_amp:
- if ((ch = getname (buf, sizeof (buf))))
- return ch;
- nl = (Namelist *) a->cifmt;
- if (strcmp (buf, nl->name))
-#ifdef No_Bad_Namelist_Skip
- errfl (a->cierr, 118, where0);
-#else
- {
- fprintf (stderr,
- "Skipping namelist \"%s\": seeking namelist \"%s\".\n",
- buf, nl->name);
- fflush (stderr);
- for (;;)
- switch (GETC (ch))
- {
- case EOF:
- err (a->ciend, EOF, where0);
- case '/':
- case '&':
- case '$':
- if (f__external)
- e_rsle ();
- else
- z_rnew ();
- goto top;
- case '"':
- case '\'':
- quote = ch;
- more_quoted:
- while (GETC (ch) != quote)
- if (ch == EOF)
- err (a->ciend, EOF, where0);
- if (GETC (ch) == quote)
- goto more_quoted;
- Ungetc (ch, f__cf);
- default:
- continue;
- }
- }
-#endif
- ht = mk_hashtab (nl);
- if (!ht)
- errfl (f__elist->cierr, 113, where0);
- for (;;)
- {
- for (;;)
- switch (GETC (ch))
- {
- case EOF:
- if (got1)
- return 0;
- err (a->ciend, EOF, where0);
- case '/':
- case '$':
- case '&':
- return 0;
- default:
- if ((ch <= ' ' && ch >= 0) || ch == ',')
- continue;
- Ungetc (ch, f__cf);
- if ((ch = getname (buf, sizeof (buf))))
- return ch;
- goto havename;
- }
- havename:
- v = hash (ht, buf);
- if (!v)
- errfl (a->cierr, 119, where);
- while (GETC (ch) <= ' ' && ch >= 0);
- vaddr = v->addr;
- type = v->type;
- if (type < 0)
- {
- size = -type;
- type = TYCHAR;
- }
- else
- size = f__typesize[type];
- ivae = size;
- iva = readall = 0;
- if (ch == '(' /*) */ )
- {
- dn = dimens;
- if (!(dims = v->dims))
- {
- if (type != TYCHAR)
- errfl (a->cierr, 122, where);
- if ((k = getdimen (&ch, dn, (ftnlen) size, (ftnlen) size, &b)))
- errfl (a->cierr, k, where);
- if (ch != ')')
- errfl (a->cierr, 115, where);
- b1 = dn->extent;
- if (--b < 0 || b + b1 > size)
- return 124;
- iva += b;
- size = b1;
- while (GETC (ch) <= ' ' && ch >= 0);
- goto scalar;
- }
- nd = (int) dims[0];
- nomax = span = dims[1];
- ivae = iva + size * nomax;
- colonseen = 0;
- if ((k = getdimen (&ch, dn, size, nomax, &b)))
- errfl (a->cierr, k, where);
- no = dn->extent;
- b0 = dims[2];
- dims1 = dims += 3;
- ex = 1;
- for (n = 1; n++ < nd; dims++)
- {
- if (ch != ',')
- errfl (a->cierr, 115, where);
- dn1 = dn + 1;
- span /= *dims;
- if ((k = getdimen (&ch, dn1, dn->delta ** dims, span, &b1)))
- errfl (a->cierr, k, where);
- ex *= *dims;
- b += b1 * ex;
- no *= dn1->extent;
- dn = dn1;
- }
- if (ch != ')')
- errfl (a->cierr, 115, where);
- readall = 1 - colonseen;
- b -= b0;
- if (b < 0 || b >= nomax)
- errfl (a->cierr, 125, where);
- iva += size * b;
- dims = dims1;
- while (GETC (ch) <= ' ' && ch >= 0);
- no1 = 1;
- dn0 = dimens;
- if (type == TYCHAR && ch == '(' /*) */ )
- {
- if ((k = getdimen (&ch, &substr, size, size, &b)))
- errfl (a->cierr, k, where);
- if (ch != ')')
- errfl (a->cierr, 115, where);
- b1 = substr.extent;
- if (--b < 0 || b + b1 > size)
- return 124;
- iva += b;
- b0 = size;
- size = b1;
- while (GETC (ch) <= ' ' && ch >= 0);
- if (b1 < b0)
- goto delta_adj;
- }
- if (readall)
- goto delta_adj;
- for (; dn0 < dn; dn0++)
- {
- if (dn0->extent != *dims++ || dn0->stride != 1)
- break;
- no1 *= dn0->extent;
- }
- if (dn0 == dimens && dimens[0].stride == 1)
- {
- no1 = dimens[0].extent;
- dn0++;
- }
- delta_adj:
- ex = 0;
- for (dn1 = dn0; dn1 <= dn; dn1++)
- ex += (dn1->extent - 1) * (dn1->delta *= dn1->stride);
- for (dn1 = dn; dn1 > dn0; dn1--)
- {
- ex -= (dn1->extent - 1) * dn1->delta;
- dn1->delta -= ex;
- }
- }
- else if ((dims = v->dims))
- {
- no = no1 = dims[1];
- ivae = iva + no * size;
- }
- else
- scalar:
- no = no1 = 1;
- if (ch != '=')
- errfl (a->cierr, 115, where);
- got1 = nml_read = 1;
- f__lcount = 0;
- readloop:
- for (;;)
- {
- if (iva >= ivae || iva < 0)
- {
- f__lquit = 1;
- goto mustend;
- }
- else if (iva + no1 * size > ivae)
- no1 = (ivae - iva) / size;
- f__lquit = 0;
- if ((k = l_read (&no1, vaddr + iva, size, type)))
- return k;
- if (f__lquit == 1)
- return 0;
- if (readall)
- {
- iva += dn0->delta;
- if (f__lcount > 0)
- {
- ftnint no2 = (ivae - iva) / size;
- if (no2 > f__lcount)
- no2 = f__lcount;
- if ((k = l_read (&no2, vaddr + iva, size, type)))
- return k;
- iva += no2 * dn0->delta;
- }
- }
- mustend:
- GETC (ch);
- if (readall)
- {
- if (iva >= ivae)
- readall = 0;
- else
- for (;;)
- {
- switch (ch)
- {
- case ' ':
- case '\t':
- case '\n':
- GETC (ch);
- continue;
- }
- break;
- }
- }
- if (ch == '/' || ch == '$' || ch == '&')
- {
- f__lquit = 1;
- return 0;
- }
- else if (f__lquit)
- {
- while (ch <= ' ' && ch >= 0)
- GETC (ch);
- Ungetc (ch, f__cf);
- if (!Alpha[ch & 0xff] && ch >= 0)
- errfl (a->cierr, 125, where);
- break;
- }
- Ungetc (ch, f__cf);
- if (readall && !Alpha[ch & 0xff])
- goto readloop;
- if ((no -= no1) <= 0)
- break;
- for (dn1 = dn0; dn1 <= dn; dn1++)
- {
- if (++dn1->curval < dn1->extent)
- {
- iva += dn1->delta;
- goto readloop;
- }
- dn1->curval = 0;
- }
- break;
- }
- }
-}
-
-integer
-s_rsne (cilist * a)
-{
- extern int l_eof;
- int n;
-
- f__external = 1;
- l_eof = 0;
- if ((n = c_le (a)))
- return n;
- if (f__curunit->uwrt && f__nowreading (f__curunit))
- err (a->cierr, errno, where0);
- l_getc = t_getc;
- l_ungetc = un_getc;
- f__doend = xrd_SL;
- n = x_rsne (a);
- nml_read = 0;
- if (n)
- return n;
- return e_rsle ();
-}
diff --git a/libf2c/libI77/sfe.c b/libf2c/libI77/sfe.c
deleted file mode 100644
index 8f05e480662..00000000000
--- a/libf2c/libI77/sfe.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* sequential formatted external common routines*/
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-
-extern char *f__fmtbuf;
-
-integer
-e_rsfe (void)
-{
- int n;
- f__init = 1;
- n = en_fio ();
- f__fmtbuf = NULL;
- return (n);
-}
-
-int
-c_sfe (cilist * a) /* check */
-{
- unit *p;
- if (a->ciunit >= MXUNIT || a->ciunit < 0)
- err (a->cierr, 101, "startio");
- p = &f__units[a->ciunit];
- if (p->ufd == NULL && fk_open (SEQ, FMT, a->ciunit))
- err (a->cierr, 114, "sfe");
- if (!p->ufmt)
- err (a->cierr, 102, "sfe");
- return (0);
-}
-
-integer
-e_wsfe (void)
-{
- int n;
- f__init = 1;
- n = en_fio ();
- f__fmtbuf = NULL;
-#ifdef ALWAYS_FLUSH
- if (!n && fflush (f__cf))
- err (f__elist->cierr, errno, "write end");
-#endif
- return n;
-}
diff --git a/libf2c/libI77/sue.c b/libf2c/libI77/sue.c
deleted file mode 100644
index a20df66d31f..00000000000
--- a/libf2c/libI77/sue.c
+++ /dev/null
@@ -1,93 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-extern uiolen f__reclen;
-off_t f__recloc;
-
-int
-c_sue (cilist * a)
-{
- f__external = f__sequential = 1;
- f__formatted = 0;
- f__curunit = &f__units[a->ciunit];
- if (a->ciunit >= MXUNIT || a->ciunit < 0)
- err (a->cierr, 101, "startio");
- f__elist = a;
- if (f__curunit->ufd == NULL && fk_open (SEQ, UNF, a->ciunit))
- err (a->cierr, 114, "sue");
- f__cf = f__curunit->ufd;
- if (f__curunit->ufmt)
- err (a->cierr, 103, "sue");
- if (!f__curunit->useek)
- err (a->cierr, 103, "sue");
- return (0);
-}
-
-integer
-s_rsue (cilist * a)
-{
- int n;
- if (f__init != 1)
- f_init ();
- f__init = 3;
- f__reading = 1;
- if ((n = c_sue (a)))
- return (n);
- f__recpos = 0;
- if (f__curunit->uwrt && f__nowreading (f__curunit))
- err (a->cierr, errno, "read start");
- if (fread ((char *) &f__reclen, sizeof (uiolen), 1, f__cf) != 1)
- {
- if (feof (f__cf))
- {
- f__curunit->uend = 1;
- err (a->ciend, EOF, "start");
- }
- clearerr (f__cf);
- err (a->cierr, errno, "start");
- }
- return (0);
-}
-
-integer
-s_wsue (cilist * a)
-{
- int n;
- if (f__init != 1)
- f_init ();
- f__init = 3;
- if ((n = c_sue (a)))
- return (n);
- f__reading = 0;
- f__reclen = 0;
- if (f__curunit->uwrt != 1 && f__nowwriting (f__curunit))
- err (a->cierr, errno, "write start");
- f__recloc = FTELL (f__cf);
- FSEEK (f__cf, (off_t) sizeof (uiolen), SEEK_CUR);
- return (0);
-}
-
-integer
-e_wsue (void)
-{
- off_t loc;
- f__init = 1;
- fwrite ((char *) &f__reclen, sizeof (uiolen), 1, f__cf);
-#ifdef ALWAYS_FLUSH
- if (fflush (f__cf))
- err (f__elist->cierr, errno, "write end");
-#endif
- loc = FTELL (f__cf);
- FSEEK (f__cf, f__recloc, SEEK_SET);
- fwrite ((char *) &f__reclen, sizeof (uiolen), 1, f__cf);
- FSEEK (f__cf, loc, SEEK_SET);
- return (0);
-}
-
-integer
-e_rsue (void)
-{
- f__init = 1;
- FSEEK (f__cf, (off_t) (f__reclen - f__recpos + sizeof (uiolen)), SEEK_CUR);
- return (0);
-}
diff --git a/libf2c/libI77/typesize.c b/libf2c/libI77/typesize.c
deleted file mode 100644
index 8e2a74ad195..00000000000
--- a/libf2c/libI77/typesize.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-
-ftnlen f__typesize[] = { 0, 0, sizeof (shortint), sizeof (integer),
- sizeof (real), sizeof (doublereal),
- sizeof (complex), sizeof (doublecomplex),
- sizeof (logical), sizeof (char),
- 0, sizeof (integer1),
- sizeof (logical1), sizeof (shortlogical),
-#ifdef Allow_TYQUAD
- sizeof (longint),
-#endif
- 0
-};
diff --git a/libf2c/libI77/uio.c b/libf2c/libI77/uio.c
deleted file mode 100644
index 706b5dd3d9c..00000000000
--- a/libf2c/libI77/uio.c
+++ /dev/null
@@ -1,60 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-#include <sys/types.h>
-uiolen f__reclen;
-
-int
-do_us (ftnint * number, char *ptr, ftnlen len)
-{
- if (f__reading)
- {
- f__recpos += (int) (*number * len);
- if (f__recpos > f__reclen)
- err (f__elist->cierr, 110, "do_us");
- if (fread (ptr, (size_t) len, (size_t) (*number), f__cf) != (size_t) *number)
- err (f__elist->ciend, EOF, "do_us");
- return (0);
- }
- else
- {
- f__reclen += *number * len;
- (void) fwrite (ptr, (size_t) len, (size_t) (*number), f__cf);
- return (0);
- }
-}
-integer
-do_ud (ftnint * number, char *ptr, ftnlen len)
-{
- f__recpos += (int) (*number * len);
- if (f__recpos > f__curunit->url && f__curunit->url != 1)
- err (f__elist->cierr, 110, "do_ud");
- if (f__reading)
- {
-#ifdef Pad_UDread
- size_t i;
- if (!(i = fread (ptr, (size_t) len, (size_t) (*number), f__cf))
- && !(f__recpos - *number * len))
- err (f__elist->cierr, EOF, "do_ud");
- if (i < (size_t) *number)
- memset (ptr + i * len, 0, (*number - i) * len);
- return 0;
-#else
- if (fread (ptr, (size_t) len, (size_t) (*number), f__cf) != *number)
- err (f__elist->cierr, EOF, "do_ud");
- else
- return (0);
-#endif
- }
- (void) fwrite (ptr, (size_t) len, (size_t) (*number), f__cf);
- return (0);
-}
-
-integer
-do_uio (ftnint * number, char *ptr, ftnlen len)
-{
- if (f__sequential)
- return (do_us (number, ptr, len));
- else
- return (do_ud (number, ptr, len));
-}
diff --git a/libf2c/libI77/util.c b/libf2c/libI77/util.c
deleted file mode 100644
index 6e7c52b14ce..00000000000
--- a/libf2c/libI77/util.c
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "config.h"
-#ifndef NON_UNIX_STDIO
-#define _INCLUDE_POSIX_SOURCE /* for HP-UX */
-#define _INCLUDE_XOPEN_SOURCE /* for HP-UX */
-#include <sys/types.h>
-#include <sys/stat.h>
-#endif
-#include "f2c.h"
-#include "fio.h"
-
-void
-g_char (char *a, ftnlen alen, char *b)
-{
- char *x = a + alen, *y = b + alen;
-
- for (;; y--)
- {
- if (x <= a)
- {
- *b = 0;
- return;
- }
- if (*--x != ' ')
- break;
- }
- *y-- = 0;
- do
- *y-- = *x;
- while (x-- > a);
-}
-
-void
-b_char (char *a, char *b, ftnlen blen)
-{
- int i;
- for (i = 0; i < blen && *a != 0; i++)
- *b++ = *a++;
- for (; i < blen; i++)
- *b++ = ' ';
-}
-
-#ifndef NON_UNIX_STDIO
-long
-f__inode (char *a, int *dev)
-{
- struct stat x;
- if (stat (a, &x) < 0)
- return (-1);
- *dev = x.st_dev;
- return (x.st_ino);
-}
-#endif
diff --git a/libf2c/libI77/wref.c b/libf2c/libI77/wref.c
deleted file mode 100644
index 0dc30919da4..00000000000
--- a/libf2c/libI77/wref.c
+++ /dev/null
@@ -1,306 +0,0 @@
-#include "f2c.h"
-#include "fio.h"
-#ifndef VAX
-#include <ctype.h>
-#endif
-
-#undef abs
-#undef min
-#undef max
-#include <stdlib.h>
-#include <string.h>
-
-#include "fmt.h"
-#include "fp.h"
-
-int
-wrt_E (ufloat * p, int w, int d, int e, ftnlen len)
-{
- char buf[FMAX + EXPMAXDIGS + 4], *s, *se;
- int d1, delta, e1, i, sign, signspace;
- double dd;
-#ifdef WANT_LEAD_0
- int insert0 = 0;
-#endif
-#ifndef VAX
- int e0 = e;
-#endif
-
- if (e <= 0)
- e = 2;
- if (f__scale)
- {
- if (f__scale >= d + 2 || f__scale <= -d)
- goto nogood;
- }
- if (f__scale <= 0)
- --d;
- if (len == sizeof (real))
- dd = p->pf;
- else
- dd = p->pd;
- if (dd < 0.)
- {
- signspace = sign = 1;
- dd = -dd;
- }
- else
- {
- sign = 0;
- signspace = (int) f__cplus;
-#ifndef VAX
- if (!dd)
- dd = 0.; /* avoid -0 */
-#endif
- }
- delta = w - (2 /* for the . and the d adjustment above */
- + 2 /* for the E+ */ + signspace + d + e);
-#ifdef WANT_LEAD_0
- if (f__scale <= 0 && delta > 0)
- {
- delta--;
- insert0 = 1;
- }
- else
-#endif
- if (delta < 0)
- {
- nogood:
- while (--w >= 0)
- PUT ('*');
- return (0);
- }
- if (f__scale < 0)
- d += f__scale;
- if (d > FMAX)
- {
- d1 = d - FMAX;
- d = FMAX;
- }
- else
- d1 = 0;
- sprintf (buf, "%#.*E", d, dd);
-#ifndef VAX
- /* check for NaN, Infinity */
- if (!isdigit ((unsigned char) buf[0]))
- {
- switch (buf[0])
- {
- case 'n':
- case 'N':
- signspace = 0; /* no sign for NaNs */
- }
- delta = w - strlen (buf) - signspace;
- if (delta < 0)
- goto nogood;
- while (--delta >= 0)
- PUT (' ');
- if (signspace)
- PUT (sign ? '-' : '+');
- for (s = buf; *s; s++)
- PUT (*s);
- return 0;
- }
-#endif
- se = buf + d + 3;
-#ifdef GOOD_SPRINTF_EXPONENT /* When possible, exponent has 2 digits. */
- if (f__scale != 1 && dd)
- sprintf (se, "%+.2d", atoi (se) + 1 - f__scale);
-#else
- if (dd)
- sprintf (se, "%+.2d", atoi (se) + 1 - f__scale);
- else
- strcpy (se, "+00");
-#endif
- s = ++se;
- if (e < 2)
- {
- if (*s != '0')
- goto nogood;
- }
-#ifndef VAX
- /* accommodate 3 significant digits in exponent */
- if (s[2])
- {
-#ifdef Pedantic
- if (!e0 && !s[3])
- for (s -= 2, e1 = 2; s[0] = s[1]; s++);
-
- /* Pedantic gives the behavior that Fortran 77 specifies, */
- /* i.e., requires that E be specified for exponent fields */
- /* of more than 3 digits. With Pedantic undefined, we get */
- /* the behavior that Cray displays -- you get a bigger */
- /* exponent field if it fits. */
-#else
- if (!e0)
- {
- for (s -= 2, e1 = 2; (s[0] = s[1]); s++)
-#ifdef CRAY
- delta--;
- if ((delta += 4) < 0)
- goto nogood
-#endif
- ;
- }
-#endif
- else if (e0 >= 0)
- goto shift;
- else
- e1 = e;
- }
- else
- shift:
-#endif
- for (s += 2, e1 = 2; *s; ++e1, ++s)
- if (e1 >= e)
- goto nogood;
- while (--delta >= 0)
- PUT (' ');
- if (signspace)
- PUT (sign ? '-' : '+');
- s = buf;
- i = f__scale;
- if (f__scale <= 0)
- {
-#ifdef WANT_LEAD_0
- if (insert0)
- PUT ('0');
-#endif
- PUT ('.');
- for (; i < 0; ++i)
- PUT ('0');
- PUT (*s);
- s += 2;
- }
- else if (f__scale > 1)
- {
- PUT (*s);
- s += 2;
- while (--i > 0)
- PUT (*s++);
- PUT ('.');
- }
- if (d1)
- {
- se -= 2;
- while (s < se)
- PUT (*s++);
- se += 2;
- do
- PUT ('0');
- while (--d1 > 0);
- }
- while (s < se)
- PUT (*s++);
- if (e < 2)
- PUT (s[1]);
- else
- {
- while (++e1 <= e)
- PUT ('0');
- while (*s)
- PUT (*s++);
- }
- return 0;
-}
-
-int
-wrt_F (ufloat * p, int w, int d, ftnlen len)
-{
- int d1, sign, n;
- double x;
- char *b, buf[MAXINTDIGS + MAXFRACDIGS + 4], *s;
-
- x = (len == sizeof (real) ? p->pf : p->pd);
- if (d < MAXFRACDIGS)
- d1 = 0;
- else
- {
- d1 = d - MAXFRACDIGS;
- d = MAXFRACDIGS;
- }
- if (x < 0.)
- {
- x = -x;
- sign = 1;
- }
- else
- {
- sign = 0;
-#ifndef VAX
- if (!x)
- x = 0.;
-#endif
- }
-
- if ((n = f__scale))
- {
- if (n > 0)
- do
- x *= 10.;
- while (--n > 0);
- else
- do
- x *= 0.1;
- while (++n < 0);
- }
-
-#ifdef USE_STRLEN
- sprintf (b = buf, "%#.*f", d, x);
- n = strlen (b) + d1;
-#else
- n = sprintf (b = buf, "%#.*f", d, x) + d1;
-#endif
-
-#ifndef WANT_LEAD_0
- if (buf[0] == '0' && d)
- {
- ++b;
- --n;
- }
-#endif
- if (sign)
- {
- /* check for all zeros */
- for (s = b;;)
- {
- while (*s == '0')
- s++;
- switch (*s)
- {
- case '.':
- s++;
- continue;
- case 0:
- sign = 0;
- }
- break;
- }
- }
- if (sign || f__cplus)
- ++n;
- if (n > w)
- {
-#ifdef WANT_LEAD_0
- if (buf[0] == '0' && --n == w)
- ++b;
- else
-#endif
- {
- while (--w >= 0)
- PUT ('*');
- return 0;
- }
- }
- for (w -= n; --w >= 0;)
- PUT (' ');
- if (sign)
- PUT ('-');
- else if (f__cplus)
- PUT ('+');
- while ((n = *b++))
- PUT (n);
- while (--d1 >= 0)
- PUT ('0');
- return 0;
-}
diff --git a/libf2c/libI77/wrtfmt.c b/libf2c/libI77/wrtfmt.c
deleted file mode 100644
index 0190f7135ed..00000000000
--- a/libf2c/libI77/wrtfmt.c
+++ /dev/null
@@ -1,401 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-#include "fmt.h"
-
-extern icilist *f__svic;
-extern char *f__icptr;
-
-static int
-mv_cur (void) /* shouldn't use fseek because it insists on calling fflush */
- /* instead we know too much about stdio */
-{
- int cursor = f__cursor;
- f__cursor = 0;
- if (f__external == 0)
- {
- if (cursor < 0)
- {
- if (f__hiwater < f__recpos)
- f__hiwater = f__recpos;
- f__recpos += cursor;
- f__icptr += cursor;
- if (f__recpos < 0)
- err (f__elist->cierr, 110, "left off");
- }
- else if (cursor > 0)
- {
- if (f__recpos + cursor >= f__svic->icirlen)
- err (f__elist->cierr, 110, "recend");
- if (f__hiwater <= f__recpos)
- for (; cursor > 0; cursor--)
- (*f__putn) (' ');
- else if (f__hiwater <= f__recpos + cursor)
- {
- cursor -= f__hiwater - f__recpos;
- f__icptr += f__hiwater - f__recpos;
- f__recpos = f__hiwater;
- for (; cursor > 0; cursor--)
- (*f__putn) (' ');
- }
- else
- {
- f__icptr += cursor;
- f__recpos += cursor;
- }
- }
- return (0);
- }
- if (cursor > 0)
- {
- if (f__hiwater <= f__recpos)
- for (; cursor > 0; cursor--)
- (*f__putn) (' ');
- else if (f__hiwater <= f__recpos + cursor)
- {
- cursor -= f__hiwater - f__recpos;
- f__recpos = f__hiwater;
- for (; cursor > 0; cursor--)
- (*f__putn) (' ');
- }
- else
- {
- f__recpos += cursor;
- }
- }
- else if (cursor < 0)
- {
- if (cursor + f__recpos < 0)
- err (f__elist->cierr, 110, "left off");
- if (f__hiwater < f__recpos)
- f__hiwater = f__recpos;
- f__recpos += cursor;
- }
- return (0);
-}
-
-static int
-wrt_Z (Uint * n, int w, int minlen, ftnlen len)
-{
- register char *s, *se;
- register int i, w1;
- static int one = 1;
- static char hex[] = "0123456789ABCDEF";
- s = (char *) n;
- --len;
- if (*(char *) &one)
- {
- /* little endian */
- se = s;
- s += len;
- i = -1;
- }
- else
- {
- se = s + len;
- i = 1;
- }
- for (;; s += i)
- if (s == se || *s)
- break;
- w1 = (i * (se - s) << 1) + 1;
- if (*s & 0xf0)
- w1++;
- if (w1 > w)
- for (i = 0; i < w; i++)
- (*f__putn) ('*');
- else
- {
- if ((minlen -= w1) > 0)
- w1 += minlen;
- while (--w >= w1)
- (*f__putn) (' ');
- while (--minlen >= 0)
- (*f__putn) ('0');
- if (!(*s & 0xf0))
- {
- (*f__putn) (hex[*s & 0xf]);
- if (s == se)
- return 0;
- s += i;
- }
- for (;; s += i)
- {
- (*f__putn) (hex[*s >> 4 & 0xf]);
- (*f__putn) (hex[*s & 0xf]);
- if (s == se)
- break;
- }
- }
- return 0;
-}
-
-static int
-wrt_I (Uint * n, int w, ftnlen len, register int base)
-{
- int ndigit, sign, spare, i;
- longint x;
- char *ans;
- if (len == sizeof (integer))
- x = n->il;
- else if (len == sizeof (char))
- x = n->ic;
-#ifdef Allow_TYQUAD
- else if (len == sizeof (longint))
- x = n->ili;
-#endif
- else
- x = n->is;
- ans = f__icvt (x, &ndigit, &sign, base);
- spare = w - ndigit;
- if (sign || f__cplus)
- spare--;
- if (spare < 0)
- for (i = 0; i < w; i++)
- (*f__putn) ('*');
- else
- {
- for (i = 0; i < spare; i++)
- (*f__putn) (' ');
- if (sign)
- (*f__putn) ('-');
- else if (f__cplus)
- (*f__putn) ('+');
- for (i = 0; i < ndigit; i++)
- (*f__putn) (*ans++);
- }
- return (0);
-}
-static int
-wrt_IM (Uint * n, int w, int m, ftnlen len, int base)
-{
- int ndigit, sign, spare, i, xsign;
- longint x;
- char *ans;
- if (sizeof (integer) == len)
- x = n->il;
- else if (len == sizeof (char))
- x = n->ic;
-#ifdef Allow_TYQUAD
- else if (len == sizeof (longint))
- x = n->ili;
-#endif
- else
- x = n->is;
- ans = f__icvt (x, &ndigit, &sign, base);
- if (sign || f__cplus)
- xsign = 1;
- else
- xsign = 0;
- if (ndigit + xsign > w || m + xsign > w)
- {
- for (i = 0; i < w; i++)
- (*f__putn) ('*');
- return (0);
- }
- if (x == 0 && m == 0)
- {
- for (i = 0; i < w; i++)
- (*f__putn) (' ');
- return (0);
- }
- if (ndigit >= m)
- spare = w - ndigit - xsign;
- else
- spare = w - m - xsign;
- for (i = 0; i < spare; i++)
- (*f__putn) (' ');
- if (sign)
- (*f__putn) ('-');
- else if (f__cplus)
- (*f__putn) ('+');
- for (i = 0; i < m - ndigit; i++)
- (*f__putn) ('0');
- for (i = 0; i < ndigit; i++)
- (*f__putn) (*ans++);
- return (0);
-}
-static int
-wrt_AP (char *s)
-{
- char quote;
- int i;
-
- if (f__cursor && (i = mv_cur ()))
- return i;
- quote = *s++;
- for (; *s; s++)
- {
- if (*s != quote)
- (*f__putn) (*s);
- else if (*++s == quote)
- (*f__putn) (*s);
- else
- return (1);
- }
- return (1);
-}
-static int
-wrt_H (int a, char *s)
-{
- int i;
-
- if (f__cursor && (i = mv_cur ()))
- return i;
- while (a--)
- (*f__putn) (*s++);
- return (1);
-}
-
-int
-wrt_L (Uint * n, int len, ftnlen sz)
-{
- int i;
- long x;
- if (sizeof (long) == sz)
- x = n->il;
- else if (sz == sizeof (char))
- x = n->ic;
- else
- x = n->is;
- for (i = 0; i < len - 1; i++)
- (*f__putn) (' ');
- if (x)
- (*f__putn) ('T');
- else
- (*f__putn) ('F');
- return (0);
-}
-static int
-wrt_A (char *p, ftnlen len)
-{
- while (len-- > 0)
- (*f__putn) (*p++);
- return (0);
-}
-static int
-wrt_AW (char *p, int w, ftnlen len)
-{
- while (w > len)
- {
- w--;
- (*f__putn) (' ');
- }
- while (w-- > 0)
- (*f__putn) (*p++);
- return (0);
-}
-
-static int
-wrt_G (ufloat * p, int w, int d, int e, ftnlen len)
-{
- double up = 1, x;
- int i = 0, oldscale, n, j;
- x = len == sizeof (real) ? p->pf : p->pd;
- if (x < 0)
- x = -x;
- if (x < .1)
- {
- if (x != 0.)
- return (wrt_E (p, w, d, e, len));
- i = 1;
- goto have_i;
- }
- for (; i <= d; i++, up *= 10)
- {
- if (x >= up)
- continue;
- have_i:
- oldscale = f__scale;
- f__scale = 0;
- if (e == 0)
- n = 4;
- else
- n = e + 2;
- i = wrt_F (p, w - n, d - i, len);
- for (j = 0; j < n; j++)
- (*f__putn) (' ');
- f__scale = oldscale;
- return (i);
- }
- return (wrt_E (p, w, d, e, len));
-}
-
-int
-w_ed (struct syl * p, char *ptr, ftnlen len)
-{
- int i;
-
- if (f__cursor && (i = mv_cur ()))
- return i;
- switch (p->op)
- {
- default:
- fprintf (stderr, "w_ed, unexpected code: %d\n", p->op);
- sig_die (f__fmtbuf, 1);
- case I:
- return (wrt_I ((Uint *) ptr, p->p1, len, 10));
- case IM:
- return (wrt_IM ((Uint *) ptr, p->p1, p->p2.i[0], len, 10));
-
- /* O and OM don't work right for character, double, complex, */
- /* or doublecomplex, and they differ from Fortran 90 in */
- /* showing a minus sign for negative values. */
-
- case O:
- return (wrt_I ((Uint *) ptr, p->p1, len, 8));
- case OM:
- return (wrt_IM ((Uint *) ptr, p->p1, p->p2.i[0], len, 8));
- case L:
- return (wrt_L ((Uint *) ptr, p->p1, len));
- case A:
- return (wrt_A (ptr, len));
- case AW:
- return (wrt_AW (ptr, p->p1, len));
- case D:
- case E:
- case EE:
- return (wrt_E ((ufloat *) ptr, p->p1, p->p2.i[0], p->p2.i[1], len));
- case G:
- case GE:
- return (wrt_G ((ufloat *) ptr, p->p1, p->p2.i[0], p->p2.i[1], len));
- case F:
- return (wrt_F ((ufloat *) ptr, p->p1, p->p2.i[0], len));
-
- /* Z and ZM assume 8-bit bytes. */
-
- case Z:
- return (wrt_Z ((Uint *) ptr, p->p1, 0, len));
- case ZM:
- return (wrt_Z ((Uint *) ptr, p->p1, p->p2.i[0], len));
- }
-}
-
-int
-w_ned (struct syl * p)
-{
- switch (p->op)
- {
- default:
- fprintf (stderr, "w_ned, unexpected code: %d\n", p->op);
- sig_die (f__fmtbuf, 1);
- case SLASH:
- return ((*f__donewrec) ());
- case T:
- f__cursor = p->p1 - f__recpos - 1;
- return (1);
- case TL:
- f__cursor -= p->p1;
- if (f__cursor < -f__recpos) /* TL1000, 1X */
- f__cursor = -f__recpos;
- return (1);
- case TR:
- case X:
- f__cursor += p->p1;
- return (1);
- case APOS:
- return (wrt_AP (p->p2.s));
- case H:
- return (wrt_H (p->p1, p->p2.s));
- }
-}
diff --git a/libf2c/libI77/wsfe.c b/libf2c/libI77/wsfe.c
deleted file mode 100644
index 46f7a8ffef0..00000000000
--- a/libf2c/libI77/wsfe.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*write sequential formatted external*/
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-#include "fmt.h"
-extern int f__hiwater;
-
-int
-x_wSL (void)
-{
- int n = f__putbuf ('\n');
- f__hiwater = f__recpos = f__cursor = 0;
- return (n == 0);
-}
-
-static int
-xw_end (void)
-{
- int n;
-
- if (f__nonl)
- {
- f__putbuf (n = 0);
- fflush (f__cf);
- }
- else
- n = f__putbuf ('\n');
- f__hiwater = f__recpos = f__cursor = 0;
- return n;
-}
-
-static int
-xw_rev (void)
-{
- int n = 0;
- if (f__workdone)
- {
- n = f__putbuf ('\n');
- f__workdone = 0;
- }
- f__hiwater = f__recpos = f__cursor = 0;
- return n;
-}
-
-integer
-s_wsfe (cilist * a) /*start */
-{
- int n;
- if (f__init != 1)
- f_init ();
- f__init = 3;
- f__reading = 0;
- f__sequential = 1;
- f__formatted = 1;
- f__external = 1;
- if ((n = c_sfe (a)))
- return (n);
- f__elist = a;
- f__hiwater = f__cursor = f__recpos = 0;
- f__nonl = 0;
- f__scale = 0;
- f__fmtbuf = a->cifmt;
- f__curunit = &f__units[a->ciunit];
- f__cf = f__curunit->ufd;
- if (pars_f (f__fmtbuf) < 0)
- err (a->cierr, 100, "startio");
- f__putn = x_putc;
- f__doed = w_ed;
- f__doned = w_ned;
- f__doend = xw_end;
- f__dorevert = xw_rev;
- f__donewrec = x_wSL;
- fmt_bg ();
- f__cplus = 0;
- f__cblank = f__curunit->ublnk;
- if (f__curunit->uwrt != 1 && f__nowwriting (f__curunit))
- err (a->cierr, errno, "write start");
- return (0);
-}
diff --git a/libf2c/libI77/wsle.c b/libf2c/libI77/wsle.c
deleted file mode 100644
index e9ef172d591..00000000000
--- a/libf2c/libI77/wsle.c
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-#include "fmt.h"
-#include "lio.h"
-#include "string.h"
-
-integer
-s_wsle (cilist * a)
-{
- int n;
- if ((n = c_le (a)))
- return (n);
- f__reading = 0;
- f__external = 1;
- f__formatted = 1;
- f__putn = x_putc;
- f__lioproc = l_write;
- L_len = LINE;
- f__donewrec = x_wSL;
- if (f__curunit->uwrt != 1 && f__nowwriting (f__curunit))
- err (a->cierr, errno, "list output start");
- return (0);
-}
-
-integer
-e_wsle (void)
-{
- int n;
- f__init = 1;
- n = f__putbuf ('\n');
- f__recpos = 0;
-#ifdef ALWAYS_FLUSH
- if (!n && fflush (f__cf))
- err (f__elist->cierr, errno, "write end");
-#endif
- return (n);
-}
diff --git a/libf2c/libI77/wsne.c b/libf2c/libI77/wsne.c
deleted file mode 100644
index bcf08262de1..00000000000
--- a/libf2c/libI77/wsne.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "f2c.h"
-#include "fio.h"
-#include "lio.h"
-
-integer
-s_wsne (cilist * a)
-{
- int n;
-
- if ((n = c_le (a)))
- return (n);
- f__reading = 0;
- f__external = 1;
- f__formatted = 1;
- f__putn = x_putc;
- L_len = LINE;
- f__donewrec = x_wSL;
- if (f__curunit->uwrt != 1 && f__nowwriting (f__curunit))
- err (a->cierr, errno, "namelist output start");
- x_wsne (a);
- return e_wsle ();
-}
diff --git a/libf2c/libI77/xwsne.c b/libf2c/libI77/xwsne.c
deleted file mode 100644
index 68b606c8276..00000000000
--- a/libf2c/libI77/xwsne.c
+++ /dev/null
@@ -1,71 +0,0 @@
-#include "config.h"
-#include "f2c.h"
-#include "fio.h"
-#include "lio.h"
-#include "fmt.h"
-
-extern int f__Aquote;
-
-static void
-nl_donewrec (void)
-{
- (*f__donewrec) ();
- PUT (' ');
-}
-
-#include <string.h>
-
-void
-x_wsne (cilist * a)
-{
- Namelist *nl;
- char *s;
- Vardesc *v, **vd, **vde;
- ftnint number, type;
- ftnlen *dims;
- ftnlen size;
- extern ftnlen f__typesize[];
-
- nl = (Namelist *) a->cifmt;
- PUT ('&');
- for (s = nl->name; *s; s++)
- PUT (*s);
- PUT (' ');
- f__Aquote = 1;
- vd = nl->vars;
- vde = vd + nl->nvars;
- while (vd < vde)
- {
- v = *vd++;
- s = v->name;
-#ifdef No_Extra_Namelist_Newlines
- if (f__recpos + strlen (s) + 2 >= L_len)
-#endif
- nl_donewrec ();
- while (*s)
- PUT (*s++);
- PUT (' ');
- PUT ('=');
- number = (dims = v->dims) ? dims[1] : 1;
- type = v->type;
- if (type < 0)
- {
- size = -type;
- type = TYCHAR;
- }
- else
- size = f__typesize[type];
- l_write (&number, v->addr, size, type);
- if (vd < vde)
- {
- if (f__recpos + 2 >= L_len)
- nl_donewrec ();
- PUT (',');
- PUT (' ');
- }
- else if (f__recpos + 1 >= L_len)
- nl_donewrec ();
- }
- f__Aquote = 0;
- PUT ('/');
-}
diff --git a/libf2c/libU77/COPYING.LIB b/libf2c/libU77/COPYING.LIB
deleted file mode 100644
index b1e3f5a2638..00000000000
--- a/libf2c/libU77/COPYING.LIB
+++ /dev/null
@@ -1,504 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 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.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/libf2c/libU77/Makefile.in b/libf2c/libU77/Makefile.in
deleted file mode 100644
index 09b1b2a20c5..00000000000
--- a/libf2c/libU77/Makefile.in
+++ /dev/null
@@ -1,187 +0,0 @@
-# Makefile for GNU F77 compiler runtime, libc interface.
-# Copyright (C) 1995-1998, 2001 Free Software Foundation, Inc.
-# Contributed by Dave Love (d.love@dl.ac.uk).
-#
-#This file is part of the GNU Fortran libU77 library.
-#
-#The GNU Fortran libU77 library is free software; you can redistribute
-#it and/or modify it under the terms of the GNU Library General Public
-#License as published by the Free Software Foundation; either version 2,
-#or (at your option) any later version.
-#
-#GNU Fortran 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 Library General Public License for more details.
-#
-#You should have received a copy of the GNU General Public License
-#along with GNU Fortran; see the file COPYING. If not, write to
-#the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-#02111-1307, USA.
-
-#### Start of system configuration section. ####
-
-# $(srcdir) must be set to the g77 runtime libU77 source directory
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-# configure sets this to all the -D options appropriate for the
-# configuration.
-DEFS = @DEFS@
-LIBS = @LIBS@
-
-F2C_H_DIR = @srcdir@/..
-G2C_H_DIR = ..
-CC = @CC@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-@SET_MAKE@
-
-SHELL = @SHELL@
-
-#### End of system configuration section. ####
-
-# fio.h is in libI77. config.h is in `.'.
-ALL_CFLAGS = -I. -I$(srcdir) -I$(F2C_H_DIR)/libI77 -I$(G2C_H_DIR) \
- -I$(F2C_H_DIR) $(CPPFLAGS) $(DEFS) $(WARN_CFLAGS) $(CFLAGS)
-
-# This could probably be done more elegantly, but it's currently
-# just for running the u77-test test.
-G77DIR = ../../../gcc/
-
-.SUFFIXES:
-.SUFFIXES: .c .lo
-
-.c.lo:
- @LIBTOOL@ --mode=compile $(CC) -c -DSkip_f2c_Undefs $(ALL_CFLAGS) $<
-
-OBJS = VersionU.lo gerror_.lo perror_.lo ierrno_.lo itime_.lo time_.lo \
- unlink_.lo fnum_.lo getpid_.lo getuid_.lo getgid_.lo kill_.lo rand_.lo \
- srand_.lo irand_.lo sleep_.lo idate_.lo ctime_.lo etime_.lo \
- dtime_.lo isatty_.lo ltime_.lo fstat_.lo stat_.lo \
- lstat_.lo access_.lo link_.lo getlog_.lo ttynam_.lo getcwd_.lo symlnk_.lo \
- vxttime_.lo vxtidate_.lo gmtime_.lo fdate_.lo secnds_.lo \
- chdir_.lo chmod_.lo lnblnk_.lo hostnm_.lo rename_.lo fgetc_.lo fputc_.lo \
- umask_.lo sys_clock_.lo date_.lo second_.lo flush1_.lo mclock_.lo \
- alarm_.lo datetime_.lo
-SRCS = Version.c gerror_.c perror_.c ierrno_.c itime_.c time_.c \
- unlink_.c fnum_.c getpid_.c getuid_.c getgid_.c kill_.c rand_.c \
- srand_.c irand_.c sleep_.c idate_.c ctime_.c etime_.c \
- dtime_.c isatty_.c ltime_.c fstat_.c stat_.c \
- lstat_.c access_.c link_.c getlog_.c ttynam_.c getcwd_.c symlnk_.c \
- vxttime_.c vxtidate_.c gmtime_.c fdate_.c secnds_.c \
- chdir_.c chmod_.c lnblnk_.c hostnm_.c rename_.c fgetc_.c fputc_.c \
- umask_.c sys_clock_.c date_.c second_.c flush1_.c mclock_.c \
- alarm_.c datetime_.c
-
-all: ../s-libu77
-
-../s-libu77: $(OBJS)
- -rm -f $@.T $@
- objs='$(OBJS)'; for name in $$objs; do \
- echo libU77/$${name} >> $@.T; done
- mv $@.T $@
-
-Makefile: Makefile.in config.status
- $(SHELL) config.status
-
-config.status: configure
- rm -f config.cache
- CONFIG_SITE=no-such-file CC='$(CC)' CFLAGS='$(CFLAGS)' \
- CPPFLAGS='$(CPPFLAGS)' $(SHELL) config.status --recheck
-
-${srcdir}/configure: configure.in
- cd ${srcdir} && autoconf
-
-${srcdir}/config.hin: stamp-h.in
-${srcdir}/stamp-h.in: configure.in acconfig.h
- cd ${srcdir} && autoheader
- echo timestamp > ${srcdir}/stamp-h.in
-
-config.h: stamp-h
-stamp-h: config.hin config.status
- $(SHELL) config.status
- echo timestamp > stamp-h
-
-VersionU.lo: Version.c
- @LIBTOOL@ --mode=compile $(CC) -c $(ALL_CFLAGS) $(srcdir)/Version.c -o $@
-
-$(OBJS): $(F2C_H_DIR)/f2c.h $(G2C_H_DIR)/g2c.h config.h
-access_.lo: access_.c
-ctime_.lo: ctime_.c
-dtime_.lo: dtime_.c
-etime_.lo: etime_.c
-fnum_.lo: fnum_.c $(F2C_H_DIR)/libI77/fio.h
-fstat_.lo: fstat_.c
-gerror_.lo: gerror_.c
-getcwd_.lo: getcwd_.c
-getgid_.lo: getgid_.c
-getlog_.lo: getlog_.c
-getpid_.lo: getpid_.c
-getuid_.lo: getuid_.c
-idate_.lo: idate_.c
-ierrno_.lo: ierrno_.c
-irand_.lo: irand_.c
-isatty_.lo: isatty_.c $(F2C_H_DIR)/libI77/fio.h
-itime_.lo: itime_.c
-kill_.lo: kill_.c
-link_.lo: link_.c
-loc_.lo: loc_.c
-lstat_.lo: lstat_.c
-ltime_.lo: ltime_.c
-perror_.lo: perror_.c
-qsort.lo: qsort.c
-qsort_.lo: qsort_.c
-rand_.lo: rand_.c
-rename_.lo: rename_.c
-second_.lo: second_.c
-sleep_.lo: sleep_.c
-srand_.lo: srand_.c
-stat_.lo: stat_.c
-symlnk_.lo: symlnk_.c
-time_.lo: time_.c
-ttynam_.lo: ttynam_.c
-unlink_.lo: unlink_.c
-wait_.lo: wait_.c
-vxttime_.lo: vxttime_.c
-vtxidate_.lo: vxtidate_.c
-fdate_.lo: fdate_.c
-gmtime_.lo: gmtime_.c
-secnds_.lo: secnds_.c
-lnblnk_.lo: lnblnk_.c
-chmod_.lo: chmod_.c
-chdir_.lo: chdir_.c
-hostnm_.lo: hostnm_.c
-rename_.lo: rename_.c
-fputc_.lo: fputc_.c
-fgetc_.lo: fgetc_.c
-sys_clock_.lo: sys_clock_.c
-date_.lo: date_.c
-umask_.lo: umask_.c
-flush1_.lo: flush1_.c
-mclock_.lo: mclock_.c
-alarm_.lo: alarm_.c
-datetime_.lo: datetime_.c
-
-check:
- -$(G77DIR)g77 -B$(G77DIR) -L.. -g $(srcdir)/u77-test.f \
- -lg2c $(LIBS) -lm -o a.out && ./a.out
- rm -f a.out
-
-install uninstall install-strip dist installcheck installdirs:
-
-mostlyclean:
- rm -f *.o *.lo a.out
- rm -rf .libs
-
-clean: mostlyclean
- rm -f config.log ../s-libu77
-
-distclean: clean
- rm -f config.cache config.status Makefile config.h stamp.h \
- ../s-libu77 configure
-
-maintainer-clean:
-
-.PHONY: mostlyclean clean distclean maintainer-clean all check uninstall \
- install-strip dist installcheck installdirs archive
diff --git a/libf2c/libU77/PROJECTS b/libf2c/libU77/PROJECTS
deleted file mode 100644
index 0cf1383cbf9..00000000000
--- a/libf2c/libU77/PROJECTS
+++ /dev/null
@@ -1,10 +0,0 @@
- -*- indented-text-*-
-
-* Interface to strget
-
-* Non-blocking (`asynchronous') i/o (per c.l.f. discussion)
-
-* `ioinit'-type routine for various i/o options
-
-* IEEE/VAX/... number format conversion (or XDR interface). This
- might be made optionally transparent per logical unit a la DECtran.
diff --git a/libf2c/libU77/README b/libf2c/libU77/README
deleted file mode 100644
index bfedb90bd97..00000000000
--- a/libf2c/libU77/README
+++ /dev/null
@@ -1,40 +0,0 @@
-19970811 -*-text-*-
-
-g77 libU77
-----------
-
-This directory contains an implementation of most of the `traditional'
-Unix libU77 routines, mostly an interface to libc and libm routines
-and some extra ones for time and date etc. It's intended for use with
-g77, to whose configuration procedure it's currently tied, but should
-be compatible with f2c otherwise, if using the same f2c.h.
-
-The contents of libU77 and its interfaces aren't consistent across
-implementations. This one is mostly taken from documentation for (an
-old version of) the Convex implementation and the v2 SunPro one.
-As of g77 version 0.5.20, most of these routines have been made
-into g77 intrinsics. Some routines have a version with a name prefixed
-by `vxt', corresponding to the VMS Fortran versions, and these should
-be integrated with g77's intrinsics visibility control.
-
-A few routines are currently missing; in the case of `fork', for
-instance, because they're probably not useful, and in the case of
-`qsort' and those for stream-based i/o handling, because they need
-more effort/research. The configuration should weed out those few
-which correspond to facilities which may not be present on some Unix
-systems, such as symbolic links. It's unclear whether the interfaces
-to the native library random number routines should be retained, since
-their implementation is likely to be something one should avoid
-assiduously.
-
-This library has been tested it under SunOS4.1.3 and Irix5.2 and there
-has been some feedback from Linux; presumably potential problems lie
-mainly with systems with impoverished native C library support which
-haven't been properly taken care of with autoconf.
-
-There's another GPL'd implementation of this stuff which I only found
-out about recently (despite having looked) and I haven't yet checked
-how they should be amalgamated.
-
-Dave Love <d.love@dl.ac.uk> Aug '95
-(minor changes by Craig Burley <burley@gnu.org> Aug '97)
diff --git a/libf2c/libU77/Version.c b/libf2c/libU77/Version.c
deleted file mode 100644
index 45b68a6b141..00000000000
--- a/libf2c/libU77/Version.c
+++ /dev/null
@@ -1 +0,0 @@
-const char __LIBU77_VERSION__[] = "@(#) LIBU77 VERSION 19980709\n";
diff --git a/libf2c/libU77/access_.c b/libf2c/libU77/access_.c
deleted file mode 100644
index 0a2dbce9d78..00000000000
--- a/libf2c/libU77/access_.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#else
-# include <stdio.h>
-#endif
-
-#include <errno.h>
-#include <limits.h>
-#include "f2c.h"
-
-#ifndef R_OK /* for SVR1-2 */
-# define R_OK 4
-#endif
-#ifndef W_OK
-# define W_OK 2
-#endif
-#ifndef X_OK
-# define X_OK 1
-#endif
-#ifndef F_OK
-# define F_OK 0
-#endif
-
-void g_char (const char *a, ftnlen alen, char *b);
-
-integer
-G77_access_0 (const char *name, const char *mode, ftnlen Lname, ftnlen Lmode)
-{
- char *buff;
- int amode, i;
-
- buff = malloc (Lname + 1);
- if (!buff)
- return -1;
- g_char (name, Lname, buff);
- amode = 0;
- for (i = 0; i < Lmode; i++)
- {
- switch (mode[i])
- {
- case 'r':
- amode |= R_OK;
- break;
- case 'w':
- amode |= W_OK;
- break;
- case 'x':
- amode |= X_OK;
- break;
- case ' ':
- amode |= F_OK;
- break; /* as per Sun, at least */
- default:
- return EINVAL;
- }
- }
- i = access (buff, amode);
- free (buff);
- return i;
-}
diff --git a/libf2c/libU77/acconfig.h b/libf2c/libU77/acconfig.h
deleted file mode 100644
index 778e15410c8..00000000000
--- a/libf2c/libU77/acconfig.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Define as the path of the `chmod' program. */
-#undef CHMOD_PATH
-
-/* Define if your sys/time.h defines struct timezone. */
-#undef HAVE_STRUCT_TIMEZONE
-
-/* Define if your gettimeofday takes only one argument. */
-#undef GETTIMEOFDAY_ONE_ARGUMENT
-
-/* Define if your gettimeofday takes a time zome argument. */
-#undef HAVE_TIMEZONE
diff --git a/libf2c/libU77/aclocal.m4 b/libf2c/libU77/aclocal.m4
deleted file mode 100644
index 58f6a675899..00000000000
--- a/libf2c/libU77/aclocal.m4
+++ /dev/null
@@ -1,69 +0,0 @@
-dnl Check:
-dnl * If we have gettimeofday;
-dnl * If we have struct timezone for use in calling it;
-dnl * If calling it with a timezone pointer actually works -- this is deemed
-dnl obsolete or undefined on some systems which say you should use a null
-dnl pointer -- and undefine HAVE_TIMEZONE if so;
-dnl * Whether it only takes one arg.
-AC_DEFUN(LIBU77_GETTIMEOFDAY, [
- AC_CHECK_FUNCS(gettimeofday)
- if test "$ac_cv_func_gettimeofday" = yes; then
- AC_CACHE_CHECK([for struct timezone], g77_cv_struct_timezone,
- [AC_TRY_COMPILE([#include <sys/time.h>],
- [struct timezone tz;],
- g77_cv_struct_timezone=yes, g77_cv_struct_timezone=no)])
- if test $g77_cv_struct_timezone = yes; then
- dnl It may be that we can't call gettimeofday with a non-null pointer.
- dnl In that case we'll lie about struct timezone.
- AC_TRY_RUN([
-#ifdef TIME_WITH_SYS_TIME
-#include <sys/time.h>
-#include <time.h>
-#else
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#else
-#include <time.h>
-#endif
-#endif
-main ()
-{
- struct timeval time;
- struct timezone dummy;
- if (gettimeofday (&time, &dummy))
- exit (1);
- else
- exit (0);
-}],
- [AC_DEFINE(HAVE_TIMEZONE)], ,[AC_DEFINE(HAVE_TIMEZONE)])
- fi
- AC_REQUIRE([AC_HEADER_TIME])
- AC_CACHE_CHECK(whether gettimeofday can accept two arguments,
- emacs_cv_gettimeofday_two_arguments,
- AC_TRY_LINK([
-#ifdef TIME_WITH_SYS_TIME
-#include <sys/time.h>
-#include <time.h>
-#else
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#else
-#include <time.h>
-#endif
-#endif
- ],
- [
- struct timeval time;
-#ifdef HAVE_TIMEZONE
- struct timezone dummy;
-#define DUMMY &dummy
-#else
-#define DUMMY NULL
-#endif
- gettimeofday (&time, DUMMY);],
- emacs_cv_gettimeofday_two_arguments=yes,
- emacs_cv_gettimeofday_two_arguments=no))
- if test $emacs_cv_gettimeofday_two_arguments = no; then
- AC_DEFINE(GETTIMEOFDAY_ONE_ARGUMENT)
- fi
- fi])
diff --git a/libf2c/libU77/alarm_.c b/libf2c/libU77/alarm_.c
deleted file mode 100644
index d2c93824490..00000000000
--- a/libf2c/libU77/alarm_.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright (C) 1997, 2001 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <errno.h> /* for ENOSYS */
-#include "f2c.h"
-
-#ifndef RETSIGTYPE
-/* we shouldn't rely on this... */
-#define RETSIGTYPE void
-#endif
-typedef RETSIGTYPE (*sig_type) ();
-
-#include <signal.h>
-typedef int (*sig_proc) (int);
-
-#ifndef SIG_ERR
-#define SIG_ERR ((sig_type) -1)
-#endif
-
-integer
-G77_alarm_0 (integer * seconds, sig_proc proc)
-{
- int status;
-#if defined (HAVE_ALARM) && defined (SIGALRM)
- if (signal (SIGALRM, (sig_type) proc) == SIG_ERR)
- status = -1;
- else
- status = alarm (*seconds);
-#else /* ! HAVE_ALARM || ! SIGALRM */
- errno = ENOSYS;
- status = -1;
-#endif
- return status;
-}
diff --git a/libf2c/libU77/chdir_.c b/libf2c/libU77/chdir_.c
deleted file mode 100644
index bebdeb0a0c6..00000000000
--- a/libf2c/libU77/chdir_.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#else
-# include <stdio.h>
-#endif
-
-#include <errno.h>
-#include "f2c.h"
-
-
-void g_char (const char *a, ftnlen alen, char *b);
-
-integer
-G77_chdir_0 (const char *name, const ftnlen Lname)
-{
- char *buff;
- int i;
-
- buff = malloc (Lname + 1);
- if (!buff)
- return -1;
- g_char (name, Lname, buff);
- i = chdir (buff);
- free (buff);
- return i ? errno : 0;
-}
diff --git a/libf2c/libU77/chmod_.c b/libf2c/libU77/chmod_.c
deleted file mode 100644
index 86e620cbc2f..00000000000
--- a/libf2c/libU77/chmod_.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-
-/* This definitely shouldn't be done this way -- should canibalise
- chmod(1) from GNU or BSD. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#else
-# include <stdio.h>
-#endif
-#if STDC_HEADERS
-# include <string.h>
-#endif
-
-#include "f2c.h"
-
-#ifndef CHMOD_PATH
-#define CHMOD_PATH "/bin/chmod"
-#endif
-
-extern void s_cat (char *lp, char *rpp[], ftnlen rnp[], ftnlen * np,
- ftnlen ll);
-void g_char (const char *a, ftnlen alen, char *b);
-
-integer
-G77_chmod_0 ( /* const */ char *name, /* const */ char *mode,
- const ftnlen Lname, const ftnlen Lmode)
-{
- char *buff;
- int i;
- ftnlen l, l2;
- ftnlen six = 6;
- address a[6];
- ftnlen ii[6];
- char chmod_path[] = CHMOD_PATH;
- l = strlen (chmod_path);
- buff = malloc (Lname + Lmode + l + 3 + 13 + 1);
- if (!buff)
- return -1;
- ii[0] = l;
- a[0] = chmod_path;
- ii[1] = 1;
- a[1] = " ";
- ii[2] = Lmode;
- a[2] = mode;
- ii[3] = 2;
- a[3] = " '";
- for (l2 = Lname; (l2 > 1) && (name[l2 - 1] == ' ');)
- l2--;
- ii[4] = l2;
- a[4] = name;
- ii[5] = 13;
- a[5] = "' 2>/dev/null";
- s_cat (buff, a, ii, &six, Lname + Lmode + l + 3 + 13);
- buff[Lname + Lmode + l + 3 + 13] = '\0';
- i = system (buff);
- free (buff);
- return i;
-}
diff --git a/libf2c/libU77/configure.in b/libf2c/libU77/configure.in
deleted file mode 100644
index f963bb74abe..00000000000
--- a/libf2c/libU77/configure.in
+++ /dev/null
@@ -1,124 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-# Copyright (C) 1995, 1998, 1999 Free Software Foundation, Inc.
-# Contributed by Dave Love (d.love@dl.ac.uk).
-#
-#This file is part of the GNU Fortran libU77 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.
-#
-#GNU Fortran 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 Library General Public License for more details.
-#
-#You should have received a copy of the GNU Library General Public
-#License along with GNU Fortran; see the file COPYING. If not, write
-#to Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-#USA.
-
-AC_PREREQ(2.13)
-AC_INIT(access_.c)
-AC_CONFIG_HEADER(config.h:config.hin)
-
-dnl FIXME AC_PROG_CC wants CC to be able to link things, but it may
-dnl not be able to.
-define([AC_PROG_CC_WORKS],[])
-
-# For g77 we'll set CC to point at the built gcc, but this will get it into
-# the makefiles
-AC_PROG_CC
-
-# These defines are necessary to get 64-bit file size support.
-# NetBSD 1.4 header files does not support XOPEN_SOURCE == 600, but it
-# handles 64-bit file sizes without needing these defines.
-AC_MSG_CHECKING(whether _XOPEN_SOURCE may be defined)
-AC_TRY_COMPILE([#define _XOPEN_SOURCE 600L
-#include <unistd.h>],,
-may_use_xopen_source=yes,
-may_use_xopen_source=no)
-AC_MSG_RESULT($may_use_xopen_source)
-if test $may_use_xopen_source = yes; then
- AC_DEFINE(_XOPEN_SOURCE, 600L, [Get Single Unix Specification semantics])
- # The following is needed by irix6.2 so that struct timeval is declared.
- AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Get Single Unix Specification semantics])
- # The following is needed by Solaris2.5.1 so that struct timeval is declared.
- AC_DEFINE(__EXTENSIONS__, 1, [Solaris extensions])
- AC_DEFINE(_FILE_OFFSET_BITS, 64, [Get 64-bit file size support])
- # The following is needed by glibc2 so that gethostname is declared.
- AC_DEFINE(_GNU_SOURCE, 1, [Get GNU extensions])
-fi
-
-dnl Checks for programs.
-
-LIBTOOL='$(SHELL) ../libtool'
-AC_SUBST(LIBTOOL)
-
-dnl AC_C_CROSS
-dnl Gives misleading `(cached)' message from the check.
-if test "$CROSS";then
- ac_cv_c_cross=yes
-else
- ac_cv_c_cross=no
-fi
-
-test "$AR" || AR=ar
-AC_SUBST(AR)
-AC_PROG_MAKE_SET
-
-dnl This is only because we (horribly) punt the chmod job to the program at
-dnl present. Note that the result of this test could be wrong in the cross
-dnl case.
-AC_PATH_PROG(ac_cv_prog_chmod, chmod, no)
-if test "$ac_cv_prog_chmod" != no || test "$CROSS"; then
- MAYBES=chmod_.o
- AC_DEFINE_UNQUOTED(CHMOD_PATH,"$ac_cv_prog_chmod")
-else
- MAYBES=""
-fi
-
-dnl Checks for header files.
-AC_HEADER_STDC
-AC_HEADER_TIME
-AC_CHECK_HEADERS(limits.h unistd.h sys/time.h string.h stdlib.h \
- sys/param.h sys/times.h)
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_TYPE_SIZE_T
-AC_TYPE_MODE_T
-
-AC_TYPE_PID_T
-dnl The next 3 demand a dummy fileblocks.o (added to LIBOJS). We don't use
-dnl LIBOJS, though.
-AC_STRUCT_ST_BLKSIZE
-AC_STRUCT_ST_BLOCKS
-AC_STRUCT_ST_RDEV
-AC_STRUCT_TM
-
-dnl Some systems (SVR4, SCO OpenServer) need -lsocket for gethostname()
-AC_CHECK_LIB(socket, gethostname, [LIBS="$LIBS -lsocket"])
-
-dnl Checks for library functions.
-
-AC_CHECK_FUNCS(symlink getcwd getwd lstat gethostname strerror clock \
- getrusage times alarm getlogin getgid getuid kill link ttyname)
-
-dnl The standard autoconf HAVE_STRUCT_TIMEZONE doesn't actually check
-dnl for struct timezone, as you might think. We also need to check how
-dnl to call gettimeofday if we have it.
-LIBU77_GETTIMEOFDAY
-
-test $ac_cv_func_symlink = yes && MAYBES="$MAYBES symlnk_.o"
-test $ac_cv_func_lstat = yes && MAYBES="$MAYBES lstat_.o"
-test $ac_cv_func_gethostname = yes && MAYBES="$MAYBES hostnm_.o"
-test $ac_cv_func_clock = yes && MAYBES="$MAYBES mclock_.o"
-AC_SUBST(MAYBES)
-
-AC_SUBST(CROSS)
-AC_SUBST(RANLIB)
-AC_SUBST(RANLIB_TEST)
-
-AC_OUTPUT(Makefile)
diff --git a/libf2c/libU77/ctime_.c b/libf2c/libU77/ctime_.c
deleted file mode 100644
index 56e660562b7..00000000000
--- a/libf2c/libU77/ctime_.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright (C) 1995, 1996, 2001 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <sys/types.h>
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-#if HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-#include "f2c.h"
-
-/* may need sys/time.h & long arg for stime (bsd, svr1-3) */
-
-/* Character */ void
-G77_ctime_0 (char *chtime, const ftnlen Lchtime, longint * xstime)
-{
- int s_copy ();
- time_t stime = *xstime;
-
- /* Allow a length other than 24 for compatibility with what other
- systems do, despite it being documented as 24. */
- s_copy (chtime, ctime (&stime), Lchtime, 24);
-}
diff --git a/libf2c/libU77/date_.c b/libf2c/libU77/date_.c
deleted file mode 100644
index 973d01470f7..00000000000
--- a/libf2c/libU77/date_.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* date_.f -- translated by f2c (version 19961001).
- You must link the resulting object file with the libraries:
- -lf2c -lm (in that order)
-*/
-
-#include "f2c.h"
-
-/* Table of constant values */
-
-static integer c__5 = 5;
-
-/* Subroutine */ int
-G77_date_y2kbug_0 (char *buf, ftnlen buf_len)
-{
- /* System generated locals */
- address a__1[5];
- longint i__1;
- integer i__2[5];
- char ch__1[24];
-
- /* Builtin functions */
- /* Subroutine */ int s_copy (), s_cat ();
-
- /* Local variables */
- static char cbuf[24];
- extern longint G77_time_0 ();
- extern /* Character */ void G77_ctime_0 ();
-
- i__1 = G77_time_0 ();
- G77_ctime_0 (ch__1, 24L, &i__1);
- s_copy (cbuf, ch__1, 24L, 24L);
-/* Writing concatenation */
- i__2[0] = 2, a__1[0] = cbuf + 8;
- i__2[1] = 1, a__1[1] = "-";
- i__2[2] = 3, a__1[2] = cbuf + 4;
- i__2[3] = 1, a__1[3] = "-";
- i__2[4] = 2, a__1[4] = cbuf + 22;
- s_cat (buf, a__1, i__2, &c__5, buf_len);
- return 0;
-} /* date_ */
-
-#ifdef PIC
-# include <stdio.h>
-
-const char *G77_Non_Y2K_Compliance_Message =
- "Call to non Y2K compliant subroutine detected.";
-
-int
-G77_date_y2kbuggy_0 (char *buf __attribute__ ((__unused__)),
- ftnlen buf_len __attribute__ ((__unused__)))
-{
- extern int G77_abort_0() __attribute__ ((noreturn));
- fprintf (stderr, "%s\n", G77_Non_Y2K_Compliance_Message);
- G77_abort_0 ();
-}
-#endif
diff --git a/libf2c/libU77/datetime_.c b/libf2c/libU77/datetime_.c
deleted file mode 100644
index cd7c7ca0a3b..00000000000
--- a/libf2c/libU77/datetime_.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/* Copyright (C) 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#include <sys/types.h>
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-#if defined (_WIN32)
-#include <windows.h>
-#undef min
-#undef max
-#endif
-#include "f2c.h"
-
-void s_copy (register char *a, register char *b, ftnlen la, ftnlen lb);
-
-int
-G77_date_and_time_0 (char *date, char *fftime, char *zone,
- integer * values, ftnlen date_len,
- ftnlen fftime_len, ftnlen zone_len)
-{
- time_t lt = time (&lt);
- struct tm ltime = *localtime (&lt), gtime = *gmtime (&lt);
- char dat[9], zon[6], ftim[11];
- int i, vals[8];
-#if defined (_WIN32)
- struct _SYSTEMTIME wdattim;
- GetLocalTime(&wdattim);
- vals[7] = wdattim.wMilliseconds;
-#else
- vals[7] = 0; /* no STDC/POSIX way to get this */
- /* GNUish way; maybe use `ftime' on other systems. */
-#endif
-
- vals[0] = 1900 + ltime.tm_year;
- vals[1] = 1 + ltime.tm_mon;
- vals[2] = ltime.tm_mday;
- /* fixme: year boundaries */
- vals[3] = (ltime.tm_min - gtime.tm_min +
- 60 * (ltime.tm_hour - gtime.tm_hour +
- 24 * (ltime.tm_yday - gtime.tm_yday)));
- vals[4] = ltime.tm_hour;
- vals[5] = ltime.tm_min;
- vals[6] = ltime.tm_sec;
-#if HAVE_GETTIMEOFDAY
- {
- struct timeval tp;
-# if GETTIMEOFDAY_ONE_ARGUMENT
- if (!gettimeofday (&tp))
-# else
-# if HAVE_STRUCT_TIMEZONE
- struct timezone tzp;
- /* Some systems such as HPUX, do have struct timezone, but
- gettimeofday takes void* as the 2nd arg. However, the effect
- of passing anything other than a null pointer is unspecified on
- HPUX. Configure checks if gettimeofday actually fails with a
- non-NULL arg and pretends that struct timezone is missing if it
- does fail. */
- if (!gettimeofday (&tp, &tzp))
-# else
- if (!gettimeofday (&tp, (void *) 0))
-# endif /* HAVE_STRUCT_TIMEZONE */
-# endif /* GETTIMEOFDAY_ONE_ARGUMENT */
- vals[7] = tp.tv_usec / 1000;
- }
-#endif /* HAVE_GETTIMEOFDAY */
- if (values) /* null pointer for missing optional */
- for (i = 0; i <= 7; i++)
- values[i] = vals[i];
- sprintf (dat, "%04d%02d%02d", vals[0], vals[1], vals[2]);
- s_copy (date, dat, date_len, 8);
- if (zone)
- {
- sprintf (zon, "%+03d%02d", vals[3] / 60, abs (vals[3] % 60));
- s_copy (zone, zon, zone_len, 5);
- }
- if (fftime)
- {
- sprintf (ftim, "%02d%02d%02d.%03d", vals[4], vals[5], vals[6], vals[7]);
- s_copy (fftime, ftim, fftime_len, 10);
- }
- return 0;
-}
diff --git a/libf2c/libU77/dtime_.c b/libf2c/libU77/dtime_.c
deleted file mode 100644
index dc9a8639df2..00000000000
--- a/libf2c/libU77/dtime_.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include <sys/types.h>
-#if HAVE_SYS_TIMES_H
-# include <sys/times.h>
-#endif
-#if HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#endif
-#if HAVE_GETRUSAGE
-# include <sys/time.h>
-# include <sys/resource.h>
-#endif
-#if defined (_WIN32)
-# include <windows.h>
-# undef min
-# undef max
-#endif
-#include <errno.h> /* for ENOSYS */
-#include "f2c.h"
-
-double
-G77_dtime_0 (real tarray[2])
-{
-#if defined (_WIN32)
- static int win32_platform = -1;
-
- if (win32_platform == -1)
- {
- OSVERSIONINFO osv;
- osv.dwOSVersionInfoSize = sizeof (osv);
- GetVersionEx (&osv);
- win32_platform = osv.dwPlatformId;
- }
-
- /* We need to use this hack on non-NT platforms, where the first call
- returns 0.0 and subsequent ones return the correct value. */
- if (win32_platform != VER_PLATFORM_WIN32_NT)
- {
- static unsigned long long clock_freq;
- static unsigned long long old_count;
- unsigned long long count;
- double delta;
- LARGE_INTEGER counter_val;
-
- if (clock_freq == 0)
- {
- LARGE_INTEGER freq;
- if (!QueryPerformanceFrequency (&freq))
- {
- errno = ENOSYS;
- return 0.0;
- }
- else
- {
- clock_freq = ((unsigned long long) freq.HighPart << 32)
- + ((unsigned) freq.LowPart);
- }
- }
-
- if (!QueryPerformanceCounter (&counter_val))
- return -1.0;
-
- count = ((unsigned long long) counter_val.HighPart << 32)
- + (unsigned) counter_val.LowPart;
- delta = ((double) (count - old_count)) / clock_freq;
- tarray[0] = (float) delta;
- tarray[1] = 0.0;
- old_count = count;
- }
- else
- {
- static unsigned long long old_utime, old_stime;
- unsigned long long utime, stime;
- FILETIME creation_time, exit_time, kernel_time, user_time;
-
- GetProcessTimes (GetCurrentProcess (), &creation_time, &exit_time,
- &kernel_time, &user_time);
- utime = ((unsigned long long) user_time.dwHighDateTime << 32)
- + (unsigned) user_time.dwLowDateTime;
- stime = ((unsigned long long) kernel_time.dwHighDateTime << 32)
- + (unsigned) kernel_time.dwLowDateTime;
-
- tarray[0] = (utime - old_utime) / 1.0e7;
- tarray[1] = (stime - old_stime) / 1.0e7;
- old_utime = utime;
- old_stime = stime;
- }
- return tarray[0] + tarray[1];
-
-#elif defined (HAVE_GETRUSAGE) || defined (HAVE_TIMES)
- /* The getrusage version is only the default for convenience. */
-#ifdef HAVE_GETRUSAGE
- float utime, stime;
- static float old_utime = 0.0, old_stime = 0.0;
- struct rusage rbuff;
-
- if (getrusage (RUSAGE_SELF, &rbuff) != 0)
- abort ();
- utime = (float) (rbuff.ru_utime).tv_sec +
- (float) (rbuff.ru_utime).tv_usec / 1000000.0;
- tarray[0] = utime - (float) old_utime;
- stime = (float) (rbuff.ru_stime).tv_sec +
- (float) (rbuff.ru_stime).tv_usec / 1000000.0;
- tarray[1] = stime - old_stime;
-#else /* HAVE_GETRUSAGE */
- /* For dtime, etime we store the clock tick parameter (clk_tck) the
- first time either of them is invoked rather than each time. This
- approach probably speeds up each invocation by avoiding a system
- call each time, but means that the overhead of the first call is
- different to all others. */
- static long clk_tck = 0;
- time_t utime, stime;
- static time_t old_utime = 0, old_stime = 0;
- struct tms buffer;
-
-/* NeXTStep seems to define _SC_CLK_TCK but not to have sysconf;
- fixme: does using _POSIX_VERSION help? */
-# if defined _SC_CLK_TCK && defined _POSIX_VERSION
- if (!clk_tck)
- clk_tck = sysconf (_SC_CLK_TCK);
-# elif defined CLOCKS_PER_SECOND
- if (!clk_tck)
- clk_tck = CLOCKS_PER_SECOND;
-# elif defined CLK_TCK
- if (!clk_tck)
- clk_tck = CLK_TCK;
-# elif defined HZ
- if (!clk_tck)
- clk_tck = HZ;
-# elif defined HAVE_GETRUSAGE
-# else
-#error Dont know clock tick length
-# endif
- if (times (&buffer) == (clock_t) - 1)
- return -1.0;
- utime = buffer.tms_utime;
- stime = buffer.tms_stime;
- tarray[0] = ((float) (utime - old_utime)) / (float) clk_tck;
- tarray[1] = ((float) (stime - old_stime)) / (float) clk_tck;
-#endif /* HAVE_GETRUSAGE */
- old_utime = utime;
- old_stime = stime;
- return (tarray[0] + tarray[1]);
-#else /* ! HAVE_GETRUSAGE && ! HAVE_TIMES */
- errno = ENOSYS;
- return 0.0;
-#endif /* ! HAVE_GETRUSAGE && ! HAVE_TIMES */
-}
diff --git a/libf2c/libU77/etime_.c b/libf2c/libU77/etime_.c
deleted file mode 100644
index d0edb2fbcd3..00000000000
--- a/libf2c/libU77/etime_.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include <sys/types.h>
-#if HAVE_SYS_TIMES_H
-# include <sys/times.h>
-#endif
-#if HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#endif
-#if HAVE_GETRUSAGE
-# include <sys/time.h>
-# include <sys/resource.h>
-#endif
-#if defined (_WIN32)
-# include <windows.h>
-# undef min
-# undef max
-#endif
-#include <errno.h> /* for ENOSYS */
-#include "f2c.h"
-
-double
-G77_etime_0 (real tarray[2])
-{
-#if defined (_WIN32)
- static int win32_platform = -1;
- double usertime, systime;
-
- if (win32_platform == -1)
- {
- OSVERSIONINFO osv;
- osv.dwOSVersionInfoSize = sizeof (osv);
- GetVersionEx (&osv);
- win32_platform = osv.dwPlatformId;
- }
-
- /* non-NT platforms don't have a clue as to how long a process has
- been running, so simply return the uptime. Bad judgement call? */
- if (win32_platform != VER_PLATFORM_WIN32_NT)
- {
- static unsigned long long clock_freq;
- static unsigned long long old_count;
- unsigned long long count;
- LARGE_INTEGER counter_val;
-
- if (clock_freq == 0)
- {
- LARGE_INTEGER freq;
- if (!QueryPerformanceFrequency (&freq))
- {
- errno = ENOSYS;
- return 0.0;
- }
- else
- {
- clock_freq = ((unsigned long long) freq.HighPart << 32)
- + ((unsigned) freq.LowPart);
- if (!QueryPerformanceCounter (&counter_val))
- return -1.0;
- old_count = ((unsigned long long) counter_val.HighPart << 32)
- + (unsigned) counter_val.LowPart;
- }
- }
-
- if (!QueryPerformanceCounter (&counter_val))
- return -1.0;
-
- count = ((unsigned long long) counter_val.HighPart << 32)
- + (unsigned) counter_val.LowPart;
- tarray[0] = usertime = (double) (count - old_count) / clock_freq;
- tarray[1] = systime = 0.0;
- }
- else
- {
- FILETIME creation_time, exit_time, kernel_time, user_time;
- unsigned long long utime, stime;
-
- GetProcessTimes (GetCurrentProcess (), &creation_time, &exit_time,
- &kernel_time, &user_time);
- utime = ((unsigned long long) user_time.dwHighDateTime << 32)
- + (unsigned) user_time.dwLowDateTime;
- stime = ((unsigned long long) kernel_time.dwHighDateTime << 32)
- + (unsigned) kernel_time.dwLowDateTime;
-
- tarray[0] = usertime = utime / 1.0e7;
- tarray[1] = systime = stime / 1.0e7;
- }
- return usertime + systime;
-
-#elif defined (HAVE_GETRUSAGE) || defined (HAVE_TIMES)
- /* The getrusage version is only the default for convenience. */
-#ifdef HAVE_GETRUSAGE
- struct rusage rbuff;
-
- if (getrusage (RUSAGE_SELF, &rbuff) != 0)
- abort ();
- tarray[0] = ((float) (rbuff.ru_utime).tv_sec +
- (float) (rbuff.ru_utime).tv_usec / 1000000.0);
- tarray[1] = ((float) (rbuff.ru_stime).tv_sec +
- (float) (rbuff.ru_stime).tv_usec / 1000000.0);
-#else /* HAVE_GETRUSAGE */
- /* For dtime, etime we store the clock tick parameter (clk_tck) the
- first time either of them is invoked rather than each time. This
- approach probably speeds up each invocation by avoiding a system
- call each time, but means that the overhead of the first call is
- different to all others. */
- static long clk_tck = 0;
- struct tms buffer;
-
-/* NeXTStep seems to define _SC_CLK_TCK but not to have sysconf;
- fixme: does using _POSIX_VERSION help? */
-# if defined _SC_CLK_TCK && defined _POSIX_VERSION
- if (!clk_tck)
- clk_tck = sysconf (_SC_CLK_TCK);
-# elif defined CLOCKS_PER_SECOND
- if (!clk_tck)
- clk_tck = CLOCKS_PER_SECOND;
-# elif defined CLK_TCK
- if (!clk_tck)
- clk_tck = CLK_TCK;
-# elif defined HZ
- if (!clk_tck)
- clk_tck = HZ;
-# elif defined HAVE_GETRUSAGE
-# else
-#error Dont know clock tick length
-# endif
- if (times (&buffer) == (clock_t) - 1)
- return -1.0;
- tarray[0] = (float) buffer.tms_utime / (float) clk_tck;
- tarray[1] = (float) buffer.tms_stime / (float) clk_tck;
-#endif /* HAVE_GETRUSAGE */
- return (tarray[0] + tarray[1]);
-#else /* ! HAVE_GETRUSAGE && ! HAVE_TIMES */
- errno = ENOSYS;
- return 0.0;
-#endif /* ! HAVE_GETRUSAGE && ! HAVE_TIMES */
-}
diff --git a/libf2c/libU77/fdate_.c b/libf2c/libU77/fdate_.c
deleted file mode 100644
index d710a5cb3be..00000000000
--- a/libf2c/libU77/fdate_.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright (C) 1995, 1996, 2001 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#include <sys/types.h>
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-#if HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-
-#include "f2c.h"
-
-/* NB. this implementation is for a character*24 function. There's
- also a subroutine version. Of course, the calling convention is
- essentially the same for both. */
-
-/* Character *24 */ void
-G77_fdate_0 (char *ret_val, ftnlen ret_val_len)
-{
- int s_copy ();
- time_t tloc;
- tloc = time (NULL);
- /* Allow a length other than 24 for compatibility with what other
- systems do, despite it being documented as 24. */
- s_copy (ret_val, ctime ((time_t *) & tloc), ret_val_len, 24);
-}
diff --git a/libf2c/libU77/fgetc_.c b/libf2c/libU77/fgetc_.c
deleted file mode 100644
index ec94829a6a1..00000000000
--- a/libf2c/libU77/fgetc_.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#include "f2c.h"
-#include "fio.h"
-
-integer
-G77_fgetc_0 (const integer * lunit, char *c, ftnlen Lc)
-{
- int err;
- FILE *f = f__units[*lunit].ufd;
-
- if (*lunit >= MXUNIT || *lunit < 0)
- return 101; /* bad unit error */
- err = getc (f);
- if (err == EOF)
- {
- if (feof (f))
- return -1;
- else
- return ferror (f);
- }
- else
- {
- if (Lc == 0)
- return 0;
-
- c[0] = err;
- while (--Lc)
- *++c = ' ';
- return 0;
- }
-}
-
-integer
-G77_fget_0 (char *c, const ftnlen Lc)
-{
- integer five = 5;
-
- return G77_fgetc_0 (&five, c, Lc);
-}
diff --git a/libf2c/libU77/flush1_.c b/libf2c/libU77/flush1_.c
deleted file mode 100644
index 7327593be8f..00000000000
--- a/libf2c/libU77/flush1_.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#include "f2c.h"
-#include "fio.h"
-
-/* This flushes a single unit, c.f. libI77 version. */
-
-extern integer G77_fnum_0 (integer *);
-
-/* Subroutine */ int
-G77_flush1_0 (const integer * lunit)
-{
- if (*lunit >= MXUNIT || *lunit < 0)
- err (1, 101, "flush");
- /* f__units is a table of descriptions for the unit numbers (defined
- in io.h) with file descriptors rather than streams */
- if (f__units[*lunit].ufd != NULL && f__units[*lunit].uwrt)
- fflush (f__units[*lunit].ufd);
- return 0;
-}
diff --git a/libf2c/libU77/fnum_.c b/libf2c/libU77/fnum_.c
deleted file mode 100644
index 27cadec287a..00000000000
--- a/libf2c/libU77/fnum_.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include "f2c.h"
-#include "fio.h"
-
-integer
-G77_fnum_0 (integer * lunit)
-{
- if (*lunit >= MXUNIT || *lunit < 0)
- err (1, 101, "fnum");
-
- if (f__units[*lunit].ufd == NULL)
- err (1, 114, "fnum");
-
- /* f__units is a table of descriptions for the unit numbers (defined
- in io.h). Use file descriptor (ufd) and fileno rather than udev
- field since udev is unix specific */
- return fileno (f__units[*lunit].ufd);
-}
diff --git a/libf2c/libU77/fputc_.c b/libf2c/libU77/fputc_.c
deleted file mode 100644
index 7e45dd4140c..00000000000
--- a/libf2c/libU77/fputc_.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#include "f2c.h"
-#include "fio.h"
-
-integer
-G77_fputc_0 (const integer * lunit, const char *c,
- const ftnlen Lc __attribute__ ((__unused__)))
-{
- int err;
- FILE *f = f__units[*lunit].ufd;
-
- if (*lunit >= MXUNIT || *lunit < 0)
- return 101; /* bad unit error */
- err = putc (c[0], f);
- if (err == EOF)
- {
- if (feof (f))
- return -1;
- else
- return ferror (f);
- }
- else
- return 0;
-}
-
-integer
-G77_fput_0 (const char *c, const ftnlen Lc)
-{
- integer six = 6;
-
- return G77_fputc_0 (&six, c, Lc);
-}
diff --git a/libf2c/libU77/fstat_.c b/libf2c/libU77/fstat_.c
deleted file mode 100644
index 7fd439c2a40..00000000000
--- a/libf2c/libU77/fstat_.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include "f2c.h"
-#include "fio.h"
-#include <sys/types.h>
-#include <sys/stat.h>
-
-extern integer G77_fnum_0 (const integer *);
-
-integer
-G77_fstat_0 (const integer * lunit, integer statb[13])
-{
- int err;
- struct stat buf;
-
- if (f__init != 1) f_init();
- err = fstat (G77_fnum_0 (lunit), &buf);
- statb[0] = buf.st_dev;
- statb[1] = buf.st_ino;
- statb[2] = buf.st_mode;
- statb[3] = buf.st_nlink;
- statb[4] = buf.st_uid;
- statb[5] = buf.st_gid;
-#if HAVE_ST_RDEV
- statb[6] = buf.st_rdev; /* not posix */
-#else
- statb[6] = 0;
-#endif
- statb[7] = buf.st_size;
- statb[8] = buf.st_atime;
- statb[9] = buf.st_mtime;
- statb[10] = buf.st_ctime;
-#if HAVE_ST_BLKSIZE
- statb[11] = buf.st_blksize; /* not posix */
-#else
- statb[11] = -1;
-#endif
-#if HAVE_ST_BLOCKS
- statb[12] = buf.st_blocks; /* not posix */
-#else
- statb[12] = -1;
-#endif
- return err;
-}
diff --git a/libf2c/libU77/gerror_.c b/libf2c/libU77/gerror_.c
deleted file mode 100644
index 252440dc85b..00000000000
--- a/libf2c/libU77/gerror_.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <errno.h>
-#include <stddef.h>
-#if HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-#include "f2c.h"
-
-#ifndef HAVE_STRERROR
-extern char *sys_errlist[];
-# define strerror(i) (sys_errlist[i])
-#endif
-extern void s_copy (register char *a, register char *b, ftnlen la, ftnlen lb);
-/* Subroutine */ int
-G77_gerror_0 (char *str, ftnlen Lstr)
-{
- char *s;
-
- s = strerror (errno);
- s_copy (str, s, Lstr, strlen (s));
- return 0;
-}
diff --git a/libf2c/libU77/getcwd_.c b/libf2c/libU77/getcwd_.c
deleted file mode 100644
index 75277af0f74..00000000000
--- a/libf2c/libU77/getcwd_.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <errno.h>
-#if HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-#include <stdio.h> /* for NULL */
-#include <errno.h> /* for ENOSYS */
-#include "f2c.h"
-
-#if HAVE_GETCWD
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#else
-extern char *getcwd ();
-#endif
-
-extern void s_copy (register char *a, register char *b, ftnlen la, ftnlen lb);
-integer
-G77_getcwd_0 (char *str, const ftnlen Lstr)
-{
- int i;
- char *ret;
-
- ret = getcwd (str, Lstr);
- if (ret == NULL)
- return errno;
- for (i = strlen (str); i < Lstr; i++)
- str[i] = ' ';
- return 0;
-}
-
-#elif HAVE_GETWD /* HAVE_GETCWD */
-
-/* getwd usage taken from SunOS4 man */
-
-# include <sys/param.h>
-extern char *getwd ();
-extern void s_copy (register char *a, register char *b, ftnlen la, ftnlen lb);
-integer
-G77_getcwd_0 (char *str, const ftnlen Lstr)
-{
- char pathname[MAXPATHLEN];
- size_t l;
-
- if (getwd (pathname) == NULL)
- {
- return errno;
- }
- else
- {
- s_copy (str, pathname, Lstr, strlen (str));
- return 0;
- }
-}
-
-#else /* !HAVE_GETWD && !HAVE_GETCWD */
-
-extern void s_copy (register char *a, register char *b, ftnlen la, ftnlen lb);
-integer
-G77_getcwd_0 (char *str, const ftnlen Lstr)
-{
- return errno = ENOSYS;
-}
-
-#endif
diff --git a/libf2c/libU77/getgid_.c b/libf2c/libU77/getgid_.c
deleted file mode 100644
index 7dcbdf80b57..00000000000
--- a/libf2c/libU77/getgid_.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-#include <errno.h> /* for ENOSYS */
-#include "f2c.h"
-
-integer
-G77_getgid_0 (void)
-{
-#if defined (HAVE_GETGID)
- return getgid ();
-#else
- errno = ENOSYS;
- return -1;
-#endif
-}
diff --git a/libf2c/libU77/getlog_.c b/libf2c/libU77/getlog_.c
deleted file mode 100644
index 94c5f416067..00000000000
--- a/libf2c/libU77/getlog_.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <sys/types.h>
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#else
-# include <stdio.h>
-#endif
-#include <stdio.h>
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#if HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-#include <errno.h> /* for ENOSYS */
-#include "f2c.h"
-
-/* getlogin not in svr1-3 */
-
-/* SGI also has character*(*) function getlog() */
-
-extern void s_copy (register char *a, register char *b, ftnlen la, ftnlen lb);
-/* Subroutine */ int
-G77_getlog_0 (char *str, const ftnlen Lstr)
-{
- size_t i;
- char *p;
- int status;
-
-#if defined (HAVE_GETLOGIN)
- p = getlogin ();
- if (p != NULL)
- {
- i = strlen (p);
- s_copy (str, p, Lstr, i);
- }
- else
- {
- s_copy (str, " ", Lstr, 1);
- }
- status = 0;
-#else
- errno = ENOSYS;
- status = -1;
-#endif
- return status;
-}
diff --git a/libf2c/libU77/getpid_.c b/libf2c/libU77/getpid_.c
deleted file mode 100644
index 6f1d8d7eede..00000000000
--- a/libf2c/libU77/getpid_.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-#include "f2c.h"
-
-integer
-G77_getpid_0 (void)
-{
- return getpid ();
-}
diff --git a/libf2c/libU77/getuid_.c b/libf2c/libU77/getuid_.c
deleted file mode 100644
index d88b8e2cd9a..00000000000
--- a/libf2c/libU77/getuid_.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-#include <errno.h> /* for ENOSYS */
-#include "f2c.h"
-
-integer
-G77_getuid_0 (void)
-{
-#if defined (HAVE_GETUID)
- return getuid ();
-#else
- errno = ENOSYS;
- return -1;
-#endif
-}
diff --git a/libf2c/libU77/gmtime_.c b/libf2c/libU77/gmtime_.c
deleted file mode 100644
index 9de3c5a8de5..00000000000
--- a/libf2c/libU77/gmtime_.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright (C) 1995, 2001 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <sys/types.h>
-/* fixme: do we need to use TM_IN_SYS_TIME? */
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-#include "f2c.h"
-
-/* Subroutine */ int
-G77_gmtime_0 (const integer * xstime, integer tarray[9])
-{
- struct tm *lt;
- time_t stime = *xstime;
- lt = gmtime (&stime);
- tarray[0] = lt->tm_sec;
- tarray[1] = lt->tm_min;
- tarray[2] = lt->tm_hour;
- tarray[3] = lt->tm_mday;
- tarray[4] = lt->tm_mon;
- tarray[5] = lt->tm_year;
- tarray[6] = lt->tm_wday;
- tarray[7] = lt->tm_yday;
- tarray[8] = lt->tm_isdst;
- return 0;
-}
diff --git a/libf2c/libU77/hostnm_.c b/libf2c/libU77/hostnm_.c
deleted file mode 100644
index 7f511f422bb..00000000000
--- a/libf2c/libU77/hostnm_.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include <errno.h> /* for ENOSYS */
-#include "f2c.h"
-
-integer
-G77_hostnm_0 (char *name, ftnlen Lname)
-{
- int ret, i;
-
-#if HAVE_GETHOSTNAME
- ret = gethostname (name, Lname);
- if (ret == 0)
- {
- /* Pad with blanks (assuming gethostname will make an error
- return if it can't fit in the null). */
- for (i = strlen (name); i < Lname; i++)
- name[i] = ' ';
- }
- return ret;
-#else
- return errno = ENOSYS;
-#endif
-}
diff --git a/libf2c/libU77/idate_.c b/libf2c/libU77/idate_.c
deleted file mode 100644
index f2bea12e59d..00000000000
--- a/libf2c/libU77/idate_.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright (C) 1995, 1996, 2001 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#include <sys/types.h>
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-#include "f2c.h"
-
-/* VMS and Irix versions (at least) differ from libU77 elsewhere */
-
-/* libU77 one: */
-
-/* Subroutine */ int
-G77_idate_0 (int iarray[3])
-{
- struct tm *lt;
- time_t tim;
- tim = time (NULL);
- lt = localtime (&tim);
- iarray[0] = lt->tm_mday;
- iarray[1] = lt->tm_mon + 1; /* in range 1-12 in SunOS (experimentally) */
- /* The `+1900' is consistent with SunOS and Irix, but they don't say
- it's added. I think I've seen a system where tm_year was since
- 1970, but can't now verify that, so assume the ANSI definition. */
- iarray[2] = lt->tm_year + 1900;
- return 0;
-}
diff --git a/libf2c/libU77/ierrno_.c b/libf2c/libU77/ierrno_.c
deleted file mode 100644
index 0dc76b0262f..00000000000
--- a/libf2c/libU77/ierrno_.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <errno.h>
-#include "f2c.h"
-
-integer
-G77_ierrno_0 (void)
-{
- return errno;
-}
diff --git a/libf2c/libU77/irand_.c b/libf2c/libU77/irand_.c
deleted file mode 100644
index a9054311515..00000000000
--- a/libf2c/libU77/irand_.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-#include "f2c.h"
-
-/* We could presumably do much better than the traditional libc
- version, though at least the glibc one is reasonable, it seems.
- For the sake of the innocent, I'm not sure we should really do
- this... */
-
-/* Note this is per SunOS -- other s may have no arg. */
-
-integer
-G77_irand_0 (integer * flag)
-{
- switch (*flag)
- {
- case 0:
- break;
- case 1:
- srand (0); /* Arbitrary choice of initialiser. */
- break;
- default:
- srand (*flag);
- }
- return rand ();
-}
diff --git a/libf2c/libU77/isatty_.c b/libf2c/libU77/isatty_.c
deleted file mode 100644
index a781f757bc5..00000000000
--- a/libf2c/libU77/isatty_.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include "f2c.h"
-#include "fio.h"
-
-extern integer G77_fnum_0 (integer *);
-
-logical
-G77_isatty_0 (integer * lunit)
-{
- if (f__init != 1) f_init();
- if (*lunit >= MXUNIT || *lunit < 0)
- err (1, 101, "isatty");
- /* f__units is a table of descriptions for the unit numbers (defined
- in io.h) with file descriptors rather than streams */
- return (isatty (G77_fnum_0 (lunit)) ? TRUE_ : FALSE_);
-}
diff --git a/libf2c/libU77/itime_.c b/libf2c/libU77/itime_.c
deleted file mode 100644
index 12a7864fd97..00000000000
--- a/libf2c/libU77/itime_.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (C) 1995, 2001 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#include <sys/types.h>
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-#include "f2c.h"
-
-/* Subroutine */ int
-G77_itime_0 (integer tarray[3])
-{
- struct tm *lt;
- time_t tim;
-
- tim = time (NULL);
- lt = localtime (&tim);
- tarray[0] = lt->tm_hour;
- tarray[1] = lt->tm_min;
- tarray[2] = lt->tm_sec;
- return 0;
-}
diff --git a/libf2c/libU77/kill_.c b/libf2c/libU77/kill_.c
deleted file mode 100644
index 41eab152cbf..00000000000
--- a/libf2c/libU77/kill_.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <sys/types.h>
-#include <signal.h>
-#include <errno.h>
-#include "f2c.h"
-
-/* fixme: bsd, svr1-3 use int, not pid_t */
-
-integer
-G77_kill_0 (const integer * pid, const integer * signum)
-{
-#if defined (HAVE_KILL)
- return kill ((pid_t) * pid, *signum) ? errno : 0;
-#else
- errno = ENOSYS;
- return -1;
-#endif
-}
diff --git a/libf2c/libU77/link_.c b/libf2c/libU77/link_.c
deleted file mode 100644
index f3070e4b6e9..00000000000
--- a/libf2c/libU77/link_.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#else
-# include <stdio.h>
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include <errno.h>
-#if HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#endif
-#include <errno.h> /* for ENOSYS */
-#include "f2c.h"
-
-void g_char (const char *a, ftnlen alen, char *b);
-
-integer
-G77_link_0 (const char *path1, const char *path2, const ftnlen Lpath1,
- const ftnlen Lpath2)
-{
-#if defined (HAVE_LINK)
- char *buff1, *buff2;
- int i;
-
- buff1 = malloc (Lpath1 + 1);
- if (buff1 == NULL)
- return -1;
- g_char (path1, Lpath1, buff1);
- buff2 = malloc (Lpath2 + 1);
- if (buff2 == NULL)
- return -1;
- g_char (path2, Lpath2, buff2);
- i = link (buff1, buff2);
- free (buff1);
- free (buff2);
- return i ? errno : 0;
-#else /* ! HAVE_LINK */
- errno = ENOSYS;
- return -1;
-#endif
-}
diff --git a/libf2c/libU77/lnblnk_.c b/libf2c/libU77/lnblnk_.c
deleted file mode 100644
index f21ac42398b..00000000000
--- a/libf2c/libU77/lnblnk_.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-
-/* via f2c from Fortran */
-
-#include "f2c.h"
-
-integer
-G77_lnblnk_0 (char *str, ftnlen str_len)
-{
- integer ret_val;
- integer i_len ();
-
- for (ret_val = str_len; ret_val >= 1; --ret_val)
- {
- if (*(unsigned char *) &str[ret_val - 1] != ' ')
- {
- return ret_val;
- }
- }
- return ret_val;
-}
diff --git a/libf2c/libU77/lstat_.c b/libf2c/libU77/lstat_.c
deleted file mode 100644
index 3914cc64ff4..00000000000
--- a/libf2c/libU77/lstat_.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <errno.h> /* for ENOSYS */
-#include "f2c.h"
-
-/* lstat isn't posix */
-
-void g_char (const char *a, ftnlen alen, char *b);
-
-integer
-G77_lstat_0 (const char *name, integer statb[13], const ftnlen Lname)
-{
-#if HAVE_LSTAT
- char *buff;
- int err;
- struct stat buf;
-
- buff = malloc (Lname + 1);
- if (buff == NULL)
- return -1;
- g_char (name, Lname, buff);
- err = lstat (buff, &buf);
- free (buff);
- statb[0] = buf.st_dev;
- statb[1] = buf.st_ino;
- statb[2] = buf.st_mode;
- statb[3] = buf.st_nlink;
- statb[4] = buf.st_uid;
- statb[5] = buf.st_gid;
-#if HAVE_ST_RDEV
- statb[6] = buf.st_rdev;
-#else
- statb[6] = 0;
-#endif
- statb[7] = buf.st_size;
- statb[8] = buf.st_atime;
- statb[9] = buf.st_mtime;
- statb[10] = buf.st_ctime;
-#if HAVE_ST_BLKSIZE
- statb[11] = buf.st_blksize;
-#else
- statb[11] = -1;
-#endif
-#if HAVE_ST_BLOCKS
- statb[12] = buf.st_blocks;
-#else
- statb[12] = -1;
-#endif
- return err;
-#else /* !HAVE_LSTAT */
- return errno = ENOSYS;
-#endif /* !HAVE_LSTAT */
-}
diff --git a/libf2c/libU77/ltime_.c b/libf2c/libU77/ltime_.c
deleted file mode 100644
index 008df1dd08d..00000000000
--- a/libf2c/libU77/ltime_.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright (C) 1995, 2001 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <sys/types.h>
-/* fixme: do we need to use TM_IN_SYS_TIME? */
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-#include "f2c.h"
-
-/* Subroutine */ int
-G77_ltime_0 (const integer * xstime, integer tarray[9])
-{
- struct tm *lt;
- time_t stime = *xstime;
- lt = localtime (&stime);
- tarray[0] = lt->tm_sec;
- tarray[1] = lt->tm_min;
- tarray[2] = lt->tm_hour;
- tarray[3] = lt->tm_mday;
- tarray[4] = lt->tm_mon;
- tarray[5] = lt->tm_year;
- tarray[6] = lt->tm_wday;
- tarray[7] = lt->tm_yday;
- tarray[8] = lt->tm_isdst;
- return 0;
-}
diff --git a/libf2c/libU77/mclock_.c b/libf2c/libU77/mclock_.c
deleted file mode 100644
index 686c4906751..00000000000
--- a/libf2c/libU77/mclock_.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-#include "f2c.h"
-
-/* Reported by wd42ej@sgi83.wwb.noaa.gov (Russ Jones AUTO-Sun3) on AIX. */
-
-longint
-G77_mclock_0 (void)
-{
-#if HAVE_CLOCK
- return clock ();
-#else
- return -1;
-#endif
-}
diff --git a/libf2c/libU77/perror_.c b/libf2c/libU77/perror_.c
deleted file mode 100644
index 6fe96aa6fc2..00000000000
--- a/libf2c/libU77/perror_.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#include <errno.h>
-#if HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-#include "f2c.h"
-
-/* Subroutine */ int
-G77_perror_0 (const char *str, const ftnlen Lstr)
-{
- char buff[1000];
- char *bp, *blast;
-
- /* same technique as `system' -- what's wrong with malloc? */
- blast = buff + (Lstr < 1000 ? Lstr : 1000);
- for (bp = buff; bp < blast && *str != '\0';)
- *bp++ = *str++;
- *bp = '\0';
- perror (buff);
- return 0;
-}
diff --git a/libf2c/libU77/rand_.c b/libf2c/libU77/rand_.c
deleted file mode 100644
index 1592dc5ab38..00000000000
--- a/libf2c/libU77/rand_.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-#include "f2c.h"
-#ifndef RAND_MAX
-# define RAND_MAX 2147483647 /* from SunOS */
-#endif
-
-/* We could presumably do much better than the traditional libc
- version, though at least the glibc one is reasonable, it seems.
- For the sake of the innocent, I'm not sure we should really do
- this... */
-
-/* Note this is per SunOS -- other s may have no arg. */
-
-double
-G77_rand_0 (integer * flag)
-{
- switch (*flag)
- {
- case 0:
- break;
- case 1:
- srand (0); /* Arbitrary choice of initialiser. */
- break;
- default:
- srand (*flag);
- }
- return (float) rand () / RAND_MAX;
-}
diff --git a/libf2c/libU77/rename_.c b/libf2c/libU77/rename_.c
deleted file mode 100644
index 59759bcfb54..00000000000
--- a/libf2c/libU77/rename_.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-#include <stdio.h>
-#include <errno.h>
-#include "f2c.h"
-
-void g_char (const char *a, ftnlen alen, char *b);
-
-integer
-G77_rename_0 (const char *path1, const char *path2, const ftnlen Lpath1,
- const ftnlen Lpath2)
-{
- char *buff1, *buff2;
- int i;
-
- buff1 = malloc (Lpath1 + 1);
- if (buff1 == NULL)
- return -1;
- g_char (path1, Lpath1, buff1);
- buff2 = malloc (Lpath2 + 1);
- if (buff2 == NULL)
- return -1;
- g_char (path2, Lpath2, buff2);
- i = rename (buff1, buff2);
- free (buff1);
- free (buff2);
- return i ? errno : 0;
-}
diff --git a/libf2c/libU77/secnds_.c b/libf2c/libU77/secnds_.c
deleted file mode 100644
index 1d661a9ad6b..00000000000
--- a/libf2c/libU77/secnds_.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-#include <sys/types.h>
-
-#include "f2c.h"
-
-/* This is a VMS intrinsic. */
-
-double
-G77_secnds_0 (real * r)
-{
- struct tm *lt;
- time_t clock;
- float f;
-
- clock = time (NULL);
- lt = localtime (&clock);
- f = (3600.0 * ((real) lt->tm_hour) + 60.0 * ((real) lt->tm_min) +
- (real) lt->tm_sec - *r);
- return f;
-}
diff --git a/libf2c/libU77/second_.c b/libf2c/libU77/second_.c
deleted file mode 100644
index b40474a49a7..00000000000
--- a/libf2c/libU77/second_.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#include "f2c.h"
-
-double
-G77_second_0 ()
-{
- extern double G77_etime_0 ();
- real tarray[2];
-
- return G77_etime_0 (tarray);
-}
diff --git a/libf2c/libU77/sleep_.c b/libf2c/libU77/sleep_.c
deleted file mode 100644
index fcf112a1c6a..00000000000
--- a/libf2c/libU77/sleep_.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include "f2c.h"
-
-/* Subroutine */
-int
-G77_sleep_0 (const integer * seconds)
-{
- (void) sleep ((unsigned int) *seconds);
- return 0;
-}
diff --git a/libf2c/libU77/srand_.c b/libf2c/libU77/srand_.c
deleted file mode 100644
index 822d980dd0f..00000000000
--- a/libf2c/libU77/srand_.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if STDC_HEADERS
-# include <stdlib.h>
-#endif
-#include "f2c.h"
-
-/* Subroutine */
-int
-G77_srand_0 (const integer * seed)
-{
- srand ((unsigned int) *seed);
- return 0;
-}
diff --git a/libf2c/libU77/stat_.c b/libf2c/libU77/stat_.c
deleted file mode 100644
index 65a63b7c9f5..00000000000
--- a/libf2c/libU77/stat_.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-#include <sys/types.h>
-#include <sys/stat.h>
-#include "f2c.h"
-
-void g_char (const char *a, ftnlen alen, char *b);
-
-integer
-G77_stat_0 (const char *name, integer statb[13], const ftnlen Lname)
-{
- char *buff;
- int err;
- struct stat buf;
-
- buff = malloc (Lname + 1);
- if (buff == NULL)
- return -1;
- g_char (name, Lname, buff);
- err = stat (buff, &buf);
- free (buff);
- statb[0] = buf.st_dev;
- statb[1] = buf.st_ino;
- statb[2] = buf.st_mode;
- statb[3] = buf.st_nlink;
- statb[4] = buf.st_uid;
- statb[5] = buf.st_gid;
-#if HAVE_ST_RDEV
- statb[6] = buf.st_rdev; /* not posix */
-#else
- statb[6] = 0;
-#endif
- statb[7] = buf.st_size;
- statb[8] = buf.st_atime;
- statb[9] = buf.st_mtime;
- statb[10] = buf.st_ctime;
-#if HAVE_ST_BLKSIZE
- statb[11] = buf.st_blksize; /* not posix */
-#else
- statb[11] = -1;
-#endif
-#if HAVE_ST_BLOCKS
- statb[12] = buf.st_blocks; /* not posix */
-#else
- statb[12] = -1;
-#endif
- return err;
-}
diff --git a/libf2c/libU77/symlnk_.c b/libf2c/libU77/symlnk_.c
deleted file mode 100644
index 92ec605a423..00000000000
--- a/libf2c/libU77/symlnk_.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-This file is part of GNU Fortran.
-
-GNU Fortran is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#else
-# include <stdio.h>
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include <errno.h>
-#if HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#endif
-#include "f2c.h"
-
-void g_char (const char *a, ftnlen alen, char *b);
-
-integer
-G77_symlnk_0 (const char *path1, const char *path2, const ftnlen Lpath1,
- const ftnlen Lpath2)
-{
-#if HAVE_SYMLINK
- char *buff1, *buff2;
- int i;
-
- buff1 = (char *) malloc (Lpath1 + 1);
- if (buff1 == NULL)
- return -1;
- g_char (path1, Lpath1, buff1);
- buff2 = (char *) malloc (Lpath2 + 1);
- if (buff2 == NULL)
- return -1;
- g_char (path2, Lpath2, buff2);
- i = symlink (buff1, buff2);
- free (buff1);
- free (buff2);
- return i ? errno : 0;
-#else /* !HAVE_SYMLINK */
- return errno = ENOSYS;
-#endif /* !HAVE_SYMLINK */
-}
diff --git a/libf2c/libU77/sys_clock_.c b/libf2c/libU77/sys_clock_.c
deleted file mode 100644
index ea39eead4f0..00000000000
--- a/libf2c/libU77/sys_clock_.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Copyright (C) 1996, 1998, 2001 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <sys/types.h>
-#if HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#endif
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-#if HAVE_SYS_TIMES_H
-# include <sys/times.h>
-#endif
-#include <limits.h>
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include <errno.h> /* for ENOSYS */
-#include "f2c.h"
-
-int
-G77_system_clock_0 (integer * count, integer * count_rate,
- integer * count_max)
-{
-#if defined (HAVE_TIMES)
- struct tms buffer;
- unsigned long cnt;
- if (count_rate)
- {
-#ifdef _SC_CLK_TCK
- *count_rate = sysconf (_SC_CLK_TCK);
-#elif defined CLOCKS_PER_SECOND
- *count_rate = CLOCKS_PER_SECOND;
-#elif defined CLK_TCK
- *count_rate = CLK_TCK;
-#elif defined HZ
- *count_rate = HZ;
-#else
-#error Dont know clock tick length
-#endif
- }
- if (count_max) /* optional arg present? */
- *count_max = INT_MAX; /* dubious */
- cnt = times (&buffer);
- if (cnt > (unsigned long) (INT_MAX))
- *count = INT_MAX; /* also dubious */
- else
- *count = cnt;
- return 0;
-#else /* ! HAVE_TIMES */
- errno = ENOSYS;
- return -1;
-#endif /* ! HAVE_TIMES */
-}
diff --git a/libf2c/libU77/time_.c b/libf2c/libU77/time_.c
deleted file mode 100644
index 2eb8a413991..00000000000
--- a/libf2c/libU77/time_.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (C) 1995 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-#include "f2c.h"
-
-/* As well as this external function some compilers have an intrinsic
- subroutine which fills a character argument (which is the VMS way)
- -- caveat emptor. */
-longint
-G77_time_0 (void)
-{
- /* There are potential problems with the cast of the time_t here. */
- return time (NULL);
-}
diff --git a/libf2c/libU77/ttynam_.c b/libf2c/libU77/ttynam_.c
deleted file mode 100644
index ffdf5bfdf9a..00000000000
--- a/libf2c/libU77/ttynam_.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <sys/types.h>
-#if STDC_HEADERS
-# include <stdlib.h>
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h> /* POSIX for ttyname */
-#endif
-#include <stdio.h>
-#if HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-#include <errno.h> /* for ENOSYS */
-#include "f2c.h"
-
-extern integer G77_fnum_0 (integer * lunit);
-extern void s_copy (register char *a, register char *b, ftnlen la, ftnlen lb);
-/* Character */ void
-G77_ttynam_0 (char *ret_val, ftnlen ret_val_len, integer * lunit)
-{
-#if defined (HAVE_TTYNAME)
- size_t i;
- char *p;
-
- p = ttyname (G77_fnum_0 (lunit));
- if (p != NULL)
- {
- i = strlen (p);
- s_copy (ret_val, p, ret_val_len, i);
- }
- else
- {
- s_copy (ret_val, " ", ret_val_len, 1);
- }
-#else
- errno = ENOSYS;
- s_copy (ret_val, " ", ret_val_len, 1);
-#endif
-}
diff --git a/libf2c/libU77/u77-test.f b/libf2c/libU77/u77-test.f
deleted file mode 100644
index 3c8151c533d..00000000000
--- a/libf2c/libU77/u77-test.f
+++ /dev/null
@@ -1,415 +0,0 @@
-*** Some random stuff for testing libU77. Should be done better. It's
-* hard to test things where you can't guarantee the result. Have a
-* good squint at what it prints, though detected errors will cause
-* starred messages.
-*
-* Currently not tested:
-* ALARM
-* CHDIR (func)
-* CHMOD (func)
-* FGET (func/subr)
-* FGETC (func)
-* FPUT (func/subr)
-* FPUTC (func)
-* FSTAT (subr)
-* GETCWD (subr)
-* HOSTNM (subr)
-* IRAND
-* KILL
-* LINK (func)
-* LSTAT (subr)
-* RENAME (func/subr)
-* SIGNAL (subr)
-* SRAND
-* STAT (subr)
-* SYMLNK (func/subr)
-* UMASK (func)
-* UNLINK (func)
-*
-* NOTE! This is the libU77 version, so it should be a bit more
-* "interactive" than the testsuite version, which is in
-* gcc/testsuite/g77.f-torture/execute/u77-test.f.
-* This version purposely exits with a "failure" status, to test
-* returning of non-zero status, and it doesn't call the ABORT
-* intrinsic (it substitutes an EXTERNAL stub, so the code can be
-* kept nearly the same in both copies). Also, it goes ahead and
-* tests the HOSTNM intrinsic. Please keep the other copy up-to-date when
-* you modify this one.
-
- implicit none
-
-* external hostnm
- intrinsic hostnm
- integer hostnm
-
- integer i, j, k, ltarray (9), idat (3), count, rate, count_max,
- + pid, mask
- real tarray1(2), tarray2(2), r1, r2
- double precision d1
- integer(kind=2) bigi
- logical issum
- intrinsic getpid, getuid, getgid, ierrno, gerror, time8,
- + fnum, isatty, getarg, access, unlink, fstat, iargc,
- + stat, lstat, getcwd, gmtime, etime, chmod, itime, date,
- + chdir, fgetc, fputc, system_clock, second, idate, secnds,
- + time, ctime, fdate, ttynam, date_and_time, mclock, mclock8,
- + cpu_time, dtime, ftell, abort
- external lenstr, ctrlc
- integer lenstr
- logical l
- character gerr*80, c*1
- character ctim*25, line*80, lognam*20, wd*1000, line2*80,
- + ddate*8, ttime*10, zone*5, ctim2*25
- integer fstatb (13), statb (13)
- integer *2 i2zero
- integer values(8)
- integer(kind=7) sigret
-
- i = time ()
- ctim = ctime (i)
- WRITE (6,'(A/)') '1 GNU libU77 test at: ' // ctim(:lenstr (ctim))
- write (6,'(A,I3,'', '',I3)')
- + ' Logical units 5 and 6 correspond (FNUM) to'
- + // ' Unix i/o units ', fnum(5), fnum(6)
- if (lnblnk('foo ').ne.3 .or. len_trim('foo ').ne.3) then
- print *, 'LNBLNK or LEN_TRIM failed'
- call abort
- end if
-
- bigi = time8 ()
-
- call ctime (i, ctim2)
- if (ctim .ne. ctim2) then
- write (6, *) '*** CALL CTIME disagrees with CTIME(): ',
- + ctim2(:lenstr (ctim2)), ' vs. ', ctim(:lenstr (ctim))
- call doabort
- end if
-
- j = time ()
- if (i .gt. bigi .or. bigi .gt. j) then
- write (6, *) '*** TIME/TIME8/TIME sequence failures: ',
- + i, bigi, j
- call doabort
- end if
-
- print *, 'Command-line arguments: ', iargc ()
- do i = 0, iargc ()
- call getarg (i, line)
- print *, 'Arg ', i, ' is: ', line(:lenstr (line))
- end do
-
- l= isatty(6)
- line2 = ttynam(6)
- if (l) then
- line = 'and 6 is a tty device (ISATTY) named '//line2
- else
- line = 'and 6 isn''t a tty device (ISATTY)'
- end if
- write (6,'(1X,A)') line(:lenstr(line))
- call ttynam (6, line)
- if (line .ne. line2) then
- print *, '*** CALL TTYNAM disagrees with TTYNAM: ',
- + line(:lenstr (line))
- call doabort
- end if
-
-* regression test for compiler crash fixed by JCB 1998-08-04 com.c
- sigret = signal(2, ctrlc)
-
- pid = getpid()
- WRITE (6,'(A,I10)') ' Process id (GETPID): ', pid
- WRITE (6,'(A,I10)') ' User id (GETUID): ', GETUID ()
- WRITE (6,'(A,I10)') ' Group id (GETGID): ', GETGID ()
- WRITE (6, *) 'If you have the `id'' program, the following call'
- write (6, *) 'of SYSTEM should agree with the above:'
- call flush(6)
- CALL SYSTEM ('echo " " `id`')
- call flush
-
- lognam = 'blahblahblah'
- call getlog (lognam)
- write (6,*) 'Login name (GETLOG): ', lognam(:lenstr (lognam))
-
- wd = 'blahblahblah'
- call getenv ('LOGNAME', wd)
- write (6,*) 'Login name (GETENV of LOGNAME): ', wd(:lenstr (wd))
-
- call umask(0, mask)
- write(6,*) 'UMASK returns', mask
- call umask(mask)
-
- ctim = fdate()
- write (6,*) 'FDATE returns: ', ctim(:lenstr (ctim))
- call fdate (ctim)
- write (6,*) 'CALL FDATE returns: ', ctim(:lenstr (ctim))
-
- j=time()
- call ltime (j, ltarray)
- write (6,'(1x,a,9i4)') 'LTIME returns:', ltarray
- call gmtime (j, ltarray)
- write (6,'(1x,a,9i4)') 'GMTIME returns:', ltarray
-
- call system_clock(count) ! omitting optional args
- call system_clock(count, rate, count_max)
- write(6,*) 'SYSTEM_CLOCK returns: ', count, rate, count_max
-
- call date_and_time(ddate) ! omitting optional args
- call date_and_time(ddate, ttime, zone, values)
- write(6, *) 'DATE_AND_TIME returns: ', ddate, ' ', ttime, ' ',
- + zone, ' ', values
-
- write (6,*) 'Sleeping for 1 second (SLEEP) ...'
- call sleep (1)
-
-c consistency-check etime vs. dtime for first call
- r1 = etime (tarray1)
- r2 = dtime (tarray2)
- if (abs (r1-r2).gt.1.0) then
- write (6,*)
- + 'Results of ETIME and DTIME differ by more than a second:',
- + r1, r2
- call doabort
- end if
- if (.not. issum (r1, tarray1(1), tarray1(2))) then
- write (6,*) '*** ETIME didn''t return sum of the array: ',
- + r1, ' /= ', tarray1(1), '+', tarray1(2)
- call doabort
- end if
- if (.not. issum (r2, tarray2(1), tarray2(2))) then
- write (6,*) '*** DTIME didn''t return sum of the array: ',
- + r2, ' /= ', tarray2(1), '+', tarray2(2)
- call doabort
- end if
- write (6, '(A,3F10.3)')
- + ' Elapsed total, user, system time (ETIME): ',
- + r1, tarray1
-
-c now try to get times to change enough to see in etime/dtime
- write (6,*) 'Looping until clock ticks at least once...'
- do i = 1,1000
- do j = 1,1000
- end do
- call dtime (tarray2, r2)
- if (tarray2(1) .ne. 0. .or. tarray2(2) .ne. 0.) exit
- end do
- call etime (tarray1, r1)
- if (.not. issum (r1, tarray1(1), tarray1(2))) then
- write (6,*) '*** ETIME didn''t return sum of the array: ',
- + r1, ' /= ', tarray1(1), '+', tarray1(2)
- call doabort
- end if
- if (.not. issum (r2, tarray2(1), tarray2(2))) then
- write (6,*) '*** DTIME didn''t return sum of the array: ',
- + r2, ' /= ', tarray2(1), '+', tarray2(2)
- call doabort
- end if
- write (6, '(A,3F10.3)')
- + ' Differences in total, user, system time (DTIME): ',
- + r2, tarray2
- write (6, '(A,3F10.3)')
- + ' Elapsed total, user, system time (ETIME): ',
- + r1, tarray1
- write (6, *) '(Clock-tick detected after ', i, ' 1K loops.)'
-
- call idate (i,j,k)
- call idate (idat)
- write (6,*) 'IDATE (date,month,year): ',idat
- print *, '... and the VXT version (month,date,year): ', i,j,k
- if (i/=idat(2) .or. j/=idat(1) .or. k/=mod(idat(3),100)) then
- print *, '*** VXT and U77 versions don''t agree'
- call doabort
- end if
-
- call date (ctim)
- write (6,*) 'DATE (dd-mmm-yy): ', ctim(:lenstr (ctim))
-
- call itime (idat)
- write (6,*) 'ITIME (hour,minutes,seconds): ', idat
-
- call time(line(:8))
- print *, 'TIME: ', line(:8)
-
- write (6,*) 'SECNDS(0.0) returns: ',secnds(0.0)
-
- write (6,*) 'SECOND returns: ', second()
- call dumdum(r1)
- call second(r1)
- write (6,*) 'CALL SECOND returns: ', r1
-
-* compiler crash fixed by 1998-10-01 com.c change
- if (rand(0).lt.0.0 .or. rand(0).gt.1.0) then
- write (6,*) '*** rand(0) error'
- call doabort()
- end if
-
- i = getcwd(wd)
- if (i.ne.0) then
- call perror ('*** getcwd')
- call doabort
- else
- write (6,*) 'Current directory is "'//wd(:lenstr(wd))//'"'
- end if
- call chdir ('.',i)
- if (i.ne.0) then
- write (6,*) '***CHDIR to ".": ', i
- call doabort
- end if
-
- i=hostnm(wd)
- if(i.ne.0) then
- call perror ('*** hostnm')
- call doabort
- else
- write (6,*) 'Host name is ', wd(:lenstr(wd))
- end if
-
- i = access('/dev/null ', 'rw')
- if (i.ne.0) write (6,*) '***Read/write ACCESS to /dev/null: ', i
- write (6,*) 'Creating file "foo" for testing...'
- open (3,file='foo',status='UNKNOWN')
- rewind 3
- call fputc(3, 'c',i)
- call fputc(3, 'd',j)
- if (i+j.ne.0) write(6,*) '***FPUTC: ', i
-C why is it necessary to reopen? (who wrote this?)
-C the better to test with, my dear! (-- burley)
- close(3)
- open(3,file='foo',status='old')
- call fseek(3,0,0,*10)
- go to 20
- 10 write(6,*) '***FSEEK failed'
- call doabort
- 20 call fgetc(3, c,i)
- if (i.ne.0) then
- write(6,*) '***FGETC: ', i
- call doabort
- end if
- if (c.ne.'c') then
- write(6,*) '***FGETC read the wrong thing: ', ichar(c)
- call doabort
- end if
- i= ftell(3)
- if (i.ne.1) then
- write(6,*) '***FTELL offset: ', i
- call doabort
- end if
- call ftell(3, i)
- if (i.ne.1) then
- write(6,*) '***CALL FTELL offset: ', i
- call doabort
- end if
- call chmod ('foo', 'a+w',i)
- if (i.ne.0) then
- write (6,*) '***CHMOD of "foo": ', i
- call doabort
- end if
- i = fstat (3, fstatb)
- if (i.ne.0) then
- write (6,*) '***FSTAT of "foo": ', i
- call doabort
- end if
- i = stat ('foo', statb)
- if (i.ne.0) then
- write (6,*) '***STAT of "foo": ', i
- call doabort
- end if
- write (6,*) ' with stat array ', statb
- if (statb(6) .ne. getgid ()) then
- write (6,*) 'Note: FSTAT gid wrong (happens on some systems).'
- end if
- if (statb(5) .ne. getuid () .or. statb(4) .ne. 1) then
- write (6,*) '*** FSTAT uid or nlink is wrong'
- call doabort
- end if
- do i=1,13
- if (fstatb (i) .ne. statb (i)) then
- write (6,*) '*** FSTAT and STAT don''t agree on '// '
- + array element ', i, ' value ', fstatb (i), statb (i)
- call doabort
- end if
- end do
- i = lstat ('foo', fstatb)
- do i=1,13
- if (fstatb (i) .ne. statb (i)) then
- write (6,*) '*** LSTAT and STAT don''t agree on '//
- + 'array element ', i, ' value ', fstatb (i), statb (i)
- call doabort
- end if
- end do
-
-C in case it exists already:
- call unlink ('bar',i)
- call link ('foo ', 'bar ',i)
- if (i.ne.0) then
- write (6,*) '***LINK "foo" to "bar" failed: ', i
- call doabort
- end if
- call unlink ('foo',i)
- if (i.ne.0) then
- write (6,*) '***UNLINK "foo" failed: ', i
- call doabort
- end if
- call unlink ('foo',i)
- if (i.eq.0) then
- write (6,*) '***UNLINK "foo" again: ', i
- call doabort
- end if
-
- call gerror (gerr)
- i = ierrno()
- write (6,'(A,I3,A/1X,A)') ' The current error number is: ',
- + i,
- + ' and the corresponding message is:', gerr(:lenstr(gerr))
- write (6,*) 'This is sent to stderr prefixed by the program name'
- call getarg (0, line)
- call perror (line (:lenstr (line)))
- call unlink ('bar')
-
- print *, 'MCLOCK returns ', mclock ()
- print *, 'MCLOCK8 returns ', mclock8 ()
-
- call cpu_time (d1)
- print *, 'CPU_TIME returns ', d1
-
- WRITE (6,*) 'You should see exit status 1'
- CALL EXIT(1)
- 99 END
-
-* Return length of STR not including trailing blanks, but always > 0.
- integer function lenstr (str)
- character*(*) str
- if (str.eq.' ') then
- lenstr=1
- else
- lenstr = lnblnk (str)
- end if
- end
-
-* Just make sure SECOND() doesn't "magically" work the second time.
- subroutine dumdum(r)
- r = 3.14159
- end
-
-* Test whether sum is approximately left+right.
- logical function issum (sum, left, right)
- implicit none
- real sum, left, right
- real mysum, delta, width
- mysum = left + right
- delta = abs (mysum - sum)
- width = abs (left) + abs (right)
- issum = (delta .le. .0001 * width)
- end
-
-* Signal handler
- subroutine ctrlc
- print *, 'Got ^C'
- call doabort
- end
-
-* A problem has been noticed, so maybe abort the test.
- subroutine doabort
-* For this version, print out all problems noticed.
-* intrinsic abort
-* call abort
- end
diff --git a/libf2c/libU77/umask_.c b/libf2c/libU77/umask_.c
deleted file mode 100644
index 5c4546a83ac..00000000000
--- a/libf2c/libU77/umask_.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <sys/types.h>
-#include <sys/stat.h>
-#include "f2c.h"
-
-integer
-G77_umask_0 (integer * mask)
-{
- return umask ((mode_t) * mask);
-}
diff --git a/libf2c/libU77/unlink_.c b/libf2c/libU77/unlink_.c
deleted file mode 100644
index 08222d92749..00000000000
--- a/libf2c/libU77/unlink_.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#else
-# include <stdio.h>
-#endif
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#include <errno.h>
-#if HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#endif
-#include "f2c.h"
-
-void g_char (const char *a, ftnlen alen, char *b);
-
-integer
-G77_unlink_0 (const char *str, const ftnlen Lstr)
-{
- char *buff;
- int i;
-
- buff = malloc (Lstr + 1);
- if (buff == NULL)
- return -1;
- g_char (str, Lstr, buff);
- i = unlink (buff);
- free (buff);
- return i ? errno : 0; /* SGI version returns -1 on failure. */
-}
diff --git a/libf2c/libU77/vxtidate_.c b/libf2c/libU77/vxtidate_.c
deleted file mode 100644
index fb1395161a3..00000000000
--- a/libf2c/libU77/vxtidate_.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Copyright (C) 1995, 1996, 2001 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#include <sys/types.h>
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-#include "f2c.h"
-
-/* VMS and Irix versions (at least) differ from libU77 elsewhere */
-
-/* VMS style: */
-
-/* Subroutine */
-int
-G77_vxtidate_y2kbug_0 (integer * m, integer * d, integer * y)
-{
- struct tm *lt;
- time_t tim;
- tim = time (NULL);
- lt = localtime (&tim);
- *y = lt->tm_year % 100;
- *m = lt->tm_mon + 1;
- *d = lt->tm_mday;
- return 0;
-}
-
-#ifdef PIC
-extern const char *G77_Non_Y2K_Compliance_Message;
-int
-G77_vxtidate_y2kbuggy_0 (integer * m __attribute__ ((__unused__)),
- integer * d __attribute__ ((__unused__)),
- integer * y __attribute__ ((__unused__)))
-{
- extern int G77_abort_0() __attribute__ ((noreturn));
- fprintf (stderr, "%s\n", G77_Non_Y2K_Compliance_Message);
- G77_abort_0 ();
-}
-#endif
diff --git a/libf2c/libU77/vxttime_.c b/libf2c/libU77/vxttime_.c
deleted file mode 100644
index 5982748583a..00000000000
--- a/libf2c/libU77/vxttime_.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright (C) 1995, 2001 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#include <sys/types.h>
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-#if HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-#include "f2c.h"
-
-/* Subroutine */
-void
-G77_vxttime_0 (char chtime[8],
- const ftnlen Lchtime __attribute__ ((__unused__)))
-{
- time_t tim;
- char *ctim;
- tim = time (NULL);
- ctim = ctime (&tim);
- strncpy (chtime, ctim + 11, 8);
-}
diff --git a/libf2c/permission.netlib b/libf2c/permission.netlib
deleted file mode 100644
index 261b719bc57..00000000000
--- a/libf2c/permission.netlib
+++ /dev/null
@@ -1,23 +0,0 @@
-/****************************************************************
-Copyright 1990 - 1997 by AT&T, Lucent Technologies and Bellcore.
-
-Permission to use, copy, modify, and distribute this software
-and its documentation for any purpose and without fee is hereby
-granted, provided that the above copyright notice appear in all
-copies and that both that the copyright notice and this
-permission notice and warranty disclaimer appear in supporting
-documentation, and that the names of AT&T, Bell Laboratories,
-Lucent or Bellcore or any of their entities not be used in
-advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-AT&T, Lucent and Bellcore disclaim all warranties with regard to
-this software, including all implied warranties of
-merchantability and fitness. In no event shall AT&T, Lucent or
-Bellcore be liable for any special, indirect or consequential
-damages or any damages whatsoever resulting from loss of use,
-data or profits, whether in an action of contract, negligence or
-other tortious action, arising out of or in connection with the
-use or performance of this software.
-****************************************************************/
-
diff --git a/libf2c/readme.netlib b/libf2c/readme.netlib
deleted file mode 100644
index 1ec98865e5b..00000000000
--- a/libf2c/readme.netlib
+++ /dev/null
@@ -1,791 +0,0 @@
-
-====== old index for f2c, now "readme from f2c" ============
-
-FILES:
-
-f2c.h Include file necessary for compiling output of the converter.
- See the second NOTE below.
-
-f2c.1 Man page for f2c.
-
-f2c.1t Source for f2c.1 (to be processed by troff -man or nroff -man).
-
-libf77 Library of non I/O support routines the generated C may need.
- Fortran main programs result in a C function named MAIN__ that
- is meant to be invoked by the main() in libf77.
-
-libi77 Library of Fortran I/O routines the generated C may need.
- Note that some vendors (e.g., BSD, Sun and MIPS) provide a
- libF77 and libI77 that are incompatible with f2c -- they
- provide some differently named routines or routines with the
- names that f2c expects, but with different calling sequences.
- On such systems, the recommended procedure is to merge
- libf77 and libi77 into a single library, say libf2c, and to
- install it where you can access it by specifying -lf2c . The
- definition of link_msg in sysdep.c assumes this arrangement.
-
- Both libf77 and libi77 are bundles, meant to be unpacked by the
- Bourne (or Korn) shell. MS-DOS users can use the MKS Toolkit
- to unpack libf77 and libi77.
-
-libf2c.zip
- Only available by ftp: combination of libf77 and libi77, with
- Unix and PC makefiles.
-
-f2c.ps Postscript for a technical report on f2c. After you strip the
- mail header, the first line should be "%!PS".
-
-fixes The complete change log, reporting bug fixes and other changes.
- (Some recent change-log entries are given below).
-
-fc A shell script that uses f2c and imitates much of the behavior
- of commonly found f77 commands. You will almost certainly
- need to adjust some of the shell-variable assignments to make
- this script work on your system.
-
-
-SUBDIRECTORY:
-
-f2c/src Source for the converter itself, including a file of checksums
- and source for a program to compute the checksums (to verify
- correct transmission of the source), is available: ask netlib
- (e.g., netlib@netlib.bell-labs.com) to
- send all from f2c/src
- If the checksums show damage to just a few source files, or if
- the change log file (see "fixes" below) reports corrections to
- some source files, you can request those files individually
- "from f2c/src". For example, to get defs.h and xsum0.out, you
- would ask netlib to
- send defs.h xsum0.out from f2c/src
- "all from f2c/src" is about 640 kilobytes long; for convenience
- (and checksums), it includes copies of f2c.h, f2c.1, and f2c.1t.
-
- Tip: if asked to send over 99,000 bytes in one request, netlib
- breaks the shipment into 1000 line pieces and sends each piece
- separately (since otherwise some mailers might gag). To avoid
- the hassle of reassembling the pieces, try to keep each request
- under 99,000 bytes long. The final number in each line of
- xsum0.out gives the length of each file in f2c/src. For
- example,
- send exec.c expr.c from f2c/src
- send format.c format_data.c from f2c/src
- will give you slightly less hassle than
- send exec.c expr.c format.c format_data.c from f2c/src
- Alternatively, if all the mailers in your return path allow
- long messages, you can supply an appropriate mailsize line in
- your netlib request, e.g.
- mailsize 200k
- send exec.c expr.c format.c format_data.c from f2c/src
-
- The makefile used to generate gram.c; now we distribute a
- working gram.c, and you must say
- make gram1.c
- mv gram1.c gram.c
- if you want to generate your own gram.c -- there are just too
- many broken variants of yacc floating around nowadays for
- generation of gram.c to be the default.
-
-NOTE: You may exercise f2c by sending netlib@netlib.bell-labs.com
- a message whose first line is "execute f2c" and whose remaining
- lines are the Fortran 77 source that you wish to have converted.
- Return mail brings you the resulting C, with f2c's error
- messages between #ifdef uNdEfInEd and #endif at the end.
- (To understand line numbers in the error messages, regard
- the "execute f2c" line as line 0. It is stripped away by
- the netlib software before f2c sees your Fortran input.)
- Options described in the man page may be transmitted to
- netlib by having the first line of input be a comment
- whose first 6 characters are "c$f2c " and whose remaining
- characters are the desired options, e.g., "c$f2c -R -u".
-
- You may say "execute f2c" in the Subject line instead of (but
- *not* in addition to) in the first line of the message body.
-
- The incoming Fortran is saved, at least for a while. Don't
- send any secrets!
-
-
-BUGS: Please send bug reports (including the shortest example
- you can find that illustrates the bug) to research!dmg
- or dmg@bell-labs.com . You might first check whether
- the bug goes away when you turn optimization off.
-
-
-NOTE: f2c.h defines several types, e.g., real, integer, doublereal.
- The definitions in f2c.h are suitable for most machines, but if
- your machine has sizeof(double) > 2*sizeof(long), you may need
- to adjust f2c.h appropriately. f2c assumes
- sizeof(doublecomplex) = 2*sizeof(doublereal)
- sizeof(doublereal) = sizeof(complex)
- sizeof(doublereal) = 2*sizeof(real)
- sizeof(real) = sizeof(integer)
- sizeof(real) = sizeof(logical)
- sizeof(real) = 2*sizeof(shortint)
- EQUIVALENCEs may not be translated correctly if these
- assumptions are violated.
-
- On machines, such as those using a DEC Alpha processor, on
- which sizeof(short) == 2, sizeof(int) == sizeof(float) == 4,
- and sizeof(long) == sizeof(double) == 8, it suffices to
- modify f2c.h by removing the first occurrence of "long "
- on each line containing "long ", e.g., by issuing the
- commands
- mv f2c.h f2c.h0
- sed 's/long //' f2c.h0 >f2c.h
- On such machines, one can enable INTEGER*8 by uncommenting
- the typedef of longint in f2c.h, so it reads
- typedef long longint;
- by compiling libI77 with -DAllow_TYQUAD, and by adjusting
- libF77/makefile as described in libF77/README.
-
- Some machines may have sizeof(int) == 4, sizeof(float) == 8,
- and sizeof(long long) == 8. On such machines, adjust f2c.h
- by changing "long int " to "long long ", e.g., by saying
- mv f2c.h f2c.h0
- sed 's/long int /long long /' f2c.h0 >f2c.h
- One can enable INTEGER*8 on such machines as described
- above, but with
- typedef long long longint;
-
- There exists a C compiler that objects to the lines
- typedef VOID C_f; /* complex function */
- typedef VOID H_f; /* character function */
- typedef VOID Z_f; /* double complex function */
- in f2c.h . If yours is such a compiler, do two things:
- 1. Complain to your vendor about this compiler bug.
- 2. Find the line
- #define VOID void
- in f2c.h and change it to
- #define VOID int
- (For readability, the f2c.h lines shown above have had two
- tabs inserted before their first character.)
-
-FTP: All the material described above is now available by anonymous
- ftp from netlib.bell-labs.com (login: anonymous; Password: your
- E-mail address; cd netlib/f2c). Note that you can say, e.g.,
-
- cd /netlib/f2c/src
- binary
- prompt
- mget *.gz
-
- to get all the .gz files in src. You must uncompress the .gz
- files once you have a copy of them, e.g., by
-
- gzip -dN *.gz
-
- You can also get the entire f2c tree as a tar file:
-
- ftp://netlib.bell-labs.com/netlib/f2c.tar
-
- (which is a synthetic file -- created on the fly and not visible
- to ftp's "ls" or "dir" commands).
-
- Subdirectory msdos contains two PC versions of f2c,
- f2c.exe.gz and f2cx.exe.gz; the latter uses extended memory.
- The README in that directory provides more details.
-
- Changes appear first in the f2c files available by E-mail
- from netlib@netlib.bell-labs.com. If the deamons work right,
- changed files are available the next day by ftp from
- netlib.bell-labs.com. In due course, they reach other netlib servers.
-
-CHANGE NOTIFICATION:
- Send the E-mail message
- subscribe f2c
- to netlib@netlib.bell-labs.com to request notification of new and
- changed f2c files. (Beware that automatically sent change
- notifications may reach you before changes have reached
- ftp://netlib.bell-labs.com/netlib/f2c or to other netlib servers.)
- Send the E-mail message
- unsubscribe f2c
- to recant your notification request.
-
------------------
-Recent change log (partial)
------------------
-
-Mon May 13 23:35:26 EDT 1996
- Recognize Fortran 90's /= as a synonym for .NE.. (<> remains a
-synonym for .NE..)
- Emit an empty int function of no arguments to supply an external
-name to named block data subprograms (so they can be called somewhere
-to force them to be loaded from a library).
- Fix bug (memory fault) in handling the following illegal Fortran:
- parameter(i=1)
- equivalence(i,j)
- end
- Treat cdabs, cdcos, cdexp, cdlog, cdsin, and cdsqrt as synonyms for
-the double complex intrinsics zabs, zcos, zexp, zlog, zsin, and zsqrt,
-respectively, unless -cd is specified.
- Recognize the Fortran 90 bit-manipulation intrinsics btest, iand,
-ibclr, ibits, ibset, ieor, ior, ishft, and ishftc, unless -i90 is
-specified. Note that iand, ieor, and ior are thus now synonyms for
-"and", "xor", and "or", respectively.
- Add three macros (bit_test, bit_clear, bit_set) to f2c.h for use
-with btest, ibclr, and ibset, respectively. Add new functions
-[lq]bit_bits, [lq]bit_shift, and [lq]_bit_cshift to libF77 for
-use with ibits, ishft, and ishftc, respectively.
- Add integer function ftell(unit) (returning -1 on error) and
-subroutine fseek(unit, offset, whence, *) to libI77 (with branch to
-label * on error).
-
-Tue May 14 23:21:12 EDT 1996
- Fix glitch (possible memory fault, or worse) in handling multiple
-entry points with names over 28 characters long.
-
-Mon Jun 10 01:20:16 EDT 1996
- Update netlib E-mail and ftp addresses in f2c/readme and
-f2c/src/readme (which are different files) -- to reflect the upcoming
-breakup of AT&T.
- libf77: trivial tweaks to F77_aloc.c and system_.c; Version.c not
-changed.
- libi77: Adjust rsli.c and lread.c so internal list input with too
-few items in the input string will honor end= .
-
-Mon Jun 10 22:59:57 EDT 1996
- Add Bits_per_Byte to sysdep.h and adjust definition of Table_size
-to depend on Bits_per_Byte (forcing Table_size to be a power of 2); in
-lex.c, change "comstart[c & 0xfff]" to "comstart[c & (Table_size-1)]"
-to avoid an out-of-range subscript on end-of-file.
-
-Wed Jun 12 00:24:28 EDT 1996
- Fix bug in output.c (dereferencing a freed pointer) revealed in
- print * !np in out_call in output.c clobbered by free
- end !during out_expr.
-
-Wed Jun 19 08:12:47 EDT 1996
- f2c.h: add types uinteger, ulongint (for libF77); add qbit_clear
-and qbit_set macros (in a commented-out section) for integer*8.
- For integer*8, use qbit_clear and qbit_set for ibclr and ibset.
- libf77: add casts to unsigned in [lq]bitshft.c.
-
-Thu Jun 20 13:30:43 EDT 1996
- Complain at character*(*) in common (rather than faulting).
- Fix bug in recognizing hex constants that start with "16#" (e.g.,
-16#1234abcd, which is a synonym for z'1234abcd').
- Fix bugs in constant folding of expressions involving btest, ibclr,
-and ibset.
- Fix bug in constant folding of rshift(16#80000000, -31) (on a 32-bit
-machine; more generally, the bug was in constant folding of
-rshift(ibset(0,NBITS-1), 1-NBITS) when f2c runs on a machine with
-long ints having NBITS bits.
-
-Mon Jun 24 07:58:53 EDT 1996
- Adjust struct Literal and newlabel() function to accommodate huge
-source files (with more than 32767 newlabel() invocations).
- Omit .c file when the .f file has a missing final end statement.
-
-Wed Jun 26 14:00:02 EDT 1996
- libi77: Add discussion of MXUNIT (highest allowed Fortran unit number)
-to libI77/README.
-
-Fri Jun 28 14:16:11 EDT 1996
- Fix glitch with -onetrip: the temporary variable used for nonconstant
-initial loop variable values was recycled too soon. Example:
- do i = j+1, k
- call foo(i+1) ! temp for j+1 was reused here
- enddo
- end
-
-Tue Jul 2 16:11:27 EDT 1996
- formatdata.c: add a 0 to the end of the basetype array (for TYBLANK)
-(an omission that was harmless on most machines).
- expr.c: fix a dereference of NULL that was only possible with buggy
-input, such as
- subroutine $sub(s) ! the '$' is erroneous
- character s*(*)
- s(1:) = ' '
- end
-
-Sat Jul 6 00:44:56 EDT 1996
- Fix glitch in the intrinsic "real" function when applied to a
-complex (or double complex) variable and passed as an argument to
-some intrinsic functions. Example:
- complex a
- b = sqrt(real(a))
- end
- Fix glitch (only visible if you do not use f2c's malloc and the
-malloc you do use is defective in the sense that malloc(0) returns 0)
-in handling include files that end with another include (perhaps
-followed by comments).
- Fix glitch with character*(*) arguments named "h" and "i" when
-the body of the subroutine invokes the intrinsic LEN function.
- Arrange that after a previous "f2c -P foo.f" has produced foo.P,
-running "f2c foo.P foo.f" will produce valid C when foo.f contains
- call sub('1234')
- end
- subroutine sub(msg)
- end
-Specifically, the length argument in "call sub" is now suppressed.
-With or without foo.P, it is also now suppressed when the order of
-subprograms in file foo.f is reversed:
- subroutine sub(msg)
- end
- call sub('1234')
- end
- Adjust copyright notices to reflect AT&T breakup.
-
-Wed Jul 10 09:25:49 EDT 1996
- Fix bug (possible memory fault) in handling erroneously placed
-and inconsistent declarations. Example that faulted:
- character*1 w(8)
- call foo(w)
- end
- subroutine foo(m)
- data h /0.5/
- integer m(2) ! should be before data
- end
- Fix bug (possible fault) in handling illegal "if" constructions.
-Example (that faulted):
- subroutine foo(i,j)
- if (i) then ! bug: i is integer, not logical
- else if (j) then ! bug: j is integer, not logical
- endif
- end
- Fix glitch with character*(*) argument named "ret_len" to a
-character*(*) function.
-
-Wed Jul 10 23:04:16 EDT 1996
- Fix more glitches in the intrinsic "real" function when applied to a
-complex (or double complex) variable and passed as an argument to
-some intrinsic functions. Example:
- complex a, b
- r = sqrt(real(conjg(a))) + sqrt(real(a*b))
- end
-
-Thu Jul 11 17:27:16 EDT 1996
- Fix a memory fault associated with complicated, illegal input.
-Example:
- subroutine goo
- character a
- call foo(a) ! inconsistent with subsequent def and call
- end
- subroutine foo(a)
- end
- call foo(a)
- end
-
-Wed Jul 17 19:18:28 EDT 1996
- Fix yet another case of intrinsic "real" applied to a complex
-argument. Example:
- complex a(3)
- x = sqrt(real(a(2))) ! gave error message about bad tag
- end
-
-Mon Aug 26 11:28:57 EDT 1996
- Tweak sysdep.c for non-Unix systems in which process ID's can be
-over 5 digits long.
-
-Tue Aug 27 08:31:32 EDT 1996
- Adjust the ishft intrinsic to use unsigned right shifts. (Previously,
-a negative constant second operand resulted in a possibly signed shift.)
-
-Thu Sep 12 14:04:07 EDT 1996
- equiv.c: fix glitch with -DKR_headers.
- libi77: fmtlib.c: fix bug in printing the most negative integer.
-
-Fri Sep 13 08:54:40 EDT 1996
- Diagnose some illegal appearances of substring notation.
-
-Tue Sep 17 17:48:09 EDT 1996
- Fix fault in handling some complex parameters. Example:
- subroutine foo(a)
- double complex a, b
- parameter(b = (0,1))
- a = b ! f2c faulted here
- end
-
-Thu Sep 26 07:47:10 EDT 1996
- libi77: fmt.h: for formatted writes of negative integer*1 values,
-make ic signed on ANSI systems. If formatted writes of integer*1
-values trouble you when using a K&R C compiler, switch to an ANSI
-compiler or use a compiler flag that makes characters signed.
-
-Tue Oct 1 14:41:36 EDT 1996
- Give a better error message when dummy arguments appear in data
-statements.
-
-Thu Oct 17 13:37:22 EDT 1996
- Fix bug in typechecking arguments to character and complex (or
-double complex) functions; the bug could cause length arguments
-for character arguments to be omitted on invocations appearing
-textually after the first invocation. For example, in
- subroutine foo
- character c
- complex zot
- call goo(zot(c), zot(c))
- end
-the length was omitted from the second invocation of zot, and
-there was an erroneous error message about inconsistent calling
-sequences.
-
-Wed Dec 4 13:59:14 EST 1996
- Fix bug revealed by
- subroutine test(cdum,rdum)
- complex cdum
- rdum=cos(real(cdum)) ! "Unexpected tag 3 in opconv_fudge"
- end
- Fix glitch in parsing "DO 10 D0 = 1, 10".
- Fix glitch in parsing
- real*8 x
- real*8 x ! erroneous "incompatible type" message
- call foo(x)
- end
- lib[FI]77/makefile: add comment about omitting -x under Solaris.
-
-Mon Dec 9 23:15:02 EST 1996
- Fix glitch in parameter adjustments for arrays whose lower
-bound depends on a scalar argument. Example:
- subroutine bug(p,z,m,n)
- integer z(*),m,n
- double precision p(z(m):z(m) + n) ! p_offset botched
- call foo(p(0), p(n))
- end
- libi77: complain about non-positive rec= in direct read and write
-statements.
- libf77: trivial adjustments; Version.c not changed.
-
-Wed Feb 12 00:18:03 EST 1997
- output.c: fix (seldom problematic) glitch in out_call: put parens
-around the ... in a test of the form "if (q->tag == TADDR && ...)".
- vax.c: fix bug revealed in the "psi_offset =" assignment in the
-following example:
- subroutine foo(psi,m)
- integer z(100),m
- common /a/ z
- double precision psi(z(m):z(m) + 10)
- call foo(m+1, psi(0),psi(10))
- end
-
-Mon Feb 24 23:44:54 EST 1997
- For consistency with f2c's current treatment of adjacent character
-strings in FORMAT statements, recognize a Hollerith string following
-a string (and merge adjacent strings in FORMAT statements).
-
-Wed Feb 26 13:41:11 EST 1997
- New libf2c.zip, a combination of the libf77 and libi77 bundles (and
-available only by ftp).
- libf77: adjust functions with a complex output argument to permit
-aliasing it with input arguments. (For now, at least, this is just
-for possible benefit of g77.)
- libi77: tweak to ftell_.c for systems with strange definitions of
-SEEK_SET, etc.
-
-Tue Apr 8 20:57:08 EDT 1997
- libf77: [cz]_div.c: tweaks invisible on most systems (that may
-improve things slightly with optimized compilation on systems that use
-gratuitous extra precision).
- libi77: fmt.c: adjust to complain at missing numbers in formats
-(but still treat missing ".nnn" as ".0").
-
-Fri Apr 11 14:05:57 EDT 1997
- libi77: err.c: attempt to make stderr line buffered rather than
-fully buffered. (Buffering is needed for format items T and TR.)
-
-Thu Apr 17 22:42:43 EDT 1997
- libf77: add F77_aloc.o to makefile (and makefile.u in libf2c.zip).
-
-Fri Apr 25 19:32:09 EDT 1997
- libf77: add [de]time_.c (which may give trouble on some systems).
-
-Tue May 27 09:18:52 EDT 1997
- libi77: ftell_.c: fix typo that caused the third argument to be
-treated as 2 on some systems.
-
-Mon Jun 9 00:04:37 EDT 1997
- libi77 (and libf2c.zip): adjust include order in err.c lread.c wref.c
-rdfmt.c to include fmt.h (etc.) after system includes. Version.c not
-changed.
-
-Mon Jun 9 14:29:13 EDT 1997
- src/gram.c updated; somehow it did not reflect the change of
-19961001 to gram.dcl.
-
-Mon Jul 21 16:04:54 EDT 1997
- proc.c: fix glitch in logic for "nonpositive dimension" message.
- libi77: inquire.c: always include string.h (for possible use with
--DNON_UNIX_STDIO); Version.c not changed.
-
-Thu Jul 24 17:11:23 EDT 1997
- Tweak "Notice" to reflect the AT&T breakup -- we missed it when
-updating the copyright notices in the source files last summer.
- Adjust src/makefile so malloc.o is not used by default, but can
-be specified with "make MALLOC=malloc.o".
- Add comments to src/README about the "CRAY" T3E.
-
-Tue Aug 5 14:53:25 EDT 1997
- Add definition of calloc to malloc.c; this makes f2c's malloc
-work on some systems where trouble hitherto arose because references
-to calloc brought in the system's malloc. (On sensible systems,
-calloc is defined separately from malloc. To avoid confusion on
-other systems, f2c/malloc.c now defines calloc.)
- libi77: lread.c: adjust to accord with a change to the Fortran 8X
-draft (in 1990 or 1991) that rescinded permission to elide quote marks
-in namelist input of character data; to get the old behavior, compile
-with F8X_NML_ELIDE_QUOTES #defined. wrtfmt.o: wrt_G: tweak to print
-the right number of 0's for zero under G format.
-
-Sat Aug 16 05:45:32 EDT 1997
- libi77: iio.c: fix bug in internal writes to an array of character
-strings that sometimes caused one more array element than required by
-the format to be blank-filled. Example: format(1x).
-
-Wed Sep 17 00:39:29 EDT 1997
- libi77: fmt.[ch] rdfmt.c wrtfmt.c: tweak struct syl for machines
-with 64-bit pointers and 32-bit ints that did not 64-bit align
-struct syl (e.g., Linux on the DEC Alpha). This change should be
-invisible on other machines.
-
-Sun Sep 21 22:05:19 EDT 1997
- libf77: [de]time_.c (Unix systems only): change return type to double.
-
-Thu Dec 4 22:10:09 EST 1997
- Fix bug with handling large blocks of comments (over 4k); parts of the
-second and subsequent blocks were likely to be lost (not copied into
-comments in the resulting C). Allow comment lines to be longer before
-breaking them.
-
-Mon Jan 19 17:19:27 EST 1998
- makefile: change the rule for making gram.c to one for making gram1.c;
-henceforth, asking netlib to "send all from f2c/src" will bring you a
-working gram.c. Nowadays there are simply too many broken versions of
-yacc floating around.
- libi77: backspace.c: for b->ufmt==0, change sizeof(int) to
-sizeof(uiolen). On machines where this would make a difference, it is
-best for portability to compile libI77 with -DUIOLEN_int, which will
-render the change invisible.
-
-Tue Feb 24 08:35:33 EST 1998
- makefile: remove gram.c from the "make clean" rule.
-
-Wed Feb 25 08:29:39 EST 1998
- makefile: change CFLAGS assignment to -O; add "veryclean" rule.
-
-Wed Mar 4 13:13:21 EST 1998
- libi77: open.c: fix glitch in comparing file names under
--DNON_UNIX_STDIO.
-
-Mon Mar 9 23:56:56 EST 1998
- putpcc.c: omit an unnecessary temporary variable in computing
-(expr)**3.
- libf77, libi77: minor tweaks to make some C++ compilers happy;
-Version.c not changed.
-
-Wed Mar 18 18:08:47 EST 1998
- libf77: minor tweaks to [ed]time_.c; Version.c not changed.
- libi77: endfile.c, open.c: acquire temporary files from tmpfile(),
-unless compiled with -DNON_ANSI_STDIO, which uses mktemp().
-New buffering scheme independent of NON_UNIX_STDIO for handling T
-format items. Now -DNON_UNIX_STDIO is no longer be necessary for
-Linux, and libf2c no longer causes stderr to be buffered -- the former
-setbuf or setvbuf call for stderr was to make T format items work.
-open.c: use the Posix access() function to check existence or
-nonexistence of files, except under -DNON_POSIX_STDIO, where trial
-fopen calls are used. In open.c, fix botch in changes of 19980304.
- libf2c.zip: the PC makefiles are now set for NT/W95, with comments
-about changes for DOS.
-
-Fri Apr 3 17:22:12 EST 1998
- Adjust fix of 19960913 to again permit substring notation on
-character variables in data statements.
-
-Sun Apr 5 19:26:50 EDT 1998
- libi77: wsfe.c: make $ format item work: this was lost in the changes
-of 17 March 1998.
-
-Sat May 16 19:08:51 EDT 1998
- Adjust output of ftnlen constants: rather than appending L,
-prepend (ftnlen). This should make the resulting C more portable,
-e.g., to systems (such as DEC Alpha Unix systems) on which long
-may be longer than ftnlen.
- Adjust -r so it also casts REAL expressions passed to intrinsic
-functions to REAL.
-
-Wed May 27 16:02:35 EDT 1998
- libf2c.zip: tweak description of compiling libf2c for INTEGER*8
-to accord with makefile.u rather than libF77/makefile.
-
-Thu May 28 22:45:59 EDT 1998
- libi77: backspace.c dfe.c due.c iio.c lread.c rsfe.c sue.c wsfe.c:
-set f__curunit sooner so various error messages will correctly
-identify the I/O unit involved.
- libf2c.zip: above, plus tweaks to PC makefiles: for some purposes,
-it's still best to compile with -DMSDOS (even for use with NT).
-
-Thu Jun 18 01:22:52 EDT 1998
- libi77: lread.c: modified so floating-point numbers (containing
-either a decimal point or an exponent field) are treated as errors
-when they appear as list input for integer data. Compile lread.c with
--DALLOW_FLOAT_IN_INTEGER_LIST_INPUT to restore the old behavior.
-
-Mon Aug 31 10:38:54 EDT 1998
- formatdata.c: if possible, and assuming doubles must be aligned on
-double boundaries, use existing holes in DATA for common blocks to
-force alignment of the block. For example,
- block data
- common /abc/ a, b
- double precision a
- integer b(2)
- data b(2)/1/
- end
-used to generate
- struct {
- integer fill_1[3];
- integer e_2;
- doublereal e_3;
- } abc_ = { {0}, 1, 0. };
-and now generates
- struct {
- doublereal fill_1[1];
- integer fill_2[1];
- integer e_3;
- } abc_ = { {0}, {0}, 1 };
-In the old generated C, e_3 was added to force alignment; in the new C,
-fill_1 does this job.
-
-Mon Sep 7 19:48:51 EDT 1998
- libi77: move e_wdfe from sfe.c to dfe.c, where it was originally.
-Why did it ever move to sfe.c?
-
-Tue Sep 8 10:22:50 EDT 1998
- Treat dreal as a synonym for dble unless -cd is specified on the
-command line.
-
-Sun Sep 13 22:23:41 EDT 1998
- format.c: fix bug in writing prototypes under f2c -A ... *.P:
-under some circumstances involving external functions with no known
-type, a null pointer was passed to printf.
-
-Tue Oct 20 23:25:54 EDT 1998
- Comments added to libf2c/README and libF77/README, pointing out
-the need to modify signal1.h on some systems.
-
-Thu Nov 12 15:34:09 EST 1998
- libf77, libf2c.zip: minor tweaks to [de]time_.c and the makefiles,
-so makefile.sy, makefile.vc, and makefile.wat deal with [de]time_.c.
-
-Wed Feb 10 22:59:52 EST 1999
- defs.h lex.c: permit long names (up to at least roughly
-MAX_SHARPLINE_LEN = 1000 characters long) in #line lines (which only
-matters under -g).
- fc: add -U option; recognize .so files.
-
-Sat Feb 13 10:18:27 EST 1999
- libf2c: endfile.c, lread.c, signal1.h0: minor tweaks to make some
-(C++) compilers happier; f77_aloc.c: make exit_() visible to C++
-compilers. Version strings not changed.
-
-Thu Mar 11 23:14:02 EST 1999
- Modify f2c (exec.c, expr.c) to diagnose incorrect mixing of types
-when (f2c extended) intrinsic functions are involved, as in
-(not(17) .and. 4). Catching this in the first executable statement
-is a bit tricky, as some checking must be postponed until all statement
-function declarations have been parsed. Thus there is a chance of
-today's changes introducing bugs under (let us hope) unusual conditions.
-
-Sun Mar 28 13:17:44 EST 1999
- lex.c: tweak to get the file name right in error messages caused
-by statements just after a # nnn "filename" line emitted by the C
-preprocessor. (The trouble is that the line following the # nnn line
-must be read to see if it is a continuation of the stuff that preceded
-the # nnn line.) When # nnn "filename" lines appear among the lines
-for a Fortran statement, the filename reported in an error message for
-the statement should now be the file that was current when the first
-line of the statement was read.
-
-Sun May 2 22:38:25 EDT 1999
- libf77, libi77, libf2c.zip: make getenv_() more portable (call
-getenv() rather than knowing about char **environ); adjust some
-complex intrinsics to work with overlapping arguments (caused by
-inappropriate use of equivalence); open.c: get "external" versus
-"internal" right in the error message if a file cannot be opened;
-err.c: cast a pointer difference to (int) for %d; rdfmt.c: omit
-fixed-length buffer that could be overwritten by formats Inn or Lnn
-with nn > 83.
-
-Mon May 3 13:14:07 EDT 1999
- "Invisible" changes to omit a few compiler warnings in f2c and
-libf2c; two new casts in libf2c/open.c that matter with 64-bit longs,
-and one more tweak (libf2c/c_log.c) for pathological equivalences.
- Minor update to "fc" script: new -L flag and comment correction.
-
-Tue May 4 10:06:26 EDT 1999
- libf77, libf2c.zip: forgot to copy yesterday's latest updates to
-netlib.
-
-Fri Jun 18 02:33:08 EDT 1999
- libf2c.zip: rename backspace.c backspac.c, and fix a glitch in it
--- b->ufd may change in t_runc(). (For now, it's still backspace.c
-in the libi77 bundle.)
-
-Sun Jun 27 22:05:47 EDT 1999
- libf2c.zip, libi77: rsne.c: fix bug in namelist input: a misplaced
-increment could cause wrong array elements to be assigned; e.g.,
-"&input k(5)=10*1 &end" assigned k(5) and k(15 .. 23).
-
-
-Current timestamps of files in "all from f2c/src", sorted by time,
-appear below (mm/dd/year hh:mm:ss). To bring your source up to date,
-obtain source files with a timestamp later than the time shown in your
-version.c. Note that the time shown in the current version.c is the
-timestamp of the source module that immediately follows version.c below:
-
- 5/03/1999 12:46:15 version.c
- 5/03/1999 12:39:35 formatdata.c
- 5/03/1999 12:31:14 format.c
- 5/03/1999 12:27:17 p1output.c
- 5/03/1999 12:27:17 data.c
- 5/03/1999 10:01:12 xsum0.out
- 5/03/1999 9:59:36 io.c
- 5/03/1999 9:59:36 misc.c
- 5/03/1999 9:59:36 init.c
- 3/26/1999 23:18:11 lex.c
- 3/11/1999 16:44:17 expr.c
- 3/11/1999 16:42:42 exec.c
- 2/10/1999 17:43:01 defs.h
- 9/08/1998 10:16:51 f2c.1
- 9/08/1998 10:16:48 f2c.1t
- 9/08/1998 10:14:53 intr.c
- 5/16/1998 16:55:49 output.c
- 4/03/1998 17:15:05 gram.c
- 4/03/1998 17:14:59 gram.dcl
- 3/09/1998 0:30:23 putpcc.c
- 2/25/1998 8:18:04 makefile
-12/04/1997 17:44:11 niceprintf.c
- 8/05/1997 10:31:26 malloc.c
- 7/24/1997 17:10:55 README
- 7/24/1997 16:06:19 Notice
- 7/21/1997 12:58:44 proc.c
- 2/11/1997 23:39:14 vax.c
-12/04/1996 13:07:53 gram.exec
- 9/12/1996 12:12:46 equiv.c
- 8/26/1996 9:41:13 sysdep.c
- 7/09/1996 10:40:45 names.c
- 7/04/1996 9:55:45 sysdep.h
- 7/04/1996 9:55:43 put.c
- 7/04/1996 9:55:41 pread.c
- 7/04/1996 9:55:40 parse_args.c
- 7/04/1996 9:55:36 mem.c
- 7/04/1996 9:55:36 memset.c
- 7/04/1996 9:55:35 main.c
- 7/04/1996 9:55:29 error.c
- 7/04/1996 9:55:27 cds.c
- 7/03/1996 15:47:49 xsum.c
- 6/19/1996 7:04:27 f2c.h
- 6/19/1996 2:52:05 defines.h
- 5/13/1996 0:40:32 gram.head
- 2/25/1994 2:07:19 parse.h
- 2/22/1994 19:07:20 iob.h
- 2/22/1994 18:56:53 p1defs.h
- 2/22/1994 18:53:46 output.h
- 2/22/1994 18:51:14 names.h
- 2/22/1994 18:30:41 format.h
- 1/18/1994 18:12:52 tokens
- 3/06/1993 14:13:58 gram.expr
- 1/28/1993 9:03:16 ftypes.h
- 4/06/1990 0:00:57 gram.io
- 2/03/1990 0:58:26 niceprintf.h
- 1/07/1990 1:20:01 usignal.h
-11/27/1989 8:27:37 machdefs.h
- 7/01/1989 11:59:44 pccdefs.h
diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index e043ec0e251..30d95482cd9 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,13 @@
+2004-07-11 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * src/s390/ffi.c (ffi_prep_args): Fix C aliasing violation.
+ (ffi_check_float_struct): Remove unused prototype.
+
+2004-06-30 Geoffrey Keating <geoffk@apple.com>
+
+ * src/powerpc/ffi_darwin.c (flush_icache): ';' is a comment
+ character on Darwin, use '\n\t' instead.
+
2004-06-26 Matthias Klose <doko@debian.org>
* libtool-version: Fix typo in revision/age.
diff --git a/libffi/src/powerpc/ffi_darwin.c b/libffi/src/powerpc/ffi_darwin.c
index 39b3cbb8c4a..6081b2f9085 100644
--- a/libffi/src/powerpc/ffi_darwin.c
+++ b/libffi/src/powerpc/ffi_darwin.c
@@ -530,11 +530,11 @@ flush_icache(char *addr)
{
#ifndef _AIX
__asm__ volatile (
- "dcbf 0,%0;"
- "sync;"
- "icbi 0,%0;"
- "sync;"
- "isync;"
+ "dcbf 0,%0\n"
+ "\tsync\n"
+ "\ticbi 0,%0\n"
+ "\tsync\n"
+ "\tisync"
: : "r"(addr) : "memory");
#endif
}
diff --git a/libffi/src/s390/ffi.c b/libffi/src/s390/ffi.c
index d672b3c0ef3..399fa2a91d9 100644
--- a/libffi/src/s390/ffi.c
+++ b/libffi/src/s390/ffi.c
@@ -69,7 +69,6 @@
/*====================================================================*/
static void ffi_prep_args (unsigned char *, extended_cif *);
-static int ffi_check_float_struct (ffi_type *);
void
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2)
__attribute__ ((visibility ("hidden")))
@@ -222,15 +221,7 @@ ffi_prep_args (unsigned char *stack, extended_cif *ecif)
}
}
- /* Pointers are passed like UINTs of the same size. */
- if (type == FFI_TYPE_POINTER)
-#ifdef __s390x__
- type = FFI_TYPE_UINT64;
-#else
- type = FFI_TYPE_UINT32;
-#endif
-
- /* Now handle all primitive int/float data types. */
+ /* Now handle all primitive int/pointer/float data types. */
switch (type)
{
case FFI_TYPE_DOUBLE:
@@ -251,6 +242,13 @@ ffi_prep_args (unsigned char *stack, extended_cif *ecif)
else
p_ov[n_ov++] = *(unsigned int *) arg;
break;
+
+ case FFI_TYPE_POINTER:
+ if (n_gpr < MAX_GPRARGS)
+ p_gpr[n_gpr++] = (unsigned long)*(unsigned char **) arg;
+ else
+ p_ov[n_ov++] = (unsigned long)*(unsigned char **) arg;
+ break;
case FFI_TYPE_UINT64:
case FFI_TYPE_SINT64:
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 65841f833f7..3168f4e1b70 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,65 @@
+2004-07-18 Bud Davis <bdavis9659@comcast.net>
+
+ * configure.ac: Add check for LFS support.
+ * configure: Regenerate
+
+2004-07-11 Paul Brook <paul@codesourcery.com>
+
+ PR fortran/16303
+ * m4/cexp.m4 (carg): Return -pi to pi.
+ * generated/exp_c?.c: Regenerate.
+
+2004-07-08 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ PR fortran/16291
+ * libgfortran/io/write.c: (write_float): Added length check.
+ Remove pointless memset calls.
+
+2004-07-04 Bud Davis <bdavis9659@comcast.net>
+ Paul Brook <paul@codesourcery.com>
+
+ PR fortran/15472
+ * io/transfer.c(us_write): set recl for seq unform writes to max size.
+ * io/transfer.c(data_transfer_init): handle un-opened seq unform unit.
+ * io/unix.c(fd_alloc_w_at): handle requests at start, fd_flush at
+ right time.
+ * io/unix.c(is_seekable): set based upon the file/device, not the
+ method being used to access it (fd or mmap).
+ * io/unix.c(fd_flush): don't set file_size if !seekable.
+ * io/unix.c(fd_truncate: ditto.
+
+2004-07-04 Janne Blomqvist <jblomqvi@cc.hut.fi>
+ Paul Brook <paul@codesourcery.com>
+
+ PR fortran/15280
+ PR fortran/15665
+ * libgfortran.h (gfc_strlen_type): Define.
+ * intrinsics/args.c (getarg): Rename ...
+ (getarg_i4): ... to this.
+ (getarg_i8, get_command_argument_i4, get_command_argument_i8,
+ get_command_i4, get_command_i8): New functions.
+
+2004-07-04 Matthias Klose <doko@debian.org>
+
+ * libtool-version: New.
+ * Makefile.am (libgfortran_la_LDFLAGS): Use -version-info for soname.
+ * Makefile.in: Regenerate.
+ * configure.ac: Remove libtool_VERSION macro
+ * configure: Regenerate
+
+2004-06-30 Steve Kargl <sgk@troutmask.apl.washington.edu>
+ Steven Bosscher <stevenb@suse.de>
+
+ * intrinsics/rand.c (rand): Wrap the irand() call from the previous
+ commit in prefix.
+
+2004-06-29 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
+ Paul Brook <paul@codesourcery.com>
+
+ * runtime/normalize.c (normalize_r4_i4, normalize_r8_i8): Fix
+ comments.
+ * intrinsics/rand.c (rand): Call irand() in call to normalize_r4_i4.
+
2004-06-27 Bud Davis <bdavis9659@comcast.net>
PR gfortran/12839
diff --git a/libgfortran/Makefile.am b/libgfortran/Makefile.am
index 0c6935a2553..450a9a4e868 100644
--- a/libgfortran/Makefile.am
+++ b/libgfortran/Makefile.am
@@ -6,6 +6,8 @@ AM_CFLAGS = -std=gnu99
toolexeclib_LTLIBRARIES = libgfortran.la libgfortranbegin.la
+libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+
## This should really go in the compiler lib dir, not the system lib dir.
libgfortranbegin_la_SOURCES = fmain.c
libgfortranbegin_la_LDFLAGS = -static
diff --git a/libgfortran/Makefile.in b/libgfortran/Makefile.in
index 51e154a2d63..754c3ea4027 100644
--- a/libgfortran/Makefile.in
+++ b/libgfortran/Makefile.in
@@ -263,7 +263,6 @@ infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
-libtool_VERSION = @libtool_VERSION@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
@@ -283,6 +282,7 @@ toolexecdir = @toolexecdir@
toolexeclibdir = @toolexeclibdir@
AM_CFLAGS = -std=gnu99
toolexeclib_LTLIBRARIES = libgfortran.la libgfortranbegin.la
+libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
libgfortranbegin_la_SOURCES = fmain.c
libgfortranbegin_la_LDFLAGS = -static
AM_CPPFLAGS = -I$(srcdir)/io
diff --git a/libgfortran/configure b/libgfortran/configure
index 42dbbd9a665..58f0d580ef2 100755
--- a/libgfortran/configure
+++ b/libgfortran/configure
@@ -308,7 +308,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS libtool_VERSION build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT multi_basedir gcc_version toolexecdir toolexeclibdir CC ac_ct_CC EXEEXT OBJEXT CFLAGS AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB LN_S LIBTOOL enable_shared enable_static F77 FFLAGS LDFLAGS ac_ct_F77 CPP CPPFLAGS EGREP MATH_OBJ LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT multi_basedir gcc_version toolexecdir toolexeclibdir CC ac_ct_CC EXEEXT OBJEXT CFLAGS AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB LN_S LIBTOOL enable_shared enable_static F77 FFLAGS LDFLAGS ac_ct_F77 CPP CPPFLAGS EGREP MATH_OBJ LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -859,6 +859,7 @@ Optional Features:
--enable-static=PKGS build static libraries default=yes
--enable-fast-install=PKGS optimize for fast installation default=yes
--disable-libtool-lock avoid locking (might break parallel builds)
+ --disable-largefile omit support for large files
--enable-cmath Include complex math functions
Optional Packages:
@@ -969,7 +970,7 @@ esac
else
echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi
- cd $ac_popdir
+ cd "$ac_popdir"
done
fi
@@ -1329,10 +1330,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_config_headers="$ac_config_headers config.h"
-# For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=6:0:0
-
-
# -------
# Options
# -------
@@ -2565,8 +2562,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2624,8 +2620,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2741,8 +2736,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2796,8 +2790,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2842,8 +2835,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2887,8 +2879,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4029,7 +4020,7 @@ test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
case $host in
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 4032 "configure"' > conftest.$ac_ext
+ echo '#line 4023 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -4171,8 +4162,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4415,7 +4405,7 @@ fi
# Provide some information about the compiler.
-echo "$as_me:4418:" \
+echo "$as_me:4408:" \
"checking for Fortran 77 compiler version" >&5
ac_compiler=`set X $ac_compile; echo $2`
{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
@@ -4461,8 +4451,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_f77_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4511,8 +4500,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_f77_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4561,6 +4549,364 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
FFLAGS="$FFLAGS -Wall -fno-repack-arrays -fno-underscoring"
+# Check whether --enable-largefile or --disable-largefile was given.
+if test "${enable_largefile+set}" = set; then
+ enableval="$enable_largefile"
+
+fi;
+if test "$enable_largefile" != no; then
+
+ echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
+echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_largefile_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+ ac_save_CC=$CC
+ while :; do
+ # IRIX 6.2 and later do not support large files by default,
+ # so use the C compiler's -n32 option if that helps.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+ CC="$CC -n32"
+ rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sys_largefile_CC=' -n32'; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+ break
+ done
+ CC=$ac_save_CC
+ rm -f conftest.$ac_ext
+ fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
+echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6
+ if test "$ac_cv_sys_largefile_CC" != no; then
+ CC=$CC$ac_cv_sys_largefile_CC
+ fi
+
+ echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ while :; do
+ ac_cv_sys_file_offset_bits=no
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sys_file_offset_bits=64; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ break
+done
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
+echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6
+if test "$ac_cv_sys_file_offset_bits" != no; then
+
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+
+fi
+rm -f conftest*
+ echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
+echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_large_files+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ while :; do
+ ac_cv_sys_large_files=no
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sys_large_files=1; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ break
+done
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
+echo "${ECHO_T}$ac_cv_sys_large_files" >&6
+if test "$ac_cv_sys_large_files" != no; then
+
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+
+fi
+rm -f conftest*
+fi
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -4844,8 +5190,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5015,8 +5360,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5084,8 +5428,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5269,8 +5612,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5509,8 +5851,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5578,8 +5919,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5750,8 +6090,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5904,8 +6243,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6050,8 +6388,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6206,8 +6543,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6310,8 +6646,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6383,8 +6718,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6455,8 +6789,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6528,8 +6861,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6600,8 +6932,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6686,8 +7017,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6788,8 +7118,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6851,8 +7180,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6985,8 +7313,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7723,7 +8050,6 @@ s,@ECHO_C@,$ECHO_C,;t t
s,@ECHO_N@,$ECHO_N,;t t
s,@ECHO_T@,$ECHO_T,;t t
s,@LIBS@,$LIBS,;t t
-s,@libtool_VERSION@,$libtool_VERSION,;t t
s,@build@,$build,;t t
s,@build_cpu@,$build_cpu,;t t
s,@build_vendor@,$build_vendor,;t t
@@ -7954,11 +8280,6 @@ esac
*) ac_INSTALL=$ac_top_builddir$INSTALL ;;
esac
- if test x"$ac_file" != x-; then
- { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
- rm -f "$ac_file"
- fi
# Let's still pretend it is `configure' which instantiates (i.e., don't
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
@@ -7997,6 +8318,12 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
fi;;
esac
done` || { (exit 1); exit 1; }
+
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
sed "$ac_vpsub
diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
index 28b6f6f3c7d..453ee1ba36e 100644
--- a/libgfortran/configure.ac
+++ b/libgfortran/configure.ac
@@ -5,10 +5,6 @@ AC_PREREQ(2.59)
AC_INIT([GNU Fortran Runtime Library], 0.2,,[libgfortran])
AC_CONFIG_HEADER(config.h)
-# For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=6:0:0
-AC_SUBST(libtool_VERSION)
-
# -------
# Options
# -------
@@ -148,6 +144,7 @@ F77="$GFORTRAN"
AC_PROG_F77(gfortran)
FFLAGS="$FFLAGS -Wall -fno-repack-arrays -fno-underscoring"
+AC_SYS_LARGEFILE
AC_FUNC_MMAP
AC_TYPE_OFF_T
diff --git a/libgfortran/generated/exp_c4.c b/libgfortran/generated/exp_c4.c
index d95213446ee..06e0103e3d8 100644
--- a/libgfortran/generated/exp_c4.c
+++ b/libgfortran/generated/exp_c4.c
@@ -30,17 +30,14 @@ cabsf (GFC_COMPLEX_4 z)
return hypotf (REALPART (z), IMAGPART (z));
}
-/* Complex argument. The angle made with the +ve real axis. Range 0-2pi. */
+/* Complex argument. The angle made with the +ve real axis.
+ Range -pi-pi. */
GFC_REAL_4
cargf (GFC_COMPLEX_4 z)
{
GFC_REAL_4 arg;
- arg = atan2f (IMAGPART (z), REALPART (z));
- if (arg < 0)
- return arg + 2 * M_PI;
- else
- return arg;
+ return atan2f (IMAGPART (z), REALPART (z));
}
/* exp(z) = exp(a)*(cos(b) + isin(b)) */
diff --git a/libgfortran/generated/exp_c8.c b/libgfortran/generated/exp_c8.c
index 74cbbdc5145..5bd96495b96 100644
--- a/libgfortran/generated/exp_c8.c
+++ b/libgfortran/generated/exp_c8.c
@@ -30,17 +30,14 @@ cabs (GFC_COMPLEX_8 z)
return hypot (REALPART (z), IMAGPART (z));
}
-/* Complex argument. The angle made with the +ve real axis. Range 0-2pi. */
+/* Complex argument. The angle made with the +ve real axis.
+ Range -pi-pi. */
GFC_REAL_8
carg (GFC_COMPLEX_8 z)
{
GFC_REAL_8 arg;
- arg = atan2 (IMAGPART (z), REALPART (z));
- if (arg < 0)
- return arg + 2 * M_PI;
- else
- return arg;
+ return atan2 (IMAGPART (z), REALPART (z));
}
/* exp(z) = exp(a)*(cos(b) + isin(b)) */
diff --git a/libgfortran/intrinsics/args.c b/libgfortran/intrinsics/args.c
index da684fd99d4..caa55d46d8b 100644
--- a/libgfortran/intrinsics/args.c
+++ b/libgfortran/intrinsics/args.c
@@ -1,5 +1,7 @@
-/* Implementation of the IARG/ARGC intrinsic(s).
+/* Implementation of the GETARG and IARGC g77, and
+ corresponding F2003, intrinsics.
Copyright (C) 2004 Free Software Foundation, Inc.
+ Contributed by Bud Davis and Janne Blomqvist.
This file is part of the GNU Fortran 95 runtime library (libgfortran).
@@ -23,8 +25,11 @@ Boston, MA 02111-1307, USA. */
#include <string.h>
#include "libgfortran.h"
+
+/* Get a commandline argument. */
+
void
-prefix(getarg) (GFC_INTEGER_4 *pos, char *val, GFC_INTEGER_4 val_len)
+prefix(getarg_i4) (GFC_INTEGER_4 *pos, char *val, gfc_strlen_type val_len)
{
int argc;
int arglen;
@@ -35,7 +40,7 @@ prefix(getarg) (GFC_INTEGER_4 *pos, char *val, GFC_INTEGER_4 val_len)
if (val_len < 1 || !val )
return; /* something is wrong , leave immediately */
- memset( val, ' ', val_len);
+ memset (val, ' ', val_len);
if ((*pos) + 1 <= argc && *pos >=0 )
{
@@ -46,8 +51,23 @@ prefix(getarg) (GFC_INTEGER_4 *pos, char *val, GFC_INTEGER_4 val_len)
}
}
+
+/* INTEGER*8 wrapper of getarg. */
+
+void
+prefix(getarg_i8) (GFC_INTEGER_8 *pos, char *val, gfc_strlen_type val_len)
+{
+ GFC_INTEGER_4 pos4;
+
+ pos4 = (GFC_INTEGER_4) *pos;
+ prefix(getarg_i4) (&pos4, val, val_len);
+}
+
+
+/* Return the number of commandline arguments. */
+
GFC_INTEGER_4
-prefix(iargc) ()
+prefix(iargc) (void)
{
int argc;
char **argv;
@@ -56,3 +76,175 @@ prefix(iargc) ()
return argc;
}
+
+
+/* F2003 intrinsic functions and subroutines related to command line
+ arguments.
+
+ - function command_argument_count() is converted to iargc by the compiler.
+
+ - subroutine get_command([command, length, status]).
+
+ - subroutine get_command_argument(number, [value, length, status]).
+*/
+
+/* These two status codes are specified in the standard. */
+#define GFC_GC_SUCCESS 0
+#define GFC_GC_VALUE_TOO_SHORT -1
+
+/* Processor-specific status failure code. */
+#define GFC_GC_FAILURE 42
+
+
+/* Get a single commandline argument. */
+
+void
+prefix(get_command_argument_i4) (GFC_INTEGER_4 *number,
+ char *value,
+ GFC_INTEGER_4 *length,
+ GFC_INTEGER_4 *status,
+ gfc_strlen_type value_len)
+{
+ int argc, arglen = 0, stat_flag = GFC_GC_SUCCESS;
+ char **argv;
+
+ if (number == NULL )
+ /* Should never happen. */
+ runtime_error ("Missing argument to get_command_argument");
+
+ if (value == NULL && length == NULL && status == NULL)
+ return; /* No need to do anything. */
+
+ get_args (&argc, &argv);
+
+ if (*number < 0 || *number >= argc)
+ stat_flag = GFC_GC_FAILURE;
+ else
+ arglen = strlen(argv[*number]);
+
+ if (value != NULL)
+ {
+ if (value_len < 1)
+ stat_flag = GFC_GC_FAILURE;
+ else
+ memset (value, ' ', value_len);
+ }
+
+ if (value != NULL && stat_flag != GFC_GC_FAILURE)
+ {
+ if (arglen > value_len)
+ {
+ arglen = value_len;
+ stat_flag = GFC_GC_VALUE_TOO_SHORT;
+ }
+ memcpy (value, argv[*number], arglen);
+ }
+
+ if (length != NULL)
+ *length = arglen;
+
+ if (status != NULL)
+ *status = stat_flag;
+}
+
+
+/* INTEGER*8 wrapper for get_command_argument. */
+
+void
+prefix(get_command_argument_i8) (GFC_INTEGER_8 *number,
+ char *value,
+ GFC_INTEGER_8 *length,
+ GFC_INTEGER_8 *status,
+ gfc_strlen_type value_len)
+{
+ GFC_INTEGER_4 number4;
+ GFC_INTEGER_4 length4;
+ GFC_INTEGER_4 status4;
+
+ number4 = (GFC_INTEGER_4) *number;
+ prefix (get_command_argument_i4) (&number4, value, &length4, &status4,
+ value_len);
+ if (length)
+ *length = length4;
+ if (status)
+ *status = status4;
+}
+
+
+/* Return the whole commandline. */
+
+void
+prefix(get_command_i4) (char *command,
+ GFC_INTEGER_4 *length,
+ GFC_INTEGER_4 *status,
+ gfc_strlen_type command_len)
+{
+ int i, argc, arglen, thisarg;
+ int stat_flag = GFC_GC_SUCCESS;
+ int tot_len = 0;
+ char **argv;
+
+ if (command == NULL && length == NULL && status == NULL)
+ return; /* No need to do anything. */
+
+ get_args (&argc, &argv);
+
+ if (command != NULL)
+ {
+ /* Initialize the string to blanks. */
+ if (command_len < 1)
+ stat_flag = GFC_GC_FAILURE;
+ else
+ memset (command, ' ', command_len);
+ }
+
+ for (i = 0; i < argc ; i++)
+ {
+ arglen = strlen(argv[i]);
+
+ if (command != NULL && stat_flag == GFC_GC_SUCCESS)
+ {
+ thisarg = arglen;
+ if (tot_len + thisarg > command_len)
+ {
+ thisarg = command_len - tot_len; /* Truncate. */
+ stat_flag = GFC_GC_VALUE_TOO_SHORT;
+ }
+ /* Also a space before the next arg. */
+ else if (i != argc - 1 && tot_len + arglen == command_len)
+ stat_flag = GFC_GC_VALUE_TOO_SHORT;
+
+ memcpy (&command[tot_len], argv[i], thisarg);
+ }
+
+ /* Add the legth of the argument. */
+ tot_len += arglen;
+ if (i != argc - 1)
+ tot_len++;
+ }
+
+ if (length != NULL)
+ *length = tot_len;
+
+ if (status != NULL)
+ *status = stat_flag;
+}
+
+
+/* INTEGER*8 wrapper for get_command. */
+
+void
+prefix(get_command_i8) (char *command,
+ GFC_INTEGER_8 *length,
+ GFC_INTEGER_8 *status,
+ gfc_strlen_type command_len)
+{
+ GFC_INTEGER_4 length4;
+ GFC_INTEGER_4 status4;
+
+ prefix (get_command_i4) (command, &length4, &status4, command_len);
+ if (length)
+ *length = length4;
+ if (status)
+ *status = status4;
+}
diff --git a/libgfortran/intrinsics/rand.c b/libgfortran/intrinsics/rand.c
index d9add00af6f..d59e1688371 100644
--- a/libgfortran/intrinsics/rand.c
+++ b/libgfortran/intrinsics/rand.c
@@ -82,5 +82,5 @@ prefix(irand) (GFC_INTEGER_4 *i)
GFC_REAL_4
prefix(rand) (GFC_INTEGER_4 *i)
{
- return normalize_r4_i4 (i - 1, GFC_RAND_M1);
+ return normalize_r4_i4 (prefix(irand) (i) - 1, GFC_RAND_M1 - 1);
}
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index b20f860bcef..ff4bc26f317 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -835,6 +835,11 @@ us_write (void)
if (sfree (current_unit->s) == FAILURE)
generate_error (ERROR_OS, NULL);
+ /* for sequential unformatted, we write until we have more bytes than
+ can fit in the record markers. if disk space runs out first it will
+ error on the write */
+ current_unit->recl = g.max_offset;
+
current_unit->bytes_left = current_unit->recl;
}
@@ -890,7 +895,11 @@ data_transfer_init (int read_flag)
memset (&u_flags, '\0', sizeof (u_flags));
u_flags.access = ACCESS_SEQUENTIAL;
u_flags.action = ACTION_READWRITE;
- u_flags.form = FORM_UNSPECIFIED;
+ /* is it unformatted ?*/
+ if (ioparm.format == NULL && !ioparm.list_format)
+ u_flags.form = FORM_UNFORMATTED;
+ else
+ u_flags.form = FORM_UNSPECIFIED;
u_flags.delim = DELIM_UNSPECIFIED;
u_flags.blank = BLANK_UNSPECIFIED;
u_flags.pad = PAD_UNSPECIFIED;
diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c
index 0800447ba2e..0c652581c04 100644
--- a/libgfortran/io/unix.c
+++ b/libgfortran/io/unix.c
@@ -90,7 +90,7 @@ typedef struct
gfc_offset physical_offset; /* Current physical file offset */
gfc_offset logical_offset; /* Current logical file offset */
gfc_offset dirty_offset; /* Start of modified bytes in buffer */
- gfc_offset file_length; /* Length of the file, -1 if not seekable. */
+ gfc_offset file_length; /* Length of the file, -1 if not seekable. */
char *buffer;
int len; /* Physical length of the current buffer */
@@ -280,7 +280,9 @@ fd_flush (unix_stream * s)
return FAILURE;
s->physical_offset = s->dirty_offset + s->ndirty;
- if (s->physical_offset > s->file_length)
+
+ /* don't increment file_length if the file is non-seekable */
+ if (s->file_length != -1 && s->physical_offset > s->file_length)
s->file_length = s->physical_offset;
s->ndirty = 0;
@@ -406,18 +408,28 @@ fd_alloc_w_at (unix_stream * s, int *len, gfc_offset where)
}
/* Return a position within the current buffer */
-
- if (s->ndirty == 0)
- { /* First write into a clean buffer */
- s->dirty_offset = where;
- s->ndirty = *len;
+ if (s->ndirty == 0
+ || where > s->dirty_offset + s->ndirty
+ || s->dirty_offset > where + *len)
+ { /* Discontiguous blocks, start with a clean buffer. */
+ /* Flush the buffer. */
+ if (s->ndirty != 0)
+ fd_flush (s);
+ s->dirty_offset = where;
+ s->ndirty = *len;
}
else
- {
- if (s->dirty_offset + s->ndirty == where)
- s->ndirty += *len;
- else
- fd_flush (s); /* Can't combine two dirty blocks */
+ {
+ gfc_offset start; /* Merge with the existing data. */
+ if (where < s->dirty_offset)
+ start = where;
+ else
+ start = s->dirty_offset;
+ if (where + *len > s->dirty_offset + s->ndirty)
+ s->ndirty = where + *len - start;
+ else
+ s->ndirty = s->dirty_offset + s->ndirty - start;
+ s->dirty_offset = start;
}
s->logical_offset = where + *len;
@@ -461,13 +473,18 @@ static try
fd_truncate (unix_stream * s)
{
- if (ftruncate (s->fd, s->logical_offset))
+ if (lseek (s->fd, s->logical_offset, SEEK_SET) == -1)
return FAILURE;
- s->physical_offset = s->file_length = s->logical_offset;
+ /* non-seekable files, like terminals and fifo's fail the lseek.
+ the fd is a regular file at this point */
- if (lseek (s->fd, s->file_length, SEEK_SET) == -1)
+ if (ftruncate (s->fd, s->logical_offset))
+ {
return FAILURE;
+ }
+
+ s->physical_offset = s->file_length = s->logical_offset;
return SUCCESS;
}
@@ -1390,8 +1407,10 @@ file_position (stream * s)
int
is_seekable (stream * s)
{
-
- return ((unix_stream *) s)->mmaped;
+ /* by convention, if file_length == -1, the file is not seekable
+ note that a mmapped file is always seekable, an fd_ file may
+ or may not be. */
+ return ((unix_stream *) s)->file_length!=-1;
}
try
diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c
index 3602c1b9157..749a34a4834 100644
--- a/libgfortran/io/write.c
+++ b/libgfortran/io/write.c
@@ -535,10 +535,10 @@ write_float (fnode *f, const char *source, int len)
memcpy(p + nb - 8, "Infinity", 8);
else
memcpy(p + nb - 3, "Inf", 3);
- if (nb < 8)
- memset(p + nb - 4, fin, 1);
+ if (nb < 8 && nb > 3)
+ p[nb - 4] = fin;
else if (nb > 8)
- memset(p + nb - 9, fin, 1);
+ p[nb - 9] = fin;
}
else
memcpy(p + nb - 3, "NaN", 3);
diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h
index 3e1357fc794..c0406aaffed 100644
--- a/libgfortran/libgfortran.h
+++ b/libgfortran/libgfortran.h
@@ -88,6 +88,7 @@ typedef complex float GFC_COMPLEX_4;
typedef complex double GFC_COMPLEX_8;
typedef size_t index_type;
+typedef GFC_INTEGER_4 gfc_strlen_type;
/* This will be 0 on little-endian machines and one on big-endian machines. */
#define l8_to_l4_offset prefix(l8_to_l4_offset)
diff --git a/libgfortran/m4/cexp.m4 b/libgfortran/m4/cexp.m4
index 1d22b089a92..c91945051e3 100644
--- a/libgfortran/m4/cexp.m4
+++ b/libgfortran/m4/cexp.m4
@@ -31,17 +31,14 @@ cabs`'q (complex_type z)
return hypot`'q (REALPART (z), IMAGPART (z));
}
-/* Complex argument. The angle made with the +ve real axis. Range 0-2pi. */
+/* Complex argument. The angle made with the +ve real axis.
+ Range -pi-pi. */
real_type
carg`'q (complex_type z)
{
real_type arg;
- arg = atan2`'q (IMAGPART (z), REALPART (z));
- if (arg < 0)
- return arg + 2 * M_PI;
- else
- return arg;
+ return atan2`'q (IMAGPART (z), REALPART (z));
}
/* exp(z) = exp(a)*(cos(b) + isin(b)) */
diff --git a/libgfortran/runtime/normalize.c b/libgfortran/runtime/normalize.c
index a62d71dc5f0..ce553762a0b 100644
--- a/libgfortran/runtime/normalize.c
+++ b/libgfortran/runtime/normalize.c
@@ -81,7 +81,7 @@ almostone_r8 ()
}
-/* Convert an unsigned integer in the range [0..x) into a
+/* Convert an unsigned integer in the range [0..x] into a
real the range [0..1). */
GFC_REAL_4
@@ -96,7 +96,7 @@ normalize_r4_i4 (GFC_UINTEGER_4 i, GFC_UINTEGER_4 x)
}
-/* Convert an unsigned integer in the range [0..x) into a
+/* Convert an unsigned integer in the range [0..x] into a
real the range [0..1). */
GFC_REAL_8
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 599fab3304e..f8e1c9c5bff 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,20 @@
+2004-06-29 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * lrealpath.c (lrealpath): Add _WIN32 support.
+
+2004-06-28 Zack Weinberg <zack@codesourcery.com>
+
+ * cp-demangle.h: Declare cplus_demangle_operators,
+ cplus_demangle_builtin_types, cplus_demangle_mangled_name, and
+ cplus_demangle_type as static if IN_GLIBCPP_V3.
+
+2004-06-28 Ian Lance Taylor <ian@wasabisystems.com>
+
+ PR other/16240
+ * cp-demangle.c (d_expr_primary): Check for a failure return from
+ cplus_demangle_type.
+ * testsuite/demangle-expected: Add test case.
+
2004-05-31 Danny Smith <dannysmith@users.sourceforge.net>
* pex-win32.c (fix_argv): Expand comment.
@@ -597,7 +614,7 @@
2003-08-12 Nathanael Nerode <neroden@gcc.gnu.org>
- * cp-demangle.c: Clarify what package(s) this is part of.
+ * cp-demangle.c: Clarify what package(s) this is part of.
2003-07-05 Danny Smith <dannysmith@users.sourceforge.net>
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index fe4b36712d3..8608bc82507 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -2398,6 +2398,8 @@ d_expr_primary (di)
const char *s;
type = cplus_demangle_type (di);
+ if (type == NULL)
+ return NULL;
/* If we have a type we know how to print, we aren't going to
print the type name itself. */
diff --git a/libiberty/cp-demangle.h b/libiberty/cp-demangle.h
index eea086862d6..02e74ec8735 100644
--- a/libiberty/cp-demangle.h
+++ b/libiberty/cp-demangle.h
@@ -131,19 +131,31 @@ struct d_info
/* Functions and arrays in cp-demangle.c which are referenced by
functions in cp-demint.c. */
+#ifdef IN_GLIBCPP_V3
+#define CP_STATIC_IF_GLIBCPP_V3 static
+#else
+#define CP_STATIC_IF_GLIBCPP_V3 extern
+#endif
-extern const struct demangle_operator_info cplus_demangle_operators[];
+CP_STATIC_IF_GLIBCPP_V3
+const struct demangle_operator_info cplus_demangle_operators[];
#define D_BUILTIN_TYPE_COUNT (26)
-extern const struct demangle_builtin_type_info
+CP_STATIC_IF_GLIBCPP_V3
+const struct demangle_builtin_type_info
cplus_demangle_builtin_types[D_BUILTIN_TYPE_COUNT];
-extern struct demangle_component *
+CP_STATIC_IF_GLIBCPP_V3
+struct demangle_component *
cplus_demangle_mangled_name PARAMS ((struct d_info *, int));
-extern struct demangle_component *
+CP_STATIC_IF_GLIBCPP_V3
+struct demangle_component *
cplus_demangle_type PARAMS ((struct d_info *));
extern void
cplus_demangle_init_info PARAMS ((const char *, int, size_t, struct d_info *));
+
+/* cp-demangle.c needs to define this a little differently */
+#undef CP_STATIC_IF_GLIBCPP_V3
diff --git a/libiberty/lrealpath.c b/libiberty/lrealpath.c
index b001b38ef66..4877753cd66 100644
--- a/libiberty/lrealpath.c
+++ b/libiberty/lrealpath.c
@@ -64,6 +64,12 @@ extern char *canonicalize_file_name (const char *);
# define REALPATH_LIMIT MAXPATHLEN
# endif
# endif
+#else
+ /* cygwin has realpath, so it won't get here. */
+# if defined (_WIN32)
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h> /* for GetFullPathName */
+# endif
#endif
char *
@@ -123,6 +129,30 @@ lrealpath (filename)
}
#endif
+ /* The MS Windows method. If we don't have realpath, we assume we
+ don't have symlinks and just canonicalize to a Windows absolute
+ path. GetFullPath converts ../ and ./ in relative paths to
+ absolute paths, filling in current drive if one is not given
+ or using the current directory of a specified drive (eg, "E:foo").
+ It also converts all forward slashes to back slashes. */
+#if defined (_WIN32)
+ {
+ char buf[MAX_PATH];
+ char* basename;
+ DWORD len = GetFullPathName (filename, MAX_PATH, buf, &basename);
+ if (len == 0 || len > MAX_PATH - 1)
+ return strdup (filename);
+ else
+ {
+ /* The file system is case-preserving but case-insensitive,
+ Canonicalize to lowercase, using the codepage associated
+ with the process locale. */
+ CharLowerBuff (buf, len);
+ return strdup (buf);
+ }
+ }
+#endif
+
/* This system is a lost cause, just duplicate the filename. */
return strdup (filename);
}
diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected
index 9a3f0b9da8d..d38ce33c830 100644
--- a/libiberty/testsuite/demangle-expected
+++ b/libiberty/testsuite/demangle-expected
@@ -3699,6 +3699,11 @@ _Z3fooIPA3_iEvRKT_
void foo<int (*) [3]>(int (* const&) [3])
foo<int (*) [3]>
#
+# This used to crash the demangler--PR 16240
+--format=gnu-v3 --no-params
+_ZN13PatternDriver23StringScalarDeleteValueC1ERKNS_25ConflateStringScalarValueERKNS_25AbstractStringScalarValueERKNS_12TemplateEnumINS_12pdcomplementELZNS_16complement_namesEELZNS_14COMPLEMENTENUMEEEE
+_ZN13PatternDriver23StringScalarDeleteValueC1ERKNS_25ConflateStringScalarValueERKNS_25AbstractStringScalarValueERKNS_12TemplateEnumINS_12pdcomplementELZNS_16complement_namesEELZNS_14COMPLEMENTENUMEEEE
+PatternDriver::StringScalarDeleteValue::StringScalarDeleteValue
# Test GNU V3 constructor and destructor identification.
# 0 means it is not a constructor/destructor.
# Other integers correspond to enum gnu_v3_{c,d}tor_kinds in demangle.h.
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 5f4565cb24c..a08c38662a7 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,1965 @@
+2004-08-01 Danny Smith <dannysmith@users.sourceforge.net>
+
+ PR libgcj/16814
+ * configure.in [host *mingw*] (SYSTEMSPEC): Remove -lwsock32.
+ * configure. Regenerate.
+ * include/win32.h: Explicitly include winsock2.h
+ * win32.cc (_Jv_platform_initialize): Require version 2.2 of
+ Winsock api.
+
+2004-07-30 Michael Koch <konqueror@gmx.de>
+
+ * java/util/zip/GZIPInputStream.java
+ (GZIPInputStream): Increase buffer size to 4k.
+ * java/util/zip/GZIPOutputStream.java
+ (GZIPOutputStream): Likewise.
+ * java/util/zip/Inflater.java
+ (setInput): Merged formating with GNU classpath.
+ * java/util/zip/InflaterInputStream.java
+ (InflaterInputStream): Increase buffer size to 4k.
+ (fill): Throw exception if stream ends early.
+ (read): Merged endless-loop with GNU classpath.
+ (skip): Increase buffer size to 2k.
+
+2004-07-30 Michael Koch <konqueror@gmx.de>
+
+ * gnu/java/awt/EmbeddedWindow.java
+ (addNotify): Use AccessController to allow execution of privileged
+ code.
+
+2004-07-29 Michael Koch <konqueror@gmx.de>
+
+ * gnu/java/lang/MainThread.java:
+ Explicitely import used classes.
+ (args): Make it type String[].
+
+2004-07-29 Dalibor Topic <robilad@kaffe.org>
+
+ * gnu/java/awt/ComponentDataBlitOp.java,
+ gnu/java/beans/ExplicitBeanInfo.java,
+ gnu/java/beans/IntrospectionIncubator.java,
+ gnu/java/beans/editors/ColorEditor.java,
+ gnu/java/beans/editors/FontEditor.java,
+ gnu/java/beans/editors/NativeBooleanEditor.java,
+ gnu/java/beans/editors/NativeByteEditor.java,
+ gnu/java/beans/editors/NativeDoubleEditor.java,
+ gnu/java/beans/editors/NativeFloatEditor.java,
+ gnu/java/beans/editors/NativeIntEditor.java,
+ gnu/java/beans/editors/NativeLongEditor.java,
+ gnu/java/beans/editors/NativeShortEditor.java,
+ gnu/java/beans/editors/StringEditor.java,
+ gnu/java/io/ClassLoaderObjectInputStream.java,
+ gnu/java/io/decode/Decoder.java,
+ gnu/java/io/encode/Encoder.java,
+ gnu/java/lang/ClassHelper.java,
+ gnu/java/locale/Calendar.java,
+ gnu/java/locale/Calendar_de.java,
+ gnu/java/locale/Calendar_en.java,
+ gnu/java/locale/Calendar_nl.java,
+ gnu/java/locale/LocaleInformation_de.java,
+ gnu/java/locale/LocaleInformation_en.java,
+ gnu/java/locale/LocaleInformation_nl.java:
+ Cleaned up imports.
+
+2004-07-28 Bryce McKinlay <mckinlay@redhat.com>
+
+ * README: Remove obsolete info. Update bug URL.
+ * THANKS: Updated.
+ * NEWS: Updated with news up to GCC 3.4 release.
+
+2004-07-28 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/java/security/action/GetPropertyAction.java (setParameters):
+ Renamed from 'setName'. New 2-argument form with default value.
+ (run): Pass default 'value' parameter to System.getProperty().
+ * gnu/java/security/action/SetAccessibleAction.java: Fix javadoc
+ typos.
+ * gnu/java/net/protocol/http/Connection.java: Use 'setParameters'
+ not 'setName'.
+
+2004-07-28 Bryce McKinlay <mckinlay@redhat.com>
+
+ * configure.in: Check for minimum GTK version 2.4 requirement.
+ * configure: Rebuilt.
+
+2004-07-27 Bryce McKinlay <mckinlay@redhat.com>
+
+ * testsuite/libjava.lang/TLtest.java: Reduce sleep time.
+ * testsuite/libjava.lang/Thread_Alive.java: Remove old email address.
+ Reduce sleep time.
+ * testsuite/libjava.lang/Thread_HoldsLock.java: Modify to work around
+ compiler bug.
+ * testsuite/libjava.lang/Thread_Interrupt.java: Remove old email
+ address. Reduce sleep times. Synchronize with target threads before
+ attempting to interrupt them. Don't try to calibrate yeild count,
+ instead, always loop for a fixed time.
+ * testsuite/libjava.lang/Thread_Join.java: Remove old email address.
+ * testsuite/libjava.lang/Thread_Monitor.java: Likewise.
+ * testsuite/libjava.lang/Thread_Wait.java: Likewise.
+ * testsuite/libjava.lang/Thread_Wait_2.java: Likewise.
+ * testsuite/libjava.lang/Thread_Wait_Interrupt.java: Likewise.
+ * testsuite/libjava.lang/pr179.java: Likewise.
+ * testsuite/libjava.lang/Thread_Sleep.java: Likewise. Reduce sleep
+ time. Remove upper bounds check on sleep time.
+
+2004-07-27 Bryce McKinlay <mckinlay@redhat.com>
+
+ * testsuite/libjava.lang/Thread_HoldsLock.java: New test case.
+ * testsuite/libjava.lang/Thread_HoldsLock.out: New.
+
+2004-07-27 Bryce McKinlay <mckinlay@redhat.com>
+
+ * java/io/File.java (toURI): Throw RuntimeException, not
+ InternalError.
+ * java/lang/Runtime.java (exit): Qualify static sleep() call with
+ class name, not instance.
+
+2004-07-24 Bryce McKinlay <mckinlay@redhat.com>
+
+ * Makefile.am: Add gnu/java/security/action/GetPropertyAction.java
+ and gnu/java/security/action/SetAccessibleAction.java.
+ * Makefile.in: Rebuilt.
+
+2004-07-23 Bryce McKinlay <mckinlay@redhat.com>
+
+ * prims.cc (_Jv_InitPrimClass): Don't create an array class.
+ (_Jv_CreateJavaVM): Don't pass array vtable parameter to
+ _Jv_InitPrimClass.
+ (DECLARE_PRIM_TYPE): Don't declare array vtables.
+ * include/jvm.h (struct _Jv_ArrayVTable): Removed.
+ * java/lang/Class.h (_Jv_InitPrimClass): Update friend declaration.
+
+2004-07-23 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * Makefile.am: Replace jar, rmic and rmiregistry references with
+ gjar, grmic and grmiregistry.
+ * configure.in: Likewise.
+ * Makefile.in: Regenerate.
+ * configure: Likewise.
+ * gcj/Makefile.in: Likewise.
+ * include/Makefile.in: Likewise.
+ * testsuite/Makefile.in: Likewise.
+
+2004-07-23 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/java/net/protocol/http/Connection.java: Use GetPropertyAction
+ for privileged getProperty calls.
+ * java/io/ObjectOutputStream.java (getField): No longer static. Use
+ SetAccessibleAction instead of anonymous class for doPrivileged call.
+ (getMethod): Likewise.
+ (setAccessible): New field. PrivilegedAction object to use when
+ calling setAccessible.
+ * java/io/ObjectStreamClass.java (calculateOffsets): Use
+ SetAccessibleAction instead of anonymous class for diPrivileged call.
+ (setFields): Likewise.
+ (getClassUID): Likewise.
+ (findMethod): Likewise.
+ * gnu/java/security/action/GetPropertyAction.java: New class.
+ * gnu/java/security/action/SetAccessibleAction.java: New class.
+
+2004-07-23 Bryce McKinlay <mckinlay@redhat.com>
+
+ * java/io/ObjectStreamField (ObjectStreamField): Don't unset 'toset'
+ for final fields.
+ * testsuite/libjava.lang/Serialization.java: New test.
+ * testsuite/libjava.lang/Serialization.out: New.
+
+2004-07-23 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/java/net/DefaultContentHandlerFactory.java: Check in real file
+ missed in last commit.
+
+2004-07-23 Mark Wielaard <mark@klomp.org>
+
+ * java/lang/System.java (static): Set http.agent system property when
+ not yet set.
+ * gnu/java/net/protocol/http/Connection.java (static): Get httpAgent
+ from system property inside AccessController.doPrivileged() call.
+ (proxyPort): Made package private.
+ (proxyInUse): Likewise.
+ (proxyHost): Likewise.
+ (userAgent): Likewise.
+
+2004-07-23 Mark Wielaard <mark@klomp.org>
+
+ * gnu/java/net/DefaultContentHandlerFactory.java: New dummy
+ implementation.
+
+2004-07-22 Bryce McKinlay <mckinlay@redhat.com>
+
+ * Makefile.am (ordinary_java_source_files): Add
+ DefaultContentHandlerFactory.java.
+ * Makefile.in: Rebuilt.
+ * java/net/URLConnection.java (defaultFactory): New field.
+ (getContent):
+ (getContentHandler): Renamed from 'setContentHandler'. Try
+ defaultFactory after user-set factory, if any. Search for content
+ handler implementations in gnu.java.net.content, not gnu.gcj.content.
+ * gnu/java/net/protocol/file/Connection.java (getHeaderField):
+ Implemented.
+ (getLastModified): Implemented.
+ (getPermission): Create file permission here, instead of in
+ constructor.
+ * gnu/java/net/protocol/gcjlib/Connection.java (getHeaderField):
+ Implemented.
+ * gnu/java/net/protocol/jar/Connection.java (getHeaderField):
+ Implemented.
+ (getLastModified): Implemented.
+ * gnu/java/awt/ClasspathToolkit.java (createImageProducer): New.
+ Default implementation.
+ * gnu/java/awt/peer/gtk/GtkToolkit.java (createImageProducer): New.
+ Implement using GdkPixbufDecoder.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/JTextArea.java
+ (setLineWrap): Fire property change event after new value is set.
+ (setTabSize): Likewise.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/JTable.java
+ (autoCreateColumnsFromModel): New field.
+ (autoResizeMode): Likewise.
+ (cellEditor): Likewise.
+ (cellSelectionEnabled): Likewise.
+ (columnModel): Likewise.
+ (dataModel): Likewise.
+ (defaultEditorsByColumnClass): Likewise.
+ (defaultRenderersByColumnClass): Likewise.
+ (editingColumn): Likewise.
+ (editingRow): Likewise.
+ (gridColor): Likewise.
+ (preferredViewportSize): Likewise.
+ (rowHeight): Likewise.
+ (rowMargin): Likewise.
+ (rowSelectionAllowed): Likewise.
+ (selectionBackground): Likewise.
+ (selectionForeground): Likewise.
+ (selectionModel): Likewise.
+ (showHorizontalLines): Likewise.
+ (showVerticalLines): Likewise.
+ (tableHeader): Likewise.
+ (JTable): Implemented.
+ (getColumnModel): Likewise.
+ (getSelectedRow): Likewise.
+ (getSelectionModel): Likewise.
+ (setModel): Likewise.
+ (setSelectionModel): Likewise.
+ (createScrollPaneForTable): New method.
+ (createDefaultDataModel): Likewise.
+ (createDefaultListSelectionModel): Likewise.
+ (getModel): Likewise.
+ (getTableHeader): Likewise.
+ (setTableHeader): Likewise.
+ (getColumnSelectionAllowed): Likewise.
+ (setColumnSelectionAllowed): Likewise.
+ (getRowSelectionAllowed): Likewise.
+ (setRowSelectionAllowed): Likewise.
+ (getAutoResizeMode): Likewise.
+ (setAutoResizeMode): Likewise.
+ (getColumnCount): Likewise.
+ (getRowCount): Likewise.
+ (getCellRenderer): Likewise.
+ * javax/swing/JTree.java
+ (cellRenderer): New field.
+ (editable): Likewise.
+ (rootVisible): Likewise.
+ (showsRootHandles): Likewise.
+ (getModel): New method.
+ (setModel): Likewise.
+ (isEditable): Likewise.
+ (setEditable): Likewise.
+ (isRootVisbile): Likewise.
+ (setRootVisible): Likewise.
+ (getShowsRootHandles): Likewise.
+ (setShowRootHandles): Likewise.
+ (getCellRenderer): Likewise.
+ (setCellRenderer): Likewise.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/JFormattedTextField.java
+ (setDocument): Implemented.
+ * javax/swing/JRootPane.java:
+ Fixed javadocs.
+ * javax/swing/JTable.java
+ (getDefaultRenderer): New method.
+ * javax/swing/JTextField.java
+ (setFont): Likewise.
+ (getPreferredSize): Likewise.
+ * javax/swing/JToggleButton.java
+ (getAccessibleContext): Fix javadoc.
+ * javax/swing/JTree.java:
+ Add some javadocs.
+ * javax/swing/JViewport.java:
+ Likewise.
+
+2004-07-21 David Jee <djee@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GtkFileDialogPeer.java:
+ Collect all native method declaration at the top.
+ (create): Set the filename filter if necessary.
+ (setDirectory): Call nativeSetDirectory().
+ (setFilenameFilter): Implement.
+ (filenameFilterCallback): New method.
+ * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
+ (create): Configure dialog to show hidden files.
+ (filenameFilterCallback): New function.
+ (nativeSetFilenameFilter): New function.
+ (nativeSetDirectory): New function.
+
+2004-07-21 Kim Ho <kho@redhat.com>
+
+ * javax/swing/plaf/basic/BasicSliderUI.java:
+ Ran Jalopy.
+ (paintTrack): Fill the track before painting
+ the borders.
+
+2004-07-21 Graydon Hoare <graydon@redhat.com>
+
+ patch from Roman Kennke <roman@ontographics.com>
+ * javax/swing/Spring.java: New file.
+ * javax/swing/SpringLayout.java: New file.
+ * Makefile.am: Add new files.
+ * Makefile.in: Regenerate.
+
+2004-07-21 Graydon Hoare <graydon@redhat.com>
+
+ * javax/swing/plaf/basic/BasicSplitPaneUI.java: Minor layout fixes.
+ * javax/swing/plaf/basic/BasicTabbedPaneUI.java: Likewise.
+ * javax/swing/ScrollPaneLayout.java: Likewise.
+
+2004-07-21 Kim Ho <kho@redhat.com>
+
+ * javax/swing/DefaultDesktopManager.java:
+ (findMinimum): Removed.
+ (resizeFrame): Trust the UI to pass valid
+ bounds.
+ * javax/swing/JOptionPane.java:
+ Implemented showInternalXXXDialog methods.
+ (startModal): New method.
+ * javax/swing/plaf/basic/BasicInternalFrameUI.java:
+ (BorderListener::mouseDragged): Verify that the new
+ bounds are valid before passing them to the DesktopManager.
+ (preferredLayoutSize): Delegate
+ to getSize.
+ (minimumLayoutSize): Ditto.
+ (getSize): New method.
+ (GlassPaneDispatcher): Reimplemented by copying
+ a stripped down LightweightDispatcher from Container.
+ (getMinimumSize): Call minimumLayoutSize.
+ * javax/swing/plaf/basic/BasicOptionPaneUI.java:
+ Ran Jalopy.
+ (mousePressed): Add ability to properly close
+ JInternalFrames.
+ * javax/swing/plaf/basic/BasicToolBarUI.java:
+ (DragWindow): Set owner for DragWindow.
+
+2004-07-21 Jerry Quinn <jlquinn@optonline.net>
+
+ * java/awt/image/ShortLookupTable.java: New file.
+ * java/awt/image/ByteLookupTable.java: New file.
+ * Makefile.am: Added new files.
+ * Makefile.in: Regenerated.
+
+2004-07-21 David Jee <djee@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
+ (create(GtkContainerPeer)): New native method.
+ (create()): Call native create(), passing in the parent frame
+ as the paramter. Natively set the current file and directory.
+ (setFile): Construct an absolute filename before passing it to
+ the native peer.
+ (nativeGetDirectory): New method.
+ * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
+ (window_closed): Removed.
+ (ok_clicked): Likewise.
+ (cancel_clicked): Likewise.
+ (handle_response): New method.
+ (create): Use GtkFileChooserDialog.
+ (connectSignals): Connect to handle_response.
+ (nativeGetDirectory): New method.
+ (nativeSetFile): Use GtkFileChooserDialog.
+
+2004-07-21 Jerry Quinn <jlquinn@optonline.net>
+
+ * java/awt/image/LookupTable.java: New file.
+ * Makefile.am: Added new file.
+ * Makefile.in: Regenerated.
+
+2004-07-21 Jerry Quinn <jlquinn@optonline.net>
+
+ * java/awt/image/Kernel.java: New file.
+ * Makefile.am: Added new file.
+ * Makefile.in: Regenerated.
+
+2004-07-21 Olga Rodimina <rodimina@redhat.com>
+
+ * javax/swing/JCheckBoxMenuItem.java: Fixed Javadocs.
+ * javax/swing/JMenu.java: Likewise.
+ * javax/swing/JMenuBar.java: Likewise.
+ (MARGIN_CHANGED_PROPERTY): New property.
+ (setMargin): Implemented.
+ * javax/swing/JMenuItem.java: Fixed javadocs.
+ * javax/swing/JPopupMenuUI.java: Fixed javadocs.
+ (LABEL_CHANGED_PROPERTY): New property.
+ (add): changed to use createActionComponent.
+ (createActionComponent): Implemented.
+ (setLabel): Fire PropertyChangeEvent if label property
+ changes.
+ * javax/swing/JRadioButtonMenuItem.java: Fixed javadocs.
+ * javax/swing/plaf/basic/BasicMenuBarUI.java: Likewise.
+ (ContainerHandler): Repaint if margin property has changed.
+ * javax/swing/plaf/basic/BasicMenuItemUI.java:
+ (installUI): Call installComponents().
+ (uninstallUI): Call uinstallComponents().
+ * javax/swing/plaf/basic/BasicMenuUI.java:
+ Fixed javadocs.
+ * javax/swing/plaf/basic/BasicPopupMenuUI.java:
+ Likewise.
+
+2004-07-21 Kim Ho <kho@redhat.com>
+
+ * javax/swing/plaf/basic/BasicToolBarUI.java:
+ (DragWindow): Use the right constructor.
+
+2004-07-21 Kim Ho <kho@redhat.com>
+
+ * javax/swing/JToolBar.java:
+ (layoutContainer): Use getComponents.
+ * javax/swing/plaf/basic/BasicToolBarUI.java:
+ (DragWindow): Don't use SwingUtilities'
+ getOwnerFrame
+ (ToolBarDialog): ditto.
+
+2004-07-21 Kim Ho <kho@redhat.com>
+
+ * javax/swing/JRootPane.java:
+ Ran jalopy.
+ (layoutContainer): Set the glasspane's size to
+ be the same as the content pane.
+ (createGlassPane): Set opaque property to false.
+
+2004-07-21 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * java/awt/Component.java (requestFocus()): Don't handle Panels
+ specially.
+ (requestFocus(boolean)): Likewise.
+ (requestFocusInWindow(boolean)): Likewise.
+ * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c (create):
+ Set GTK_CAN_FOCUS flag.
+
+2004-07-21 Kim Ho <kho@redhat.com>
+
+ * Makefile.am: Added new file.
+ * Makefile.in: Regenerated.
+ * gcj/Makefile.in: Regenerated.
+ * include/Makefile.in: Regenerated.
+ * javax/swing/AbstractButton.java:
+ Add rollOverEnabled property.
+ (setRolloverEnabled): Use new property.
+ (isRolloverEnabled): Use new property.
+ * javax/swing/JTabbedPane.java:
+ (setComponent): Remove useless JTabbedPane.this.
+ * javax/swing/JToolBar.java: Finish implementation.
+ * javax/swing/plaf/basic/BasicArrowButton.java:
+ (paint): Moved border painting to a border.
+ * javax/swing/plaf/basic/BasicLookAndFeel.java:
+ Change JToolBar look and feel defaults.
+ * javax/swing/plaf/basic/BasicOptionPaneUI.java
+ (actionPerformed): Return Integer index instead of name.
+ (addButtonComponents): Check to see if component is
+ JButton last.
+ (createMessageArea): Don't use components that are not
+ completed yet.
+ (getIconForType): Use temporary icons.
+ * javax/swing/plaf/basic/BasicSliderUI.java:
+ (mousePressed): Do not return if it's on thumb.
+ (paintMinorTickForHorizSlider): Use BLACK to paint ticks.
+ (paintMinorTickForVertSlider): ditto.
+ (paintMajorTickForHorizSlider): ditto.
+ (paintMajorTickForVertSlider): ditto.
+ * javax/swing/plaf/basic/BasicSplitPaneDivider.java:
+ Add a border around the SplitPaneDivider.
+ * javax/swing/plaf/basic/BasicSplitPaneUI.java:
+ Remove comments.
+ * javax/swing/plaf/basic/BasicToolBarSeparatorUI.java:
+ New file. Implemented.
+ * javax/swing/plaf/basic/BasicToolBarUI.java:
+ Implemented.
+ * testsuite/Makefile.in: Regenerated.
+
+2004-07-21 Graydon Hoare <graydon@redhat.com>
+
+ * javax/swing/Timer.java (run): Queue events each time cycle.
+
+2004-07-21 David Jee <djee@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GtkImagePainter.java
+ (imageComplete): Call image.imageComplete().
+ * java/awt/image/MemoryImageSource.java:
+ Reimplement consumers as a Vector instead of a Hashtable. This is
+ because enumeration on a Hashtable is not thread-safe.
+ (addConsumer): Adapt to Vector consumers.
+ (isConsumer): Adapt to Vector consumers.
+ (removeConsumer): Adapt to Vector consumers.
+ (startProduction): Adapt to Vector consumers. Call imageComplete()
+ with STATICIMAGEDONE flag instead of SINGLEFRAME flag.
+ (newPixels): Adapt to Vector consumers.
+ (sendPicture): Set the color model of the image consumer.
+ (newPixels(IIII)): Adapt to Vector consumers.
+ (newPixels(IIIIB)): Adapt to Vector consumers.
+
+2004-07-21 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * java/awt/Component.java (deliverEvent): Implement.
+ (postEvent): Implement.
+ (handleEvent): Implement.
+ (translateEvent): New method.
+ (dispatchEventImpl): Document. Add AWT 1.0 event handling.
+ * java/awt/Container.java (deliverEvent): Implement.
+ * java/awt/Event.java (paramString): Fix formatting.
+ * java/awt/Font.java (toString): Likewise.
+ * java/awt/Window.java (postEvent): Implement.
+
+2004-07-21 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * java/awt/DefaultKeyboardFocusManager.java (dispatchEvent):
+ Set window's focus owner upon receiving a FOCUS_LOST event.
+ * java/awt/Window.java (Window()): Refocus the previously
+ focused component within the window when the window regains the
+ top-level focus.
+ (setFocusOwner): New method.
+ * java/awt/Component.java (requestFocus): Add FIXME.
+
+ * libgcj.pc.in: Remove library flags.
+
+2004-07-21 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GtkPanelPeer.java (handleEvent): Handle
+ MOUSE_PRESSED event.
+ * java/awt/Component.java (requestFocus()): Handle Panel
+ specially. Post FOCUS_LOST event on opposite component.
+ (requestFocus(boolean)): Likewise.
+ (requestFocusInWindow(boolean)): Likewise.
+ (paramString): Reorder dimension fields.
+ * java/awt/Container.java (paramString): Fix string format.
+ * java/awt/DefaultKeyboardFocusManager.java (dispatchEvent):
+ Handle FOCUS_LOST events. Don't handle Windows specially. Only
+ process key events if the focus owner is non-null.
+ (dispatchKeyEvent): Likewise.
+ * java/awt/Frame.java (paramString): Fix formatting.
+ (generateName): New method.
+ (getUniqueLong): Likewise.
+ * java/awt/KeyboardFocusManager.java (getFocusOwner): Check if
+ the temporary focus owner is null. If so, return the permanent
+ focus owner.
+ * java/awt/Panel.java (generateName): New method.
+ (getUniqueLong): Likewise.
+ * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c: Rework
+ signal handling to make callbacks more specific.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/text/Position.java
+ (Bias): Implemented.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/LookAndFeel.java
+ (provideErrorFeedback): New method.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/JTextArea.java
+ (tabSize): New field.
+ (getTabSize): New method.
+ (setTabSize): Likewise.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/ActionMap.java:
+ Fixed javadocs all over.
+ (serialVersionUID): Made private.
+ (parent): Don't explicitely initialize with default value.
+ (get): SImplified.
+ (keys): Reimplemented.
+ (allKeys): Likewise.
+ (convertSet): Removed.
+ * javax/swing/ComponentInputMap.java:
+ Fixed javadocs all over.
+ (ComponentInputMap): Implemented.
+ (put): Likewise.
+ (clear): Likewise.
+ (remove): Likewise.
+ (SetParent): Likewise.
+ (getComponent): Likewise.
+ * javax/swing/InputMap.java:
+ Fixed javadocs all over.
+ (serialVersionUID): Made private.
+ (parent): Don't explicitely initialize with default value.
+ (get): SImplified.
+ (keys): Reimplemented.
+ (allKeys): Likewise.
+ (convertSet): Removed.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/ActionMap.java,
+ javax/swing/ComponentInputMap.java,
+ javax/swing/InputMap.java,
+ javax/swing/table/DefaultTableColumnModel.java,
+ javax/swing/table/TableColumn.java,
+ javax/swing/table/TableColumnModel.java,
+ javax/swing/table/TableModel.java,
+ javax/swing/text/AbstractDocument.java,
+ javax/swing/text/TextAction.java:
+ Reformated.
+
+2004-07-21 Graydon Hoare <graydon@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GtkToolkit.java (bufferedImageOrError):
+ Make method non-static.
+ * javax/swing/AbstractButton.java:
+ Rename fields to match property names where possible.
+ (iconTextGap): New property.
+ * javax/swing/JCheckBox.java: Match AbstractButton changes.
+ (init) New method, call from after various constructors.
+ * javax/swing/JComponent.java (revalidate):
+ Invalidate before queueing repair.
+ * javax/swing/JList.java (getPreferredScrollableViewportSize):
+ Reimplement in terms of visibleRowCount property.
+ * javax/swing/JMenuButton.java: Match AbstractButton changes.
+ * javax/swing/JScrollPane.java (createScrollListener):
+ Remove tracing chatter.
+ * javax/swing/JToggleButton.java: Match AbstractButton changes.
+ * javax/swing/RepaintManager.java (addInvalidComponent):
+ Don't invalidate.
+ * javax/swing/ScrollPaneLayout.java: Various corrections to layout
+ calculations.
+ * javax/swing/SwingUtilities.java (layoutCompoundLabel):
+ Mimic sun behavior on top left/right positioning.
+ * javax/swing/ViewportLayout.java (preferredLayoutSize):
+ Remove mistaken use of preferredScrollableViewportSize here.
+ (layoutContainer): Use view's preferred size as basis.
+ * javax/swing/plaf/basic/BasicButtonUI.java:
+ Set, get, and use textIconGap property.
+ (paint) Paint text returned from layout (with ellipsis).
+ * javax/swing/plaf/basic/BasicListUI.java:
+ Remove tracing chatter, correct various minor calculations.
+ (getCellBounds): Update layout state before calculating.
+ * javax/swing/plaf/basic/BasicLookAndFeel.java (Button.Margin):
+ Use margin default similar to sun's.
+ * javax/swing/plaf/basic/BasicScrollBarUI.java (ArrowIcon):
+ (createIncreaseIcon): Center icon, minimize margins.
+ (createDecreaseIcon): Likewise.
+ * javax/swing/plaf/basic/BasicScrollPaneUI.java (installDefaults):
+ Implement.
+ (installUI): Call it.
+ (uninstallDefaults): Implement.
+ (uninstallUI): Call it.
+ * javax/swing/plaf/basic/BasicToolBarUI.java (DragWindow):
+ Call existing Window constructor.
+ * javax/swing/plaf/basic/BasicViewportUI.java (paint):
+ Set clip before painting.
+
+2004-07-21 Olga Rodimina <rodimina@redhat.com>
+
+ * javax/swing/JMenuItem.java:
+ (processMouseEvent): Reimplemented to deal with
+ mouse drag events.
+ (createMenuDragMouseEvent): New private helper method.
+ Creates MenuDragMouseEvent.
+ * javax/swing/MenuSelectionManager.java
+ (componentForPoint): Implemented.
+ (isComponentPartOfCurrentMenu): Made public.
+ (processMouseEvent): Reimplemented to deal with
+ mouse drag events.
+ (setSelectedPath): Corrected small mistake that caused
+ path to be set incorrectly.
+ (getPath): If given component is JMenu then also add this
+ menu's popup menu to the selected path.
+ * javax/swing/plaf/basic/BasicMenuItemUI.java:
+ (getPath): Ditto.
+ (getPreferredSize): Call getPreferredMenuItemSize().
+ (getPreferredItemSize): Moved code from getPreferredSize to here.
+ (installListeners): Install MouseMotionListeners.
+ (MouseInputHandler): Pass mouse release event to MenuSelectionManager
+ if mouse wasn't released in the bounds of this menu item.
+ (MenuDragMouseHandler): Implemented.
+ * javax/swing/plaf/basic/BasicMenuUI.java:
+ (installListeners): Install MouseMotionListener and
+ MenuDrageMouseListener.
+ (MenuDragMouseHandler): Implemented.
+ * javax/swing/plaf/basic/BasicPopupMenuUI.java:
+ (uninstallListeners): Implemented.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/JCheckBox.java: Reformated.
+ (JCheckBox): Fixed all constructors.
+ (isBorderPaintedFlat): New method.
+ (setBorderPaintedFlat): New method.
+ * javax/swing/JEditorPane.java
+ (createEditorKitForContentType): Made public.
+ (scrollToReference): Likewise.
+ * javax/swing/JTextArea.java
+ (setLineWrap): Fire property change.
+ * javax/swing/JToggleButton.java
+ (JToggleButton): New constructor.
+ (JToggleButton): Simplified.
+ * javax/swing/text/AttributeSet.java
+ (FontAttribute): Renamed from FontCharacterAttribute.
+ * javax/swing/text/JTextComponent.java
+ (KeyBinBinding): Added javadoc.
+ (JTextComponent): Likewise.
+ (getAccessibleContext): Fixed javadoc.
+ * javax/swing/text/View.java
+ (View): Added javadoc.
+ * javax/swing/text/TabableView.java: New file.
+ * Makefile.am: Added javax/swing/text/TabableView.java.
+ * Makefile.in: Regenerated.
+
+2004-07-21 Graydon Hoare <graydon@redhat.com>
+
+ * java/awt/image/BufferedImage.java (getSource): Remove tracing chatter.
+ * gnu/java/awt/peer/gtk/GtkToolkit.java
+ (GtkErrorImage): New helper class.
+ (bufferedImageOrError): New helper method.
+ (createImage): Use it.
+
+2004-07-21 David Jee <djee@redhat.com>
+
+ * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c
+ (setCaretPosition): Scroll the text view so the new caret position
+ is visible on screen.
+
+2004-07-21 David Jee <djee@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GtkContainerPeer.java
+ (setBounds): Do not validate awtComponent here.
+ * gnu/java/awt/peer/gtk/GtkScrollPanePeer.java
+ (getPreferredSize): New method.
+ * java/awt/ScrollPane.java
+ (ScrollPane): Set default size to 100x100.
+ (addNotify): If child is not a Panel, wrap it with a new Panel.
+ (paramString): Implement.
+
+2004-07-21 Olga Rodimina <rodimina@redhat.com>
+
+ * javax/swing/JMenu.java:
+ (setSelected): Display popup menu only if this menu
+ is showing on the screen.
+ * javax/swing/JPopupMenu.java:
+ (processMouseEvent): Added comment.
+ (processKeyEvent): Likewise.
+ * javax/swing/MenuSelectionManager.java:
+ (clearSelectedPath): Only fireStateChanged() after
+ selected path was changed, not before.
+ (setSelectedPath): Likewise.
+ * javax/swing/plaf/basic/BasicMenuItemUI.java:
+ (paintMenuItem): Corrected position of menu item's
+ icon.
+ * javax/swing/plaf/basic/BasicPopupMenuUI.java:
+ (installUI): Correct setDefaultLightWeightPopupEnabled call.
+ (popupMenuCanceled): Reimplemented.
+ (popupMenuWillBecomeVisible): Select first menu item by default
+ when displaying free floating popup menus.
+ (TopWindowListener): Reimplemented.
+
+2004-07-21 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * java/awt/Panel.java (dispatchEventImpl): Override to prevent
+ Panel from being painted twice when it is first shown.
+
+2004-07-21 Olga Rodimina <rodimina@redhat.com>
+
+ * java/awt/Window.java: Reverted changes from my
+ previous patch for creating window without an owner.
+ * javax/swing/SwingUtilities.java:
+ (SwingUtilities.OwnerFrame): made static.
+ (OwnerFrame.setVisible): New method. Overridden with
+ empty implementation.
+ (OwnerFrame.isShowing): New method. Ovverridden
+ to return always true.
+
+2004-07-21 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GtkComponentPeer.java,
+ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
+ (GtkComponentPeer): Remove temporary try/catch block.
+ (setVisible): Call show and hide.
+ (show): Make native.
+ (hide): Likewise.
+ (getArgs): Don't add "visible" argument.
+ * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
+ (property_notify_predicate): Return Bool instead of int.
+ (find_layout): New function.
+ (connectJObject): Call find_layout.
+ (connectSignals): Likewise.
+ (moveLayout): Likewise.
+ (gtkLayoutSetVisible): Likewise.
+
+2004-07-21 Mark Wielaard <mark@klomp.org>
+
+ * java/awt/event/InvocationEvent.java (dispatch): Synchronize
+ on notifier object before calling notifyAll().
+
+2004-07-21 Olga Rodimina <rodimina@redhat.com>
+
+ * java/awt/Window.java: Changed constructors to use new
+ method that is described below. Constructors call this
+ methods only if newly created window should have an owner.
+ (setWindowOwner): New method. Implementation for
+ this method is moved from this(owner,configuration).
+ * javax/swing/JWindow.java:
+ (JWindow): Reimplement to use SwingUtilities.ownerFrame
+ instead of owner.
+ * javax/swing/SwingUtilities.java:
+ (ownerFrame): Change type of this field to OwnerFrame.
+ (getOwnerFrame): Changed to return object of type OwnerFrame.
+ (SwingUtilities.OwnerFrame): New class. Represents owner
+ of a Window that is not provided with one.
+
+2004-07-21 Olga Rodimina <rodimina@redhat.com>
+
+ * javax/swing/AbstractButton.java:
+ (configurePropertiesFromAction): Set action command
+ to button's text by default if action command is not
+ explicitely specified.
+ * javax/swing/JMenu.java: Remove unnecessary listener
+ and methods relevant to it.
+ (setSelected): Reimplemented.
+ (menuSelectionChanged): Moved most part of implementation to
+ setSelected() and call it instead.
+ * javax/swing/JMenuItem.java:
+ (init): Comment out statement that sets paint_border to false.
+ (configurePropertiesFromAction): Do not set accelerator
+ for JMenu.
+ (menuSelectionChanged): Change selected index in the selection
+ model of menu item's parent.
+ * javax/swing/JPopupMenu.java:
+ (remove): Set constraints.fill field to GridBagConstraints.BOTH
+ instead of GridBagConstraints.HORIZONTAL.
+ (insert): Likewise.
+ (createActionChangeListener): Implemented.
+ (setVisible): Correct location of HeavyWeightMenu and
+ don't firePopupMenuCanceled().
+ (menuSelectionChanged): Implemented.
+ (ActionChangeListener): New Listener. Implemented.
+ * javax/swing/plaf/basic/BasicMenuBarUI.java:
+ (BasicMenuBarUI.ContainerHandler): Implemented.
+ * javax/swing/plaf/basic/BasicMenuItemUI.java:
+ (paintMenuItem): Uncommented out code that paints
+ icon, now that icons are working properly.
+ (PropertyChangeListener): Implemented.
+ * javax/swing/plaf/basic/BasicPopupMenuUI.java:
+ Added javadocs.
+ (topWindowListener): New field.
+ (Constructor): initialize topWindowListener.
+ (BasicPopupMenuUI.TopWindowListener): Implemented.
+ (BasicPopupMenuUI.PopupMenuHandler): Implemented.
+ (BasicPopupMenuUI.TopWindowListener): New ComponentListener.
+ Implemented.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/plaf/basic/BasicButtonUI.java
+ (paintFocus): Fixed method signature.
+ (paintButtonPressed): Likewise.
+ (paintButtonNormal): Likewise.
+ (paintText): New method.
+ * javax/swing/plaf/basic/BasicLabelUI.java
+ (paint): Re-indented.
+ * javax/swing/plaf/basic/BasicTextUI.java
+ (installUI): Set parent textComponent to opaque.
+ * javax/swing/text/DefaultHighlighter.java
+ (checkPositions): New helper method.
+ (addHighlight): Throws BadLocationException, check positions.
+ (changeHighlight): Likewise.
+ * javax/swing/text/EditorKit.java
+ (EditorKit): Implements Serializable.
+ * javax/swing/text/JTextComponent.java
+ (getUI): Added javadoc.
+ (setUI): Likewise.
+ (upadteUI): Added javadoc, don't revalidate and repaint.
+
+2004-07-21 David Jee <djee@redhat.com>
+
+ * java/awt/GridBagLayout.java
+ (ArrangeGrid): Use PREFERREDSIZE instead of MINSIZE.
+ * javax/swing/AbstractButton.java
+ (setText): Reindent.
+ * javax/swing/RepaintManager.java
+ (addInvalidComponent): Find the first ancestor that isValidateRoot().
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/JFormattedTextField.java
+ (value): New field.
+ (JFormattedTextField): Implemented.
+ (getValue): Likewise.
+ (setValue): Likewise.
+ * javax/swing/LookAndFeel.java
+ (getSupportsWindowDecorations): New method.
+ * javax/swing/UIDefaults.java:
+ Use java.beans.PropertyChangeSupport instead of doing all ourself.
+ (addPropertyChangeListener): Made public.
+ (addResourceBundle): Likewise.
+ (removeResourceBundle): Likewise.
+ (setDefaultLocale): Likewise.
+ * javax/swing/plaf/basic/BasicRootPaneUI.java
+ (BasicRootPaneUI): Implements PropertyChangeListener.
+ (propertyChange): New method.
+ * javax/swing/plaf/basic/BasicTextUI.java
+ (BasicHighlighter): New inner class.
+ (createHighlighter): New method.
+ * javax/swing/plaf/basic/BasicToolBarUI.java
+ (DragWindow): Extends java.awt.Window.
+ * javax/swing/text/JTextComponent.java
+ (getDocument): Removed debug output.
+ * javax/swing/plaf/basic/BasicTextFieldUI.java,
+ javax/swing/text/DefaultHighlighter.java,
+ javax/swing/text/FieldView.java,
+ javax/swing/text/PlainView.java: New files.
+ * Makefile.am: Added new files.
+ * Makefile.in: Regenerated.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/JEditorPane.java
+ (createDefaultEditorKit): Use javax.swing.text.DefaultEditorKit.
+ (createEditorKitForContentType): Likewise.
+ * javax/swing/text/DefaultEditorKit.java
+ (serialVersionUID): Added constant field.
+ (EndOfLineStringPropery): Fixed typo.
+ (DefaultEditorKit): New constructor.
+ * javax/swing/text/Segment.java:
+ Import java.text.CharacterIterator.
+ * javax/swing/text/CharacterIterator.java,
+ javax/swing/text/PlainEditorKit.java: Removed.
+ * Makefile.am: Removed javax/swing/text/CharacterIterator.java and
+ javax/swing/text/PlainEditorKit.java.
+ * Makefile.in: Regenerated.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/JButton.java,
+ javax/swing/text/DefaultEditorKit.java,
+ javax/swing/text/EditorKit.java,
+ javax/swing/text/Segment.java,
+ javax/swing/text/StyledEditorKit.java:
+ Reformatted.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/ImageIcon.java
+ (file): Removed.
+ (description): Renamed from descr.
+ (ImageIcon): Added missing constructors.
+ (setParent): Removed.
+ (setImageObserver): New method.
+ (getImageObserver): New method.
+ (paintIcon): Handle observer = null.
+ * javax/swing/JButton.java
+ (removeNotify): Fixed javadoc.
+ (updateUI): Simplified.
+ * javax/swing/JRootPane.java
+ (serialVersionUID): New constant field.
+ * javax/swing/UIManager.java:
+ Fixed javadocs all over.
+ (setLookAndFeel): Throws UnsupportedLookAndFeelException.
+ * javax/swing/text/AbstractDocument.java
+ (createPosition): Throws BadLocationException.
+ (getText): Likewise.
+ (remove): Likewise.
+ * javax/swing/text/ComponentView.java
+ (modelToView): Likewise.
+ * javax/swing/text/DefaultEditorKit.java:
+ Made all public methods public.
+ (read): Throws BadLocationException and IOException.
+ (write): Likewise.
+ * javax/swing/text/EditorKit.java:
+ Made all public methods public.
+ (serialVersionUID): New constant field.
+ (clone): New method.
+ (read): Throws BadLocationException and IOException.
+ (write): Likewise.
+ * javax/swing/text/Segment.java
+ (array): Made public.
+ (count): Likewise.
+ (offset): Likewise.
+ (Segment): New constructors.
+ (clone): Reimplemented.
+ * javax/swing/text/StyledEditorKit.java
+ (serialVersionUID): New constant field.
+
+2004-07-21 Graydon Hoare <graydon@redhat.com>
+
+ * java/awt/image/BufferedImage.java
+ (getSource): Implement.
+ * javax/swing/ImageIcon.java
+ (ImageIcon): Implement ctor.
+ * javax/swing/ScrollPaneLayout.java
+ (preferredLayoutSize): Be more careful about nulls.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/text/AttributeSet.java
+ (CharacterAttribute): New interface
+ (ColorAttribute): Likewise.
+ (FontCharacterAttribute): Likewise.
+ (ParagraphAttribute): Likewise.
+ * javax/swing/text/DefaultCaret.java
+ (moveCaret): New method.
+ (positionCaret): Likewise.
+ (repaint): Made protected.
+ * javax/swing/text/JTextComponent.java
+ (KeyBinding): Made it static.
+ * javax/swing/text/View.java
+ (getContainer): Honor parent == null.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/text/AbstractDocument.java:
+ Reformatted.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/plaf/basic/BasicRootPaneUI.java:
+ Import javax.swing.UIManager explicitely.
+ * javax/swing/plaf/basic/BasicTabbedPaneUI.java
+ (ScrollingButton): Made it static.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/UIDefaults.java
+ (ActiveValue): Made public.
+ (LazyValue): Likewise.
+ * javax/swing/plaf/basic/BasicTextUI.java
+ (RootView): Reintroduced.
+ (view): Removed.
+ (rootView): New field.
+ (installUI): Create document if needed, initialize rootView.
+ (uninstallUI): Hanle rootView.
+ (paint): Likewise.
+ (getRootView): Likewise.
+ (setView): Likewise.
+ * javax/swing/text/DefaultCaret.java:
+ Renamed all "evt" variables to "event".
+
+2004-07-21 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * libgcj.spec.in: Add -l-java-util-logging.
+
+2004-07-21 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c
+ (init_dpi_conversion_factor): Check for int_dpi < 0 in case
+ gtk-xft-dpi can no calculate the right value.
+ (dpi_changed_cb): Mark *pspec as unsused.
+
+2004-07-21 David Jee <djee@redhat.com>
+
+ * java/awt/Component.java
+ (move): Delegate to setBounds().
+ (resize): Likewise.
+ (reshape): Fix so it repaints parent and self only when necessary.
+
+2004-07-21 David Jee <djee@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GtkComponentPeer.java,
+ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
+ (GtkComponentPeer): Revert previous patch from 2004-06-22.
+ (setVisible): Likewise.
+ (show): Likewise.
+ (hide): Likewise.
+ (getArgs): Likewise.
+ * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
+ (property_notify_predicate): Likewise.
+ (find_layout): Likewise.
+ (connectJObject): Likewise.
+ (connectSignals): Likewise.
+ (moveLayout): Likewise.
+ (gtkLayoutSetVisible): Likewise.
+
+2004-07-21 Graydon Hoare <graydon@redhat.com>
+
+ * Makefile.am
+ (jv_convert_LDADD):
+ (gij_LDADD):
+ (rmic_LDADD):
+ (rmiregistry_LDADD): Add lib-java-util-logging.la
+ * Makefile.in: Regenerate.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/text/AbstractDocument.java
+ (replace): Dont use protected method of java.util.Vector directly.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/plaf/basic/BasicTextUI.java
+ (installUI): Call specialized install methods.
+ (installDefaults): New method.
+ (installListeners): Likewise.
+ (installKeyboardActions): Likewise.
+ (uninstallUI): Likewise.
+ (uninstallDefaults): New method.
+ (uninstallListeners): Likewise.
+ (uninstallKeyboardActions): Likewise.
+ (getPropertyPrefix): New abstract method.
+ (paint): Made final, just call paintSafely().
+ (paintSavely): New method.
+ (paintBackground): Likewise.
+ (getVisibleEditorRect): Likewise.
+ * javax/swing/text/LayeredHighlighter.java,
+ javax/swing/text/TabExpander.java: New files.
+ * Makefile.am: Added javax/swing/text/LayeredHighlighter.java
+ and javax/swing/text/TabExpander.java.
+ * Makefile.in: Regenerated.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/plaf/basic/BasicTextUI.java
+ (BasicTextUI): Made abstract.
+ (BasicCaret): New inner class.
+ (view): Don't explicitely initialize with "null".
+ (textComponent): New field.
+ (textColor): Removed.
+ (disabledTextColor): Removed.
+ (normalBackgroundColor): Removed.
+ (RootView): Removed commented out inner class.
+ (createUI): Removed.
+ (createCaret): New method.
+ (getComponent): Likewise.
+ (installUI): Initialize textComponent only.
+ (getPreferredSize): Use installed JTextComponent.
+ (setView): New method.
+ (create): Likewise.
+ * javax/swing/text/JTextComponent.java
+ (highlighter): New field.
+ (caretColor): Likewise.
+ (disabledTextColor): Likewise.
+ (seletedTextColor): Likewise.
+ (selectionColor): Likewise.
+ (setUI): New method.
+ (getCaretColor): Likewise.
+ (setCaretColor): Likewise.
+ (getDisabledColor): Likewise.
+ (setDisabledColor): Likewise.
+ (getSelectedTextColor): Likewise.
+ (setSelectedTextColor): Likewise.
+ (getSelectionColor): Likewise.
+ (setSelectionColor): Likewise.
+ (getHighlighter): Likewise.
+ (setHighlighter): Likewise.
+ (replaceSelection): Likewise.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/plaf/basic/BasicScrollPaneUI.java
+ (BasicScrollPaneUI): Implements ScrollPaneConstants.
+ * javax/swing/plaf/basic/BasicToolBarUI.java
+ (BasicToolBarUI): Implements SwingConstants.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/JPopupMenu.java: Removed CVS tags.
+ * javax/swing/UIDefaults.java: Reformatted.
+ * javax/swing/plaf/basic/BasicRootPaneUI.java:
+ Explicitely import used classes.
+
+2004-07-21 Thomas Fitzsimmons <fitzsim@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GtkComponentPeer.java,
+ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
+ (GtkComponentPeer): Remove temporary try/catch block.
+ (setVisible): Call show and hide.
+ (show): Make native.
+ (hide): Likewise.
+ (getArgs): Don't add "visible" argument.
+ * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
+ (property_notify_predicate): Return Bool instead of int.
+ (find_layout): New function.
+ (connectJObject): Call find_layout.
+ (connectSignals): Likewise.
+ (moveLayout): Likewise.
+ (gtkLayoutSetVisible): Likewise.
+
+2004-07-21 Olga Rodimina <rodimina@redhat.com>
+
+ * javax/swing/AbstractButton.java:
+ (setDisplayedMnemonicIndex): Check if button
+ text is not null before checking its length.
+ * javax/swing/JMenuItem.java:
+ (processMouseEvent): Disarm menu item if mouse has
+ exited it.
+ * javax/swing/plaf/basic/BasicMenuUI.java:
+ (MouseInputHandler.mouseEntered): Do not raise
+ popup menu if this menu is already selected.
+ (MouseInputHandler.mousePressed): Do not fire
+ MenuEvents.
+ (MenuHandler): Implemented.
+
+2004-07-21 Olga Rodimina <rodimina@redhat.com>
+
+ * javax/swing/JCheckBoxMenuItem.java: Added Javadoc.
+ (getSelectedObjects): Implemented.
+ * javax/swing/JRadioButtonMenuItem.java: Added Javadoc.
+ * javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java:
+ Added javadoc for few methods.
+ (processMouseEvent): Made public.
+ * javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java
+ (processMouseEvent): Likewise.
+
+2004-07-21 Olga Rodimina <rodimina@redhat.com>
+
+ * javax/swing/AbstractButton.java:
+ (init): Set display mnemonic index to -1.
+ (setMnemonic(char)): Use setMnemonic(int).
+ (setMnemonic(int)): Set display mnemonic index.
+ (getDisplayedMnemonicIndex): Change method signature
+ by removing 'index' parameter.
+ * javax/swing/plaf/basic/BasicLookAndFeel.java:
+ Added default for Menu.selectionBackground.
+ * javax/swing/plaf/basic/BasicMenuItemUI.java:
+ (paintMenuItem): Change background color of the selected
+ menu item.
+ (paintText): Paint differently when menu item is disabled.
+ Also paint mnemonic if it appears in the menu item's label.
+ (paintAccelerator): Paint accelerator differently
+ if menu item is disabled.
+ * javax/swing/plaf/basic/BasicMenuUI.java:
+ (installDefaults): Install defaults for
+ selectionForeground and selectionBackground.
+ (uninstallDefaults): Uninstall defauls for
+ selectionForeground and selectionBackground.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/text/AbstractDocument.java
+ (BranchElement): Implemented.
+ (LeafElement): Implemented.
+ * javax/swing/text/DefaultCaret.java:
+ Import used classes.
+ (serialVersionUID): New constant.
+ * javax/swing/text/JTextComponent.java
+ (AccessibleJTextComponent): Removed dead declaration.
+ (caretPos): Removed.
+ (setCaret): New method.
+ * javax/swing/text/PlainDocument.java
+ (rootElement): New field.
+ (PlainDocument): Initialize rootElement.
+ (createDefaultRoot): New method.
+ (getDefaultRootElement): Implemented.
+ * javax/swing/text/View.java: Reformatted.
+ * javax/swing/text/ViewFactory.java
+ (create): Added javadoc.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/ToolTipManager.java: Reformatted.
+
+2004-07-21 Rodimina Olga <rodimina@redhat.com>
+
+ * javax/swing/AbstractButton.java
+ (changeEvent): New field.
+ (fireItemStateChanged): Change source of the event
+ to 'this' before firing it to button listeners.
+ (fireActionPerformed): Likewise.
+ (fireStateChanged): Likewise.
+ (createActionListener): Do not set source
+ of the event to AbstractButton.
+ * javax/swing/plaf/basic/BasicMenuBarUI.java:
+ (ContainerHandler.componentAdded): Removed
+ print out statement.
+ (ContainerHandler.componentRemoved): Likewise.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/text/Highlighter.java: New file.
+ * Makefile.am: Added javax/swing/text/Highlighter.java.
+ * Makefile.in: Regenerated.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/ToolTipManager.java
+ (stillInsideTimerAction): Fixed constructor arguments.
+ (outsideTimerAction): Likewise.
+ (insideTimerAction): Likewise.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/JButton.java: Reformatted.
+ * javax/swing/JFormattedTextField.java
+ (getUIClassID): Implemented.
+ * javax/swing/JRootPane.java
+ (serialVersionUID): New constant.
+ * javax/swing/JTextField.java
+ (align): New field.
+ (JTextField): Simplified.
+ (getUIClassID): New method.
+ (getActionListeners): Added @since tag.
+ (setColumns): Invalidate layout and repaint.
+ (getHorizontalAlignment): New method.
+ (setHorizontalAlignment): New method.
+ (selectAll): Removed.
+ * javax/swing/SwingUtilities.java
+ (getAncestorOfClass): Removed redundant @see tag.
+ (isLeftMouseButton): Fixed implementation.
+ (isMiddleMouseButton): Likewise.
+ (isRightMouseButton): Likewise.
+ * javax/swing/text/AbstractDocument.java
+ (AttributeContext.addAttribute): New method.
+ (AttributeContext.addAttributes): New method.
+ (AttributeContext.getEmptySet): New method.
+ (AttributeContext.reclaim): New method.
+ (AttributeContext.removeAttribute): New method.
+ (AttributeContext.removeAttributes): New method.
+ * javax/swing/text/Document.java
+ (createPosition): Throws BadLocationException.
+ (getText): Likewise.
+ (remove): Likewise.
+ * javax/swing/text/JTextComponent.java
+ (getText): Return null if no document is set. Catch
+ BadLocationException.
+ (getUI): Return ui.
+ (updateUI): Simplified.
+
+2004-07-21 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/JButton.java
+ (removeNotify): Fixed javadoc.
+ (updateUI): Simplified.
+
+2004-07-21 David Jee <djee@redhat.com>
+
+ * gnu/java/awt/image/ImageDecoder.java
+ (startProduction): Only add consumer if it's not added yet.
+ * gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
+ (GdkPixbufDecoder): Don't call initState() here.
+ (produce): Call initState() here, to ensure area_prepared and
+ area_updated signals are properly connected.
+ * gnu/java/awt/peer/gtk/GtkImage.java
+ (setColorModel): Use equals() to compare ColorModel objects.
+ (setPixels): Likewise.
+ * java/awt/image/ColorModel.java
+ (equals): Fix typo. Use Arrays.equals() to compare int arrays.
+ * java/awt/image/RGBImageFilter.java
+ (setColorModel): Set consumer's color model.
+ (setPixels): Use equals() to compare ColorModel objects.
+
+2004-07-21 Bryce McKinlay <mckinlay@redhat.com>
+
+ * java/net/URLConnection.java (position): New field.
+ (dateFormat1, dateFormat2, dateFormat3): Removed.
+ (dateFormats): New field.
+ (getHeaderFieldDate): Use new dateFormats array. Re-use parsePosition
+ each time instead of re-allocating.
+ (initializeDateFormats): Initialize 'dateFormats'.
+
+2004-07-20 Bryce McKinlay <mckinlay@redhat.com>
+
+ PR libgcj/16591
+ * prims.cc (_Jv_RunMain): Don't call _Jv_SetArgs if DISABLE_MAIN_ARGS
+ is defined.
+
+2004-07-20 Bryce McKinlay <mckinlay@redhat.com>
+
+ * java/net/Socket.java (getImpl): Now private. Remove comment.
+
+2004-07-20 Bryce McKinlay <mckinlay@redhat.com>
+
+ * java/io/BufferedWriter.java (BufferedWriter): Use existing lock
+ of chained Writer when calling super-constructor.
+ * java/io/FilterWriter.java (FilterWriter): Likewise.
+ * java/io/PrintWriter.java (PrintWriter): Likewise.
+
+2004-07-19 Bryce McKinlay <mckinlay@redhat.com>
+
+ * prims.cc (process_gcj_properties): Don't increment i within LHS
+ of assignment.
+
+2004-07-19 Per Bothner <per@bothner.com>
+
+ Print -verbose:message on "loading", not initialization.
+ * java/lang/Class.h (JV_STATE_LOADED, JV_STATE_COMPILED): Swap order.
+ * defineclass.cc (_Jv_ClassReader::parse): Print message if
+ gcj::verbose_class_flag.
+ * java/lang/natClass.cc (initializeClass): Don't print message here.
+ * java/lang/natClassLoader.cc (_Jv_WaitForState): If state was
+ _JV_STATE_COMPILED, set to JV_STATE_LOADED and may print message.
+ (_Jv_PrepareCompiledClass): Likewise.
+
+2004-07-18 Matthias Klose <doko@debian.org>
+
+ * configure.in: Substitute target_noncanonical.
+ * configure: Regenerate
+
+2004-07-17 Michael Koch <konqueror@gmx.de>
+
+ * java/lang/String.java: Fixed javadocs all over.
+
+2004-07-17 Mark Wielaard <mark@klomp.org>
+
+ * gnu/java/nio/channels/FileChannelImpl.java (truncate): Only truncate
+ when size is smaller.
+ * java/io/RandomAccessFile.java (setLength): Use truncate for
+ shrinking the file and seek plus write for expanding the file.
+
+2004-07-17 Michael Koch <konqueror@gmx.de>
+
+ * gnu/java/nio/channels/natFileChannelPosix.cc
+ (implTruncate): Always save current position. Only reposition file
+ pointer to where we started if not beyond new lenght. Reposition file
+ pointer to file length if it points beyond the end of file.
+
+2004-07-17 Mark Wielaard <mark@klomp.org>
+
+ * javax/swing/Box.java: Put FIXME comment above class declaration.
+ * javax/swing/JButton.java: Remove illegal L&F HTML from comments.
+ * javax/swing/JCheckBox.java: Likewise.
+ * javax/swing/JDialog.java: Likewise.
+ * javax/swing/JRadioButton.java: Likewise.
+ * javax/swing/JToggleButton.java: Likewise.
+ * javax/swing/UIManager.java: Likewise.
+ * javax/swing/border/TitledBorder.java: Likewise.
+ * javax/swing/plaf/basic/BasicLabelUI.java: Likewise.
+ * javax/swing/plaf/basic/BasicLookAndFeel.java: Likewise.
+ * javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.java: Likewise.
+ * javax/swing/plaf/basic/BasicProgressBarUI.java: Likewise.
+ * javax/swing/plaf/basic/BasicScrollBarUI.java: Likewise.
+ * javax/swing/plaf/basic/BasicSeparatorUI.java: Likewise.
+ * javax/swing/text/JTextComponent.java: Likewise.
+
+2004-07-17 Jeroen Frijters <jeroen@frijters.net>
+
+ * java/net/DatagramPacket.java (setAddress): Removed check for
+ null address.
+
+2004-07-17 Michael Koch <konqueror@gmx.de>
+
+ * java/net/DatagramSocket.java
+ (getLocalAddress): Check if socket is bound or not.
+ * java/net/Socket.java
+ (getLocalAddrss): Check if socket is bound or not.
+ (getPort): Return -1 when not connected. Dont check getImpl() for
+ null.
+ (setReuseAddress): Check if socket is closed.
+ (isConnected): Check if getImpl() returns null.
+
+2004-07-17 Mark Wielaard <mark@klomp.org>
+
+ * java/awt/event/InvocationEvent.java (dispatch): Synchronize
+ on notifier object before calling notifyAll().
+
+2004-07-17 Michael Koch <konqueror@gmx.de>
+
+ * gnu/java/nio/channels/FileChannelImpl.java
+ (finalize): Added javadoc.
+
+2004-07-17 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * java/text/CollationElementIterator.java
+ (text_decomposition): Changed type to RuleBasedCollator.CollationElement[]
+ (setText): Use ArrayList instead of Vector.
+
+2004-07-17 Michael Koch <konqueror@gmx.de>
+
+ * java/nio/ByteOrder.java
+ (static): Removed. Not needed.
+ Thanks to Patrick Reali for noticing.
+ * java/nio/charset/CharsetDecoder.java
+ (decode): Fix for classpath bug #9177: Reset state before flipping.
+
+2004-07-17 Michael Koch <konqueror@gmx.de>
+
+ * java/security/Security.java: Fixed javadocs all over.
+
+2004-07-17 Michael Koch <konqueror@gmx.de>
+
+ * gnu/java/awt/EmbeddedWindow.java
+ (static): Removed.
+ (addNotify): Set peer via reflection.
+ (setWindowPeer): Removed.
+ * gnu/java/awt/natEmbeddedWindow.cc: Removed.
+ * Makefile.am (nat_source_files):
+ Removed gnu/java/awt/natEmbeddedWindow.cc.
+ * Makefile.in: Regenerated.
+
+2004-07-17 Richard Earnshaw <rearnsha@arm.com>
+
+ * configure.in(ZIP, GCJH): Remove white space around '=' in variable
+ assignment.
+ * configure: Regenerated.
+
+2004-07-16 Nathanael Nerode <neroden@gcc.gnu.org>
+
+ * configure.in: Use build_noncanonical rather than build_alias.
+ * configure: Rebuild.
+
+ * configure.in: Eliminate CANADIAN and NULL_TARGET variables
+ by logic refactoring. Move default definition of NATIVE closer
+ to first alternate definition.
+ * configure: Regenerate.
+
+ * Makefile.am: Set ZIP and GCJH directly using autoconf.
+ * Makefile.in, include/Makefile.in, testsuite/Makefile.in,
+ gcj/Makefile.in: Regenerate.
+ * configure.in: Set ZIP and GCJH. Remove redundant condition
+ in AM_CONDITIONAL(NATIVE,...)
+ * configure: Regenerate.
+
+2004-07-15 Nathanael Nerode <neroden@gcc.gnu.org>
+
+ * configure.in: Use target_noncanonical rather than
+ target_alias for forward-compatibility with autoconf 2.59.
+ * configure: Regenerate.
+ * Makefile.am, gcj/Makefile.am, include/Makefile.am,
+ testsuite/Makefile.am: Substitute target_noncanonical.
+ * Makefile.in, gcj/Makefile.in, include/Makefile.in,
+ testsuite/Makefile.in: Regenerate.
+
+ * configure.in: Move as much as possible below AC_CANONICAL_SYSTEM.
+ Introduce _GCC_TOPLEV_NONCANONICAL_TARGET.
+ * acinclude.m4: Include acx.m4.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2004-07-15 Bryce McKinlay <mckinlay@redhat.com>
+
+ PR libgcj/16574
+ * java/sql/Timestamp.java (dateFormat): Renamed from sdf.
+ (decimalFormat): New static variable.
+ (sbuf): Likewise.
+ (getTime): New. Override Date.getTime().
+ (toString): Synchronize. Use decimalFormat to format nanos value
+ correctly. Truncate extra zeros.
+ (before): Compare getNanos() only if getTime() is equal.
+ (after): Likewise.
+
+2004-07-14 Nathanael Nerode <neroden@gcc.gnu.org>
+
+ * acinclude.m4: "Inline" LIBGCJ_CONFIGURE macro into...
+ * configure.in: ...here.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+ * aclocal.m4: Rebuilt with aclocal gcj-1.4.
+ * configure: Rebuilt with autoconf 2.13.
+ * Makefile.in, gcj/Makefile.in, include/Makefile.in,
+ testsuite/Makefile.in: Rebuilt with automake gcj-1.4.
+
+2004-07-14 Bryce McKinlay <mckinlay@redhat.com>
+
+ PR libgcj/16204
+ * Makefile.am (AM_CXXFLAGS): Add -D_FILE_OFFSET_BITS=64 to enable
+ large file support.
+ * Makefile.in: Rebuilt.
+ * testsuite/libjava.lang/LargeFile.java: New test case.
+ * testsuite/libjava.lang/LargeFile.out: New file.
+
+2004-07-14 Jerry Quinn <jlquinn@optonline.net>
+
+ * java/beans/EventHandler.java: Remove debugging statements.
+
+2004-07-14 Jerry Quinn <jlquinn@optonline.net>
+
+ * java/beans/EventHandler.java: New file.
+ * Makefile.am (awt_java_source_files): Add EventHandler.java.
+ * Makefile.in, gcj/Makefile.in, include/Makefile.in,
+ testsuite/Makefile.in: Regenerate.
+
+2004-07-14 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * testsuite/libjava.jacks/jacks.exp (gcj_jacks_write): Add deprecation
+ flag to the gcj_setup.
+ (gcj_jacks_run): Check tclsh version and launch jacks directly with
+ the tclsh.
+ * testsuite/libjava.jacks/jacks.xfail: Update fails to reflect the
+ deprecation flag change. 58 XFAILS removed.
+
+2004-07-14 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * configure.host (DIVIDESPEC) [s390*-*-*]: Set to
+ -fno-use-divide-subroutine.
+ * include/s390-signal.h: Include <ucontext.h> and <limits.h>.
+ (HANDLE_FPE): Define.
+ (SIGNAL_HANDLER): Change third argument to ucontext_t *.
+ (struct old_s390_kernel_sigaction): Likewise for k_sa_handler.
+ (HANDLE_DIVIDE_OVERFLOW): Define.
+
+2004-07-14 Michael Koch <konqueror@gmx.de>
+ Matthias Klose <doko@debian.org>
+
+ * java/awt/im/InputContext.java: Initialize in, line.
+
+2004-07-13 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * interpret.cc (run): Correctly access libffi return values of
+ integral smaller-than-int type; these are implicitly promoted.
+
+2004-07-13 Bryce McKinlay <mckinlay@redhat.com>
+
+ PR libgcj/7587
+ * interpret.cc (compile_mutex): New.
+ (_Jv_InitInterpreter): New. Initialize compile_mutex.
+ (run): Lock compile_mutex before calling compile() if compilation is
+ required.
+ * prims.cc (_Jv_CreateJavaVM): Call _Jv_InitInterpreter().
+ * include/java-interp.h (_Jv_InitInterpreter): Declare.
+
+2004-07-12 Bryce McKinlay <mckinlay@redhat.com>
+
+ PR libgcj/15713
+ * include/jvm.h (_Jv_value): New union type.
+ * gcj/field.h (_Jv_Field): Add new _addr union field variants
+ * interperet.cc (run): Use _Jv_value union type and *_addr _Jv_Field
+ union members.
+
+2004-07-12 Scott Gilbertson <scottg@mantatest.com>
+
+ * gnu/awt/xlib/XCanvasPeer.java (createImage): Implement.
+ * gnu/awt/xlib/XOffScreenImage.java
+ (XOffScreenImage): Add ImageConsumer interface. Add ColorModel
+ constructor argument. Add constructor using ImageProducer.
+ (getSource): Implement.
+ (imageComplete): New method.
+ (setColorModel): New method.
+ (setDimensions): New method.
+ (setHints): New method.
+ (setPixels): New method.
+ (setProperties): New method.
+ * gnu/gcj/xlib/GC.java (drawPoint): New native method.
+ * gnu/gcj/xlib/natGC.cc (drawPoint): New native method.
+
+2004-07-11 Bryce McKinlay <mckinlay@redhat.com>
+
+ PR libgcj/16478
+ * prims.cc (_Jv_CreateJavaVM): Fix comment.
+ * gnu/gcj/runtime/FinalizerThread.java (init): New. Native.
+ (finalizerReady): Now native.
+ (run): Likewise.
+ (runFinalizers): Removed.
+ * gnu/gcj/runtime/natFinalizerThread.cc (run): Implement here. Use
+ a primitive lock, and don't hold it while running the finalizers.
+ (runFinalizers): Implement. Don't aquire any Java lock.
+ (finalizerReady): Use lock primitives to signal finalizer thread.
+
+2004-07-11 Mark Wielaard <mark@klomp.org>
+
+ Reported by Roman Kennke <roman@ontographics.com> (bug #9331)
+ * java/net/URLStreamHandler.java (parseURL): When url file part
+ doesn't contain a '/' just ignore context.
+
+2004-07-11 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * include/s390-signal.c (SIGNAL_HANDLER): Use SIGINFO-style prototype.
+ (struct old_s390_kernel_sigaction): Likewise for k_sa_handler.
+ (MAKE_THROW_FRAME): Do not modify PSW address.
+ (INIT_SEGV): Install SIGINFO-style signal handler.
+ (INIT_FPE): Likewise.
+
+2004-07-10 Bryce McKinlay <mckinlay@redhat.com>
+
+ * testsuite/libjava.jacks/jacks.xfail: Updates to reflect current
+ status. 21 xfail's removed, 1 added.
+
+2004-07-10 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gcj/javaprims.h: Regenerate CNI namespace definitions.
+
+2004-07-10 Ito Kazumitsu <kaz@maczuka.gcd.org>
+
+ * java/text/MessageFormat.java
+ (formatInternal): Append "{n}" if argument n is unavailable.
+ (format(Object, StringBuffer, FieldPosition)): This
+ should be equivalent to format(Object[],
+ StringBuffer, FieldPosition).
+
+2004-07-09 Bryce McKinlay <mckinlay@redhat.com>
+
+ * java.util.Calendar.java (cache): New private static field. Cached
+ mappings of locales->calendar classes.
+ (ctorArgTypes): New private static field. Singleton argument for
+ calendar class constructor lookup.
+ (getInstance): Cache Locale->Calendar class mappings using HashMap.
+ Optimize by bypassing reflection instantiation for the
+ GregorianCalendar case.
+
+2004-07-09 Bryce McKinlay <mckinlay@redhat.com>
+
+ * java/util/Calendar.java: Use getSystemClassLoader as argument for
+ ResourceBundle.getBundle() calls.
+ * java/util/GregorianCalendar.java: Likewise.
+ * java/util/Currency.java: Likewise.
+ * java/text/BreakIterator.java: Likewise.
+ * java/text/Collator.java: Likewise.
+ * java/text/DateFormat.java: Likewise.
+ * java/text/DateFormatSymbols.java: Likewise.
+ * java/text/DecimalFormatSymbols.java: Likewise.
+ * java/text/NumberFormat.java: Likewise.
+ * java/awt/Window.java: Likewise.
+
+2004-07-09 Bryce McKinlay <mckinlay@redhat.com>
+
+ * java/util/ResourceBundle.java (bundleCache): Renamed from
+ resourceBundleCache. Update comments.
+ (getObject): Don't catch MissingResourceException.
+ (getBundle(String)): Remove 'final'. Use system classloader if
+ getCallingClassLoader returned null.
+ (getBundle(String, Locale)): Likewise.
+ (BundleKey): New private class. HashMap key for bundle cache lookup.
+ (lookupKey): New. Singleton instance of BundleKey.
+ (nullEntry): New. Cache entry to represent failed lookups.
+ (getBundle(String, Locale, ClassLoader)): Re-written to use new
+ caching strategy, no-allocation lookup, and new tryBundle methods.
+ (tryBundle(String, ClassLoader)): New. Load a locale-qualified bundle
+ name using given classloader.
+ (tryBundle(String, Locale, ClassLoader, boolean): New. Qualify
+ baseName for given Locale and attempt to load bundle.
+
+2004-07-09 Bryce McKinlay <mckinlay@redhat.com>
+
+ * javax/swing/plaf/basic/BasicMenuUI.java (mousePressed): Remove
+ illegal protected method calls.
+
+2004-07-09 Bryce McKinlay <mckinlay@redhat.com>
+
+ Fix or remove some bogus test cases.
+ * testsuite/libjava.compile/pr10459_2.java: Removed.
+ * testsuite/libjava.compile/pr10459.java: Test using its own method,
+ not Object.clone().
+ * testsuite/libjava.compile/inner_data.java: Test against its own
+ protected field.
+
+2004-07-09 Michael Koch <konqueror@gmx.de>
+
+ * scripts/unicode-muncher.pl: Updated to version 2.1
+ from GNU classpath. Added some clarifications on where to find the
+ needed files from www.unicode.org.
+ * gnu/gcj/convert/UnicodeCharacterDatabase-3.0.0.html,
+ gnu/gcj/convert/UnicodeData-3.0.0.txt:
+ Removed, these can directly be downloaded from www.unicode.org if
+ needed.
+ * gnu/java/lang/CharData.java: Regenerated.
+ * include/java-chartables.h: Regenerated.
+ * Makefile.am (ordinary_java_source_files):
+ Removed gnu/java/lang/CharData.java.
+ * Makefile.in: Regenerated.
+
+2004-07-09 Michael Koch <konqueror@gmx.de>
+
+ * java/security/AccessControlContext.java,
+ java/security/SecureClassLoader.java:
+ Fixed javadocs.
+
+2004-07-09 Michael Koch <konqueror@gmx.de>
+
+ * java/io/ObjectInputStream.java (readFields): Use long datatype
+ when shifting byte values more then 24 bits left.
+
+2004-07-09 Michael Koch <konqueror@gmx.de>
+
+ * java/util/zip/DeflaterOutputStream.java,
+ java/util/zip/GZIPInputStream.java,
+ java/util/zip/GZIPOutputStream.java,
+ java/util/zip/InflaterInputStream.java:
+ Reformatted. Added javadocs. Reordered all stuff.
+ Renamed variables to be more clear.
+
+2004-07-09 Michael Koch <konqueror@gmx.de>
+
+ * javax/imageio/IIOException.java,
+ javax/imageio/event/IIOReadProgressListener.java,
+ javax/imageio/event/IIOReadUpdateListener.java,
+ javax/imageio/event/IIOReadWarningListener.java,
+ javax/imageio/event/IIOWriteProgressListener.java,
+ javax/imageio/event/IIOWriteWarningListener.java:
+ New files.
+ * Makefile.am: Added new files.
+ * Makefile.in: Regenerated.
+
+2004-07-09 Guilhem Lavaux <guilhem@kaffe.org>
+
+ * java/text/RuleBasedCollator.java
+ (mergeRules): Use ArrayList instead of Vector.
+ (subParseString): likewise.
+ (parseString): likewise.
+ (buildCollationVector): likewise.
+ (getCollationKey): likewise.
+
+2004-07-09 Dalibor Topic <robilad@kaffe.org>
+
+ * java/text/DateFormat.java (parse):
+ Improved javadoc. Improved exception message.
+
+2004-07-09 Mark Wielaard <mark@klomp.org>
+
+ * gnu/java/nio/SelectorImpl.java (select): Call static Thread
+ interrupted() method to clear interupt flag of our Thread.
+
+2004-07-09 Dalibor Topic <robilad@kaffe.org>
+
+ * java/nio/Buffer.java,
+ java/nio/ByteBuffer.java,
+ java/nio/ByteBufferHelper.java,
+ java/nio/ByteBufferImpl.java,
+ java/nio/CharBuffer.java,
+ java/nio/CharBufferImpl.java,
+ java/nio/CharViewBufferImpl.java,
+ java/nio/DirectByteBufferImpl.java,
+ java/nio/DoubleBuffer.java,
+ java/nio/DoubleBufferImpl.java,
+ java/nio/DoubleViewBufferImpl.java,
+ java/nio/FloatBuffer.java,
+ java/nio/FloatBufferImpl.java,
+ java/nio/FloatViewBufferImpl.java,
+ java/nio/IntBuffer.java,
+ java/nio/IntBufferImpl.java,
+ java/nio/IntViewBufferImpl.java,
+ java/nio/LongBuffer.java,
+ java/nio/LongBufferImpl.java,
+ java/nio/LongViewBufferImpl.java,
+ java/nio/MappedByteBufferImpl.java,
+ java/nio/ShortBuffer.java,
+ java/nio/ShortBufferImpl.java,
+ java/nio/ShortViewBufferImpl.java:
+ Fixed javadocs all over. Improved input error
+ checking.
+
+ * java/nio/Buffer.java
+ (checkForUnderflow, checkForOverflow, checkIndex,
+ checkIfReadOnly, checkArraySize): New helper methods
+ for error checking.
+
+ * java/nio/ByteBufferHelper.java
+ (checkRemainingForRead, checkRemainingForWrite,
+ checkAvailableForRead, checkAvailableForWrite): Removed
+ no longer needed methods.
+
+2004-07-09 Michael Koch <konqueror@gmx.de>
+
+ * gnu/regexp/CharIndexedInputStream.java:
+ Reordered imports to match classpath.
+
+2004-07-09 Michael Koch <konqueror@gmx.de>
+
+ * gnu/java/awt/EmbeddedWindow.java:
+ Load native library for setWindowPeer method.
+
+2004-07-08 Randolph Chung <tausq@debian.org>
+
+ * configure.in (SIGNAL_HANDLER): Use pa-signal.h for hppa.
+ * configure: Regenerate.
+ * configure.host: Set can_unwind_signal for hppa*-linux.
+ * include/pa-signal.h: New file.
+
+2004-07-07 Per Bothner <per@bothner.com>
+
+ * Makefile.am: Add rules to build libgij from just gij.cc.
+
+ * include/jvm.h (namespace jcj): Declare verbose_class_flag
+ * java/lang/natClass.cc (gcj::verbose_class_flag): New variable.
+ (initializeClass): If verbose_class_flag, print message.
+ * gij.cc (main): Handle -verbose:class flag.
+
+2004-07-07 Andreas Tobler <a.tobler@schweiz.ch>
+
+ * configure.host: Enable hash synchronization on Darwin.
+ * sysdep/powerpc/locks.h (compare_and_swap): Use '\n' instead of
+ ';', since this is a comment on Darwin.
+ (compare_and_swap_release): Likewise.
+
+2004-07-06 Mohan Embar <gnustuff@thisiscool.com>
+
+ * java/net/URLStreamHandler.java (parseURL): Canonicalize
+ file portion of URL in addition to spec for file: protocol.
+
+2004-07-05 Anthony Green <green@redhat.com>
+
+ * java/io/File.java (toURI): Merge from Classpath.
+
+2004-07-05 Bryce McKinlay <mckinlay@redhat.com>
+
+ * gnu/gcj/runtime/VMClassLoader.java (init): Check classpath entry
+ before passing to URL constructor. Rethrow any MalformedURLException
+ as a RuntimeException. Catch MalformedURLException specifically, not
+ all exceptions.
+
+2004-07-05 Bryce McKinlay <mckinlay@redhat.com>
+
+ * java/util/Locale.java (readObject): Intern strings read from object
+ stream.
+
+2004-07-04 Michael Koch <konqueror@gmx.de>
+
+ * gnu/gcj/runtime/FirstThread.java,
+ gnu/gcj/runtime/natFirstThread.cc: Removed.
+ * gnu/java/lang/MainThread.java,
+ gnu/java/lang/natMainThread.cc: New files.
+ * prims.cc (_Jv_RunMain): Use MainThread instead of FirstThread.
+ * Makefile.am: Added new files and removed deleted ones.
+ * Makefile.in: Regenerated.
+
+2004-07-03 Mark Wielaard <mark@klomp.org>
+ Anthony Green <green@redhat.com>
+
+ * java/net/URL.java (getFile): Clarify return value doc.
+ (getPath): Return null if file is empty - not empty String.
+ (set): Convert protocol to lower case before doing anything.
+ Only change the protocol handler if it's different.
+
+2004-07-03 Anthony Green <green@redhat.com>
+
+ * java/net/URL.java (URL): Convert protocol to lower case before
+ doing anything, so we getURLStreamHandler() with the proper value.
+
+2004-07-02 Bryce McKinlay <mckinlay@redhat.com>
+
+ * java/util/Locale.java (hashcode): Made transient.
+ (hashCode): No longer synchronized.
+ (equals): Remove comment.
+ (writeObject): No longer synchronized. Implement using writeObject
+ calls instead of tweaking hashCode field. Update doc.
+ (readObject): Implement using readObject calls.
+
+2004-06-26 Geoffrey Keating <geoffk@apple.com>
+ Andreas Tobler <a.tobler@schweiz.ch>
+
+ * configure.host (powerpc-*-darwin*): New case, define
+ can_unwind_signal.
+ * configure.in (*-*-darwin*): New case, point to darwin-signal.h.
+ * configure: Regenerate.
+ * include/darwin-signal.h: New.
+
+2004-06-30 Jerry Quinn <jlquinn@optonline.net>
+
+ * java/beans/Statement.java (doExecute): Fix formatting.
+
+2004-06-29 Per Bothner <per@bothner.com>
+
+ * jni.cc (_Jv_JNI_NewGlobalRef, JNICALL _Jv_JNI_DeleteGlobalRef,
+ etc etc): Remove needless parenthesis, which causes __stdcall__
+ attribute on MinGW to get ignored.
+
+2004-06-29 Bryce McKinlay <mckinlay@redhat.com>
+
+ * testsuite/libjava.compile/PR16249.java: New test case. PR gcc/16249.
+
+2004-06-28 Bryce McKinlay <mckinlay@redhat.com>
+
+ * testsuite/libjava.jacks/jacks.xfail: Remove 8.1.3-superclass-6.
+
+2004-06-28 Jerry Quinn <jlquinn@optonline.net>
+
+ * java/beans/Expression.java: New file.
+ * java/beans/Statement.java: New file.
+ * Makefile.am: Added new files.
+ * Makefile.in: Re-generate.
+
2004-06-27 Mark Wielaard <mark@klomp.org>
* java/io/FilePermission.java (usingPerms): Removed.
diff --git a/libjava/Makefile.am b/libjava/Makefile.am
index cac32b47777..100d456c51a 100644
--- a/libjava/Makefile.am
+++ b/libjava/Makefile.am
@@ -21,6 +21,9 @@ write_entries_to_file = $(shell rm -f $(2) || :) $(shell touch $(2)) $(foreach o
## ################################################################
+# autoconf2.13's target_alias
+target_noncanonical = @target_noncanonical@
+
##
## What gets installed, and where.
##
@@ -28,7 +31,7 @@ write_entries_to_file = $(shell rm -f $(2) || :) $(shell touch $(2)) $(foreach o
if XLIB_AWT
cond_x_ltlibrary = lib-gnu-awt-xlib.la
## We require libstdc++-v3 to be in the same build tree.
-xlib_includes = -I../libstdc++-v3/include -I../libstdc++-v3/include/$(target_alias) -I$(srcdir)/../libstdc++-v3/libsupc++
+xlib_includes = -I../libstdc++-v3/include -I../libstdc++-v3/include/$(target_noncanonical) -I$(srcdir)/../libstdc++-v3/libsupc++
else
cond_x_ltlibrary =
xlib_includes =
@@ -40,7 +43,7 @@ else
cond_gtk_ltlibrary =
endif
-toolexeclib_LTLIBRARIES = libgcj.la lib-org-xml-sax.la lib-org-w3c-dom.la \
+toolexeclib_LTLIBRARIES = libgcj.la libgij.la lib-org-xml-sax.la lib-org-w3c-dom.la \
$(cond_gtk_ltlibrary) $(cond_x_ltlibrary)
toolexecmainlib_DATA = libgcj.spec
@@ -57,7 +60,7 @@ propdir = $(libdir)
## For now, only on native systems. FIXME.
if NATIVE
-bin_PROGRAMS = jv-convert gij rmic rmiregistry
+bin_PROGRAMS = jv-convert gij grmic grmiregistry
endif
bin_SCRIPTS = addr2name.awk
@@ -68,22 +71,8 @@ bin_SCRIPTS = addr2name.awk
## Compilers and compilation flags.
##
-## CANADIAN is a misnomer. Really we check to see if we must pick up
-## the tools from the path.
-if CANADIAN
-if NULL_TARGET
-## In this case, gcj is found outside the build tree. However, zip is
-## found in the build tree.
-ZIP = $(MULTIBUILDTOP)../$(COMPPATH)/fastjar/jar
-GCJH = gcjh
-else
-ZIP = jar
-GCJH = $(target_alias)-gcjh
-endif
-else # CANADIAN
-GCJH = $(MULTIBUILDTOP)../$(COMPPATH)/gcc/gcjh
-ZIP = $(MULTIBUILDTOP)../$(COMPPATH)/fastjar/jar
-endif # CANADIAN
+GCJH = @GCJH@
+ZIP = @ZIP@
## The compiler with whatever flags we want for both -c and -C
## compiles.
@@ -111,6 +100,8 @@ AM_CXXFLAGS = -fno-rtti -fnon-call-exceptions $(THREADCXXFLAGS) \
-fdollars-in-identifiers \
## Detect bugs in the verifier implementation, and maybe other places.
-Wswitch-enum \
+## Some systems, including Linux, need this to enable > 2GB file support.
+ -D_FILE_OFFSET_BITS=64 \
@LIBGCJ_CXXFLAGS@ @X_CFLAGS@ $(WARNINGS) -D_GNU_SOURCE \
-DPREFIX="\"$(prefix)\"" -DLIBDIR="\"$(libdir)\"" \
-DBOOT_CLASS_PATH="\"$(jardir)/$(jar_DATA)\"" \
@@ -152,6 +143,8 @@ javao_files = $(java_source_files:.java=.lo) \
$(built_java_source_files:.java=.lo)
x_javao_files = $(x_java_source_files:.java=.lo)
+libgij_la_SOURCES = gij.cc
+
libgcj_la_SOURCES = prims.cc jni.cc exception.cc \
resolve.cc defineclass.cc interpret.cc verify.cc \
$(nat_source_files)
@@ -784,29 +777,29 @@ gij_LDADD = -L$(here)/.libs libgcj.la
## linking this program.
gij_DEPENDENCIES = libgcj.la libgcj.spec
-rmic_SOURCES =
+grmic_SOURCES =
## This is a dummy definition.
-EXTRA_rmic_SOURCES = $(rmi_java_source_files)
-rmic_LDFLAGS = --main=gnu.java.rmi.rmic.RMIC \
+EXTRA_grmic_SOURCES = $(rmi_java_source_files)
+grmic_LDFLAGS = --main=gnu.java.rmi.rmic.RMIC \
-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-rmic_LINK = $(GCJLINK)
+grmic_LINK = $(GCJLINK)
## See jv_convert_LDADD.
-rmic_LDADD = -L$(here)/.libs libgcj.la
+grmic_LDADD = -L$(here)/.libs libgcj.la
## Depend on the spec file to make sure it is up to date before
## linking this program.
-rmic_DEPENDENCIES = libgcj.la libgcj.spec
+grmic_DEPENDENCIES = libgcj.la libgcj.spec
-rmiregistry_SOURCES =
+grmiregistry_SOURCES =
## This is a dummy definition.
-EXTRA_rmiregistry_SOURCES = $(rmi_java_source_files)
-rmiregistry_LDFLAGS = --main=gnu.java.rmi.registry.RegistryImpl \
+EXTRA_grmiregistry_SOURCES = $(rmi_java_source_files)
+grmiregistry_LDFLAGS = --main=gnu.java.rmi.registry.RegistryImpl \
-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-rmiregistry_LINK = $(GCJLINK)
+grmiregistry_LINK = $(GCJLINK)
## See jv_convert_LDADD.
-rmiregistry_LDADD = -L$(here)/.libs libgcj.la
+grmiregistry_LDADD = -L$(here)/.libs libgcj.la
## Depend on the spec file to make sure it is up to date before
## linking this program.
-rmiregistry_DEPENDENCIES = libgcj.la libgcj.spec
+grmiregistry_DEPENDENCIES = libgcj.la libgcj.spec
# The Unicode consortium does not permit re-distributing the file JIS0201.TXT.
# You can get it from ftp://ftp.unicode.org/Public/MAPPINGS/EASTASIA/JIS/.
@@ -1109,6 +1102,7 @@ java/awt/geom/GeneralPath.java \
java/awt/geom/QuadCurve2D.java \
java/awt/image/AffineTransformOp.java \
java/awt/image/BufferedImage.java \
+java/awt/image/ByteLookupTable.java \
java/awt/image/ColorModel.java \
java/awt/image/ComponentColorModel.java \
java/awt/image/ComponentSampleModel.java \
@@ -1124,11 +1118,14 @@ java/awt/image/ImageConsumer.java \
java/awt/image/ImageObserver.java \
java/awt/image/ImageProducer.java \
java/awt/image/IndexColorModel.java \
+java/awt/image/Kernel.java \
+java/awt/image/LookupTable.java \
java/awt/image/PackedColorModel.java \
java/awt/image/PixelInterleavedSampleModel.java \
java/awt/image/Raster.java \
java/awt/image/RasterOp.java \
java/awt/image/SampleModel.java \
+java/awt/image/ShortLookupTable.java \
java/awt/image/SinglePixelPackedSampleModel.java \
java/awt/image/WritableRaster.java \
java/awt/image/AreaAveragingScaleFilter.java \
@@ -1282,8 +1279,10 @@ java/beans/BeanInfo.java \
java/beans/Beans.java \
java/beans/Customizer.java \
java/beans/DesignMode.java \
+java/beans/EventHandler.java \
java/beans/EventSetDescriptor.java \
java/beans/ExceptionListener.java \
+java/beans/Expression.java \
java/beans/FeatureDescriptor.java \
java/beans/IndexedPropertyDescriptor.java \
java/beans/IntrospectionException.java \
@@ -1299,6 +1298,7 @@ java/beans/PropertyEditor.java \
java/beans/PropertyEditorManager.java \
java/beans/PropertyEditorSupport.java \
java/beans/PropertyVetoException.java \
+java/beans/Statement.java \
java/beans/SimpleBeanInfo.java \
java/beans/VetoableChangeListener.java \
java/beans/VetoableChangeListenerProxy.java \
@@ -1348,8 +1348,10 @@ javax/swing/plaf/basic/BasicSliderUI.java \
javax/swing/plaf/basic/BasicSplitPaneDivider.java \
javax/swing/plaf/basic/BasicSplitPaneUI.java \
javax/swing/plaf/basic/BasicTabbedPaneUI.java \
+javax/swing/plaf/basic/BasicTextFieldUI.java \
javax/swing/plaf/basic/BasicTextUI.java \
javax/swing/plaf/basic/BasicToggleButtonUI.java \
+javax/swing/plaf/basic/BasicToolBarSeparatorUI.java \
javax/swing/plaf/basic/BasicToolBarUI.java \
javax/swing/plaf/basic/BasicTreeUI.java \
javax/swing/plaf/basic/BasicViewportUI.java \
@@ -1463,6 +1465,8 @@ javax/swing/ListModel.java \
javax/swing/ListSelectionModel.java \
javax/swing/LookAndFeel.java \
javax/swing/Scrollable.java \
+javax/swing/Spring.java \
+javax/swing/SpringLayout.java \
javax/swing/SwingConstants.java \
javax/swing/SwingUtilities.java \
javax/swing/Timer.java \
@@ -1517,29 +1521,34 @@ javax/swing/text/AbstractDocument.java \
javax/swing/text/AttributeSet.java \
javax/swing/text/BadLocationException.java \
javax/swing/text/Caret.java \
-javax/swing/text/CharacterIterator.java \
javax/swing/text/ComponentView.java \
javax/swing/text/DefaultCaret.java \
javax/swing/text/DefaultEditorKit.java \
+javax/swing/text/DefaultHighlighter.java \
javax/swing/text/Document.java \
javax/swing/text/DocumentFilter.java \
javax/swing/text/EditorKit.java \
javax/swing/text/Element.java \
+javax/swing/text/FieldView.java \
javax/swing/text/GapContent.java \
+javax/swing/text/Highlighter.java \
javax/swing/text/JTextComponent.java \
javax/swing/text/Keymap.java \
+javax/swing/text/LayeredHighlighter.java \
+javax/swing/text/MutableAttributeSet.java \
+javax/swing/text/NavigationFilter.java \
javax/swing/text/PlainDocument.java \
-javax/swing/text/PlainEditorKit.java \
+javax/swing/text/PlainView.java \
javax/swing/text/Position.java \
javax/swing/text/Segment.java \
javax/swing/text/Style.java \
-javax/swing/text/View.java \
-javax/swing/text/ViewFactory.java \
-javax/swing/text/MutableAttributeSet.java \
-javax/swing/text/NavigationFilter.java \
javax/swing/text/StyledDocument.java \
javax/swing/text/StyledEditorKit.java \
+javax/swing/text/TabExpander.java \
+javax/swing/text/TabableView.java \
javax/swing/text/TextAction.java \
+javax/swing/text/View.java \
+javax/swing/text/ViewFactory.java \
javax/swing/text/html/HTML.java \
javax/swing/text/html/parser/ParserDelegator.java \
javax/swing/tree/TreeNode.java \
@@ -1746,9 +1755,15 @@ javax/accessibility/AccessibleTable.java \
javax/accessibility/AccessibleTableModelChange.java \
javax/accessibility/AccessibleText.java \
javax/accessibility/AccessibleValue.java \
+javax/imageio/IIOException.java \
javax/imageio/ImageReader.java \
javax/imageio/ImageTranscoder.java \
javax/imageio/ImageWriter.java \
+javax/imageio/event/IIOReadProgressListener.java \
+javax/imageio/event/IIOReadUpdateListener.java \
+javax/imageio/event/IIOReadWarningListener.java \
+javax/imageio/event/IIOWriteProgressListener.java \
+javax/imageio/event/IIOWriteWarningListener.java \
javax/imageio/spi/IIOServiceProvider.java \
javax/imageio/spi/ImageInputStreamSpi.java \
javax/imageio/spi/ImageOutputStreamSpi.java \
@@ -2264,7 +2279,6 @@ gnu/gcj/io/MimeTypes.java \
gnu/gcj/io/SimpleSHSStream.java \
gnu/gcj/runtime/FileDeleter.java \
gnu/gcj/runtime/FinalizerThread.java \
-gnu/gcj/runtime/FirstThread.java \
gnu/gcj/runtime/JNIWeakRef.java \
gnu/gcj/runtime/MethodRef.java \
gnu/gcj/runtime/NameFinder.java \
@@ -2280,7 +2294,7 @@ gnu/java/io/NullOutputStream.java \
gnu/java/io/ObjectIdentityWrapper.java \
gnu/java/lang/ArrayHelper.java \
gnu/java/lang/ClassHelper.java \
-gnu/java/lang/CharData.java \
+gnu/java/lang/MainThread.java \
gnu/java/lang/reflect/TypeSignature.java \
gnu/java/locale/Calendar.java \
gnu/java/locale/Calendar_de.java \
@@ -2422,6 +2436,7 @@ gnu/java/locale/LocaleInformation_zh_HK.java \
gnu/java/locale/LocaleInformation_zh_SG.java \
gnu/java/locale/LocaleInformation_zh_TW.java \
gnu/java/math/MPN.java \
+gnu/java/net/DefaultContentHandlerFactory.java \
gnu/java/net/HeaderFieldHelper.java \
gnu/java/net/PlainDatagramSocketImpl.java \
gnu/java/net/PlainSocketImpl.java \
@@ -2498,6 +2513,8 @@ gnu/java/security/der/DEREncodingException.java \
gnu/java/security/der/DERReader.java \
gnu/java/security/der/DERValue.java \
gnu/java/security/der/DERWriter.java \
+gnu/java/security/action/GetPropertyAction.java \
+gnu/java/security/action/SetAccessibleAction.java \
gnu/java/security/provider/DefaultPolicy.java \
gnu/java/security/provider/DSAKeyFactory.java \
gnu/java/security/provider/DSAKeyPairGenerator.java \
@@ -2937,13 +2954,12 @@ gnu/gcj/convert/natOutput_SJIS.cc \
gnu/gcj/io/natSimpleSHSStream.cc \
gnu/gcj/io/shs.cc \
gnu/gcj/runtime/natFinalizerThread.cc \
-gnu/gcj/runtime/natFirstThread.cc \
gnu/gcj/runtime/natNameFinder.cc \
gnu/gcj/runtime/natSharedLibLoader.cc \
gnu/gcj/runtime/natStackTrace.cc \
gnu/gcj/runtime/natStringBuffer.cc \
gnu/gcj/runtime/natVMClassLoader.cc \
-gnu/java/awt/natEmbeddedWindow.cc \
+gnu/java/lang/natMainThread.cc \
gnu/java/net/natPlainDatagramSocketImpl.cc \
gnu/java/net/natPlainSocketImpl.cc \
gnu/java/net/protocol/core/natCoreInputStream.cc \
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index 4177fd8ca03..090c7c8037a 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -71,6 +71,7 @@ CAIRO_LIBS = @CAIRO_LIBS@
CC = @CC@
CHECKREFSPEC = @CHECKREFSPEC@
COMPPATH = @COMPPATH@
+CPP = @CPP@
CXX = @CXX@
CXXCPP = @CXXCPP@
DIRLTDL = @DIRLTDL@
@@ -89,21 +90,16 @@ GCOBJS = @GCOBJS@
GCSPEC = @GCSPEC@
GCTESTSPEC = @GCTESTSPEC@
GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
-GLIB_MKENUMS = @GLIB_MKENUMS@
-GOBJECT_QUERY = @GOBJECT_QUERY@
+GNATBIND = @GNATBIND@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
-HAVE_LIB = @HAVE_LIB@
IEEESPEC = @IEEESPEC@
INCLTDL = @INCLTDL@
INTERPRETER = @INTERPRETER@
JC1GCSPEC = @JC1GCSPEC@
-LIB = @LIB@
LIBART_CFLAGS = @LIBART_CFLAGS@
-LIBART_CONFIG = @LIBART_CONFIG@
LIBART_LIBS = @LIBART_LIBS@
LIBFFI = @LIBFFI@
LIBGCJDEBUG = @LIBGCJDEBUG@
@@ -114,8 +110,8 @@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@
LIBICONV = @LIBICONV@
LIBLTDL = @LIBLTDL@
LIBTOOL = @LIBTOOL@
+LN = @LN@
LN_S = @LN_S@
-LTLIB = @LTLIB@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
@@ -144,11 +140,16 @@ ZINCS = @ZINCS@
ZLIBS = @ZLIBS@
ZLIBSPEC = @ZLIBSPEC@
ZLIBTESTSPEC = @ZLIBTESTSPEC@
+build_subdir = @build_subdir@
+do_compare = @do_compare@
gcc_version = @gcc_version@
glibjava_CXX = @glibjava_CXX@
here = @here@
+host_subdir = @host_subdir@
libgcj_basedir = @libgcj_basedir@
mkinstalldirs = @mkinstalldirs@
+ncn_cv_ = @ncn_cv_@
+target_subdir = @target_subdir@
tool_include_dir = @tool_include_dir@
toolexecdir = @toolexecdir@
toolexeclibdir = @toolexeclibdir@
@@ -168,14 +169,17 @@ ACLOCAL_AMFLAGS = -I .
# $(1): variable containing entries to iterate over
# $(2): output file
write_entries_to_file = $(shell rm -f $(2) || :) $(shell touch $(2)) $(foreach object,$(1),$(shell echo $(object) >> $(2)))
+
+# autoconf2.13's target_alias
+target_noncanonical = @target_noncanonical@
@XLIB_AWT_TRUE@cond_x_ltlibrary = @XLIB_AWT_TRUE@lib-gnu-awt-xlib.la
@XLIB_AWT_FALSE@cond_x_ltlibrary =
-@XLIB_AWT_TRUE@xlib_includes = @XLIB_AWT_TRUE@-I../libstdc++-v3/include -I../libstdc++-v3/include/$(target_alias) -I$(srcdir)/../libstdc++-v3/libsupc++
+@XLIB_AWT_TRUE@xlib_includes = @XLIB_AWT_TRUE@-I../libstdc++-v3/include -I../libstdc++-v3/include/$(target_noncanonical) -I$(srcdir)/../libstdc++-v3/libsupc++
@XLIB_AWT_FALSE@xlib_includes =
@GTK_AWT_TRUE@cond_gtk_ltlibrary = @GTK_AWT_TRUE@lib-gnu-java-awt-peer-gtk.la
@GTK_AWT_FALSE@cond_gtk_ltlibrary =
-toolexeclib_LTLIBRARIES = libgcj.la lib-org-xml-sax.la lib-org-w3c-dom.la \
+toolexeclib_LTLIBRARIES = libgcj.la libgij.la lib-org-xml-sax.la lib-org-w3c-dom.la \
$(cond_gtk_ltlibrary) $(cond_x_ltlibrary)
toolexecmainlib_DATA = libgcj.spec
@@ -189,15 +193,12 @@ jar_DATA = libgcj-@gcc_version@.jar
secdir = $(libdir)/security
propdir = $(libdir)
-@NATIVE_TRUE@bin_PROGRAMS = @NATIVE_TRUE@jv-convert gij rmic rmiregistry
+@NATIVE_TRUE@bin_PROGRAMS = @NATIVE_TRUE@jv-convert gij grmic grmiregistry
bin_SCRIPTS = addr2name.awk
-@CANADIAN_TRUE@@NULL_TARGET_TRUE@ZIP = @CANADIAN_TRUE@@NULL_TARGET_TRUE@$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/jar
-@CANADIAN_TRUE@@NULL_TARGET_FALSE@ZIP = @CANADIAN_TRUE@@NULL_TARGET_FALSE@jar
-@CANADIAN_FALSE@ZIP = @CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/jar
-@CANADIAN_TRUE@@NULL_TARGET_TRUE@GCJH = @CANADIAN_TRUE@@NULL_TARGET_TRUE@gcjh
-@CANADIAN_TRUE@@NULL_TARGET_FALSE@GCJH = @CANADIAN_TRUE@@NULL_TARGET_FALSE@$(target_alias)-gcjh
-@CANADIAN_FALSE@GCJH = @CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/gcc/gcjh
+
+GCJH = @GCJH@
+ZIP = @ZIP@
GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 -Wno-deprecated
@@ -215,6 +216,7 @@ WARNINGS = -Wextra -Wall
AM_CXXFLAGS = -fno-rtti -fnon-call-exceptions $(THREADCXXFLAGS) \
-fdollars-in-identifiers \
-Wswitch-enum \
+ -D_FILE_OFFSET_BITS=64 \
@LIBGCJ_CXXFLAGS@ @X_CFLAGS@ $(WARNINGS) -D_GNU_SOURCE \
-DPREFIX="\"$(prefix)\"" -DLIBDIR="\"$(libdir)\"" \
-DBOOT_CLASS_PATH="\"$(jardir)/$(jar_DATA)\"" \
@@ -245,6 +247,8 @@ javao_files = $(java_source_files:.java=.lo) \
x_javao_files = $(x_java_source_files:.java=.lo)
+libgij_la_SOURCES = gij.cc
+
libgcj_la_SOURCES = prims.cc jni.cc exception.cc \
resolve.cc defineclass.cc interpret.cc verify.cc \
$(nat_source_files)
@@ -532,23 +536,23 @@ gij_LINK = $(GCJLINK)
gij_LDADD = -L$(here)/.libs libgcj.la
gij_DEPENDENCIES = libgcj.la libgcj.spec
-rmic_SOURCES =
-EXTRA_rmic_SOURCES = $(rmi_java_source_files)
-rmic_LDFLAGS = --main=gnu.java.rmi.rmic.RMIC \
+grmic_SOURCES =
+EXTRA_grmic_SOURCES = $(rmi_java_source_files)
+grmic_LDFLAGS = --main=gnu.java.rmi.rmic.RMIC \
-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-rmic_LINK = $(GCJLINK)
-rmic_LDADD = -L$(here)/.libs libgcj.la
-rmic_DEPENDENCIES = libgcj.la libgcj.spec
+grmic_LINK = $(GCJLINK)
+grmic_LDADD = -L$(here)/.libs libgcj.la
+grmic_DEPENDENCIES = libgcj.la libgcj.spec
-rmiregistry_SOURCES =
-EXTRA_rmiregistry_SOURCES = $(rmi_java_source_files)
-rmiregistry_LDFLAGS = --main=gnu.java.rmi.registry.RegistryImpl \
+grmiregistry_SOURCES =
+EXTRA_grmiregistry_SOURCES = $(rmi_java_source_files)
+grmiregistry_LDFLAGS = --main=gnu.java.rmi.registry.RegistryImpl \
-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-rmiregistry_LINK = $(GCJLINK)
-rmiregistry_LDADD = -L$(here)/.libs libgcj.la
-rmiregistry_DEPENDENCIES = libgcj.la libgcj.spec
+grmiregistry_LINK = $(GCJLINK)
+grmiregistry_LDADD = -L$(here)/.libs libgcj.la
+grmiregistry_DEPENDENCIES = libgcj.la libgcj.spec
gen_from_JIS_SOURCES =
EXTRA_gen_from_JIS_SOURCES = $(srcdir)/$(CONVERT_DIR)/gen-from-JIS.c \
@@ -788,6 +792,7 @@ java/awt/geom/GeneralPath.java \
java/awt/geom/QuadCurve2D.java \
java/awt/image/AffineTransformOp.java \
java/awt/image/BufferedImage.java \
+java/awt/image/ByteLookupTable.java \
java/awt/image/ColorModel.java \
java/awt/image/ComponentColorModel.java \
java/awt/image/ComponentSampleModel.java \
@@ -803,11 +808,14 @@ java/awt/image/ImageConsumer.java \
java/awt/image/ImageObserver.java \
java/awt/image/ImageProducer.java \
java/awt/image/IndexColorModel.java \
+java/awt/image/Kernel.java \
+java/awt/image/LookupTable.java \
java/awt/image/PackedColorModel.java \
java/awt/image/PixelInterleavedSampleModel.java \
java/awt/image/Raster.java \
java/awt/image/RasterOp.java \
java/awt/image/SampleModel.java \
+java/awt/image/ShortLookupTable.java \
java/awt/image/SinglePixelPackedSampleModel.java \
java/awt/image/WritableRaster.java \
java/awt/image/AreaAveragingScaleFilter.java \
@@ -961,8 +969,10 @@ java/beans/BeanInfo.java \
java/beans/Beans.java \
java/beans/Customizer.java \
java/beans/DesignMode.java \
+java/beans/EventHandler.java \
java/beans/EventSetDescriptor.java \
java/beans/ExceptionListener.java \
+java/beans/Expression.java \
java/beans/FeatureDescriptor.java \
java/beans/IndexedPropertyDescriptor.java \
java/beans/IntrospectionException.java \
@@ -978,6 +988,7 @@ java/beans/PropertyEditor.java \
java/beans/PropertyEditorManager.java \
java/beans/PropertyEditorSupport.java \
java/beans/PropertyVetoException.java \
+java/beans/Statement.java \
java/beans/SimpleBeanInfo.java \
java/beans/VetoableChangeListener.java \
java/beans/VetoableChangeListenerProxy.java \
@@ -1027,8 +1038,10 @@ javax/swing/plaf/basic/BasicSliderUI.java \
javax/swing/plaf/basic/BasicSplitPaneDivider.java \
javax/swing/plaf/basic/BasicSplitPaneUI.java \
javax/swing/plaf/basic/BasicTabbedPaneUI.java \
+javax/swing/plaf/basic/BasicTextFieldUI.java \
javax/swing/plaf/basic/BasicTextUI.java \
javax/swing/plaf/basic/BasicToggleButtonUI.java \
+javax/swing/plaf/basic/BasicToolBarSeparatorUI.java \
javax/swing/plaf/basic/BasicToolBarUI.java \
javax/swing/plaf/basic/BasicTreeUI.java \
javax/swing/plaf/basic/BasicViewportUI.java \
@@ -1142,6 +1155,8 @@ javax/swing/ListModel.java \
javax/swing/ListSelectionModel.java \
javax/swing/LookAndFeel.java \
javax/swing/Scrollable.java \
+javax/swing/Spring.java \
+javax/swing/SpringLayout.java \
javax/swing/SwingConstants.java \
javax/swing/SwingUtilities.java \
javax/swing/Timer.java \
@@ -1196,29 +1211,34 @@ javax/swing/text/AbstractDocument.java \
javax/swing/text/AttributeSet.java \
javax/swing/text/BadLocationException.java \
javax/swing/text/Caret.java \
-javax/swing/text/CharacterIterator.java \
javax/swing/text/ComponentView.java \
javax/swing/text/DefaultCaret.java \
javax/swing/text/DefaultEditorKit.java \
+javax/swing/text/DefaultHighlighter.java \
javax/swing/text/Document.java \
javax/swing/text/DocumentFilter.java \
javax/swing/text/EditorKit.java \
javax/swing/text/Element.java \
+javax/swing/text/FieldView.java \
javax/swing/text/GapContent.java \
+javax/swing/text/Highlighter.java \
javax/swing/text/JTextComponent.java \
javax/swing/text/Keymap.java \
+javax/swing/text/LayeredHighlighter.java \
+javax/swing/text/MutableAttributeSet.java \
+javax/swing/text/NavigationFilter.java \
javax/swing/text/PlainDocument.java \
-javax/swing/text/PlainEditorKit.java \
+javax/swing/text/PlainView.java \
javax/swing/text/Position.java \
javax/swing/text/Segment.java \
javax/swing/text/Style.java \
-javax/swing/text/View.java \
-javax/swing/text/ViewFactory.java \
-javax/swing/text/MutableAttributeSet.java \
-javax/swing/text/NavigationFilter.java \
javax/swing/text/StyledDocument.java \
javax/swing/text/StyledEditorKit.java \
+javax/swing/text/TabExpander.java \
+javax/swing/text/TabableView.java \
javax/swing/text/TextAction.java \
+javax/swing/text/View.java \
+javax/swing/text/ViewFactory.java \
javax/swing/text/html/HTML.java \
javax/swing/text/html/parser/ParserDelegator.java \
javax/swing/tree/TreeNode.java \
@@ -1427,9 +1447,15 @@ javax/accessibility/AccessibleTable.java \
javax/accessibility/AccessibleTableModelChange.java \
javax/accessibility/AccessibleText.java \
javax/accessibility/AccessibleValue.java \
+javax/imageio/IIOException.java \
javax/imageio/ImageReader.java \
javax/imageio/ImageTranscoder.java \
javax/imageio/ImageWriter.java \
+javax/imageio/event/IIOReadProgressListener.java \
+javax/imageio/event/IIOReadUpdateListener.java \
+javax/imageio/event/IIOReadWarningListener.java \
+javax/imageio/event/IIOWriteProgressListener.java \
+javax/imageio/event/IIOWriteWarningListener.java \
javax/imageio/spi/IIOServiceProvider.java \
javax/imageio/spi/ImageInputStreamSpi.java \
javax/imageio/spi/ImageOutputStreamSpi.java \
@@ -1936,7 +1962,6 @@ gnu/gcj/io/MimeTypes.java \
gnu/gcj/io/SimpleSHSStream.java \
gnu/gcj/runtime/FileDeleter.java \
gnu/gcj/runtime/FinalizerThread.java \
-gnu/gcj/runtime/FirstThread.java \
gnu/gcj/runtime/JNIWeakRef.java \
gnu/gcj/runtime/MethodRef.java \
gnu/gcj/runtime/NameFinder.java \
@@ -1952,7 +1977,7 @@ gnu/java/io/NullOutputStream.java \
gnu/java/io/ObjectIdentityWrapper.java \
gnu/java/lang/ArrayHelper.java \
gnu/java/lang/ClassHelper.java \
-gnu/java/lang/CharData.java \
+gnu/java/lang/MainThread.java \
gnu/java/lang/reflect/TypeSignature.java \
gnu/java/locale/Calendar.java \
gnu/java/locale/Calendar_de.java \
@@ -2094,6 +2119,7 @@ gnu/java/locale/LocaleInformation_zh_HK.java \
gnu/java/locale/LocaleInformation_zh_SG.java \
gnu/java/locale/LocaleInformation_zh_TW.java \
gnu/java/math/MPN.java \
+gnu/java/net/DefaultContentHandlerFactory.java \
gnu/java/net/HeaderFieldHelper.java \
gnu/java/net/PlainDatagramSocketImpl.java \
gnu/java/net/PlainSocketImpl.java \
@@ -2170,6 +2196,8 @@ gnu/java/security/der/DEREncodingException.java \
gnu/java/security/der/DERReader.java \
gnu/java/security/der/DERValue.java \
gnu/java/security/der/DERWriter.java \
+gnu/java/security/action/GetPropertyAction.java \
+gnu/java/security/action/SetAccessibleAction.java \
gnu/java/security/provider/DefaultPolicy.java \
gnu/java/security/provider/DSAKeyFactory.java \
gnu/java/security/provider/DSAKeyPairGenerator.java \
@@ -2608,13 +2636,12 @@ gnu/gcj/convert/natOutput_SJIS.cc \
gnu/gcj/io/natSimpleSHSStream.cc \
gnu/gcj/io/shs.cc \
gnu/gcj/runtime/natFinalizerThread.cc \
-gnu/gcj/runtime/natFirstThread.cc \
gnu/gcj/runtime/natNameFinder.cc \
gnu/gcj/runtime/natSharedLibLoader.cc \
gnu/gcj/runtime/natStackTrace.cc \
gnu/gcj/runtime/natStringBuffer.cc \
gnu/gcj/runtime/natVMClassLoader.cc \
-gnu/java/awt/natEmbeddedWindow.cc \
+gnu/java/lang/natMainThread.cc \
gnu/java/net/natPlainDatagramSocketImpl.cc \
gnu/java/net/natPlainSocketImpl.cc \
gnu/java/net/protocol/core/natCoreInputStream.cc \
@@ -2792,10 +2819,9 @@ gnu/gcj/convert/natIconv.lo gnu/gcj/convert/natInput_EUCJIS.lo \
gnu/gcj/convert/natInput_SJIS.lo gnu/gcj/convert/natOutput_EUCJIS.lo \
gnu/gcj/convert/natOutput_SJIS.lo gnu/gcj/io/natSimpleSHSStream.lo \
gnu/gcj/io/shs.lo gnu/gcj/runtime/natFinalizerThread.lo \
-gnu/gcj/runtime/natFirstThread.lo gnu/gcj/runtime/natNameFinder.lo \
-gnu/gcj/runtime/natSharedLibLoader.lo gnu/gcj/runtime/natStackTrace.lo \
-gnu/gcj/runtime/natStringBuffer.lo gnu/gcj/runtime/natVMClassLoader.lo \
-gnu/java/awt/natEmbeddedWindow.lo \
+gnu/gcj/runtime/natNameFinder.lo gnu/gcj/runtime/natSharedLibLoader.lo \
+gnu/gcj/runtime/natStackTrace.lo gnu/gcj/runtime/natStringBuffer.lo \
+gnu/gcj/runtime/natVMClassLoader.lo gnu/java/lang/natMainThread.lo \
gnu/java/net/natPlainDatagramSocketImpl.lo \
gnu/java/net/natPlainSocketImpl.lo \
gnu/java/net/protocol/core/natCoreInputStream.lo \
@@ -2817,6 +2843,9 @@ java/net/natInetAddress.lo java/nio/channels/natChannels.lo \
java/nio/natDirectByteBufferImpl.lo java/text/natCollator.lo \
java/util/natResourceBundle.lo java/util/natTimeZone.lo \
java/util/zip/natDeflater.lo java/util/zip/natInflater.lo
+libgij_la_LDFLAGS =
+libgij_la_LIBADD =
+libgij_la_OBJECTS = gij.lo
lib_org_xml_sax_la_DEPENDENCIES = libgcj.la
lib_org_xml_sax_la_OBJECTS = org/xml/sax/ext/DeclHandler.lo \
org/xml/sax/ext/LexicalHandler.lo \
@@ -3032,15 +3061,15 @@ gnu/gcj/xlib/natXConfigureEvent.lo gnu/gcj/xlib/natXException.lo \
gnu/gcj/xlib/natXExposeEvent.lo gnu/gcj/xlib/natXImage.lo \
gnu/gcj/xlib/natXUnmapEvent.lo
@NATIVE_TRUE@bin_PROGRAMS = jv-convert$(EXEEXT) gij$(EXEEXT) \
-@NATIVE_TRUE@rmic$(EXEEXT) rmiregistry$(EXEEXT)
+@NATIVE_TRUE@grmic$(EXEEXT) grmiregistry$(EXEEXT)
@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@noinst_PROGRAMS = \
@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@gen-from-JIS$(EXEEXT)
PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
jv_convert_OBJECTS =
gij_OBJECTS = gij.$(OBJEXT)
-rmic_OBJECTS =
-rmiregistry_OBJECTS =
+grmic_OBJECTS =
+grmiregistry_OBJECTS =
gen_from_JIS_OBJECTS =
gen_from_JIS_LDFLAGS =
SCRIPTS = $(bin_SCRIPTS)
@@ -3063,7 +3092,7 @@ libgcj-test.spec.in libgcj.pc.in libgcj.spec.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-TAR = tar
+TAR = gtar
GZIP_ENV = --best
DIST_SUBDIRS = @DIRLTDL@ testsuite gcj include @DIRLTDL@ gcj include
DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
@@ -3084,8 +3113,8 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/gnu/classpath/ServiceFactory.P \
.deps/gnu/classpath/ServiceProviderLoadingAction.P .deps/gnu/gcj/Core.P \
.deps/gnu/gcj/RawData.P .deps/gnu/gcj/RawDataManaged.P \
-.deps/gnu/gcj/convert/BytesToUnicode.P \
-.deps/gnu/gcj/convert/Convert.P .deps/gnu/gcj/convert/IOConverter.P \
+.deps/gnu/gcj/convert/BytesToUnicode.P .deps/gnu/gcj/convert/Convert.P \
+.deps/gnu/gcj/convert/IOConverter.P \
.deps/gnu/gcj/convert/Input_8859_1.P \
.deps/gnu/gcj/convert/Input_ASCII.P \
.deps/gnu/gcj/convert/Input_EUCJIS.P \
@@ -3113,14 +3142,13 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/gnu/gcj/io/natSimpleSHSStream.P .deps/gnu/gcj/io/shs.P \
.deps/gnu/gcj/natCore.P .deps/gnu/gcj/runtime/FileDeleter.P \
.deps/gnu/gcj/runtime/FinalizerThread.P \
-.deps/gnu/gcj/runtime/FirstThread.P .deps/gnu/gcj/runtime/JNIWeakRef.P \
-.deps/gnu/gcj/runtime/MethodRef.P .deps/gnu/gcj/runtime/NameFinder.P \
+.deps/gnu/gcj/runtime/JNIWeakRef.P .deps/gnu/gcj/runtime/MethodRef.P \
+.deps/gnu/gcj/runtime/NameFinder.P \
.deps/gnu/gcj/runtime/SharedLibHelper.P \
.deps/gnu/gcj/runtime/SharedLibLoader.P \
.deps/gnu/gcj/runtime/StackTrace.P .deps/gnu/gcj/runtime/StringBuffer.P \
.deps/gnu/gcj/runtime/VMClassLoader.P \
.deps/gnu/gcj/runtime/natFinalizerThread.P \
-.deps/gnu/gcj/runtime/natFirstThread.P \
.deps/gnu/gcj/runtime/natNameFinder.P \
.deps/gnu/gcj/runtime/natSharedLibLoader.P \
.deps/gnu/gcj/runtime/natStackTrace.P \
@@ -3157,7 +3185,6 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/gnu/java/awt/EventModifier.P \
.deps/gnu/java/awt/image/ImageDecoder.P \
.deps/gnu/java/awt/image/XBMDecoder.P \
-.deps/gnu/java/awt/natEmbeddedWindow.P \
.deps/gnu/java/awt/peer/ClasspathFontPeer.P \
.deps/gnu/java/awt/peer/EmbeddedWindowPeer.P \
.deps/gnu/java/awt/peer/GLightweightPeer.P \
@@ -3225,8 +3252,8 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/gnu/java/io/ClassLoaderObjectInputStream.P \
.deps/gnu/java/io/NullOutputStream.P \
.deps/gnu/java/io/ObjectIdentityWrapper.P \
-.deps/gnu/java/lang/ArrayHelper.P .deps/gnu/java/lang/CharData.P \
-.deps/gnu/java/lang/ClassHelper.P \
+.deps/gnu/java/lang/ArrayHelper.P .deps/gnu/java/lang/ClassHelper.P \
+.deps/gnu/java/lang/MainThread.P .deps/gnu/java/lang/natMainThread.P \
.deps/gnu/java/lang/reflect/TypeSignature.P \
.deps/gnu/java/locale/Calendar.P .deps/gnu/java/locale/Calendar_de.P \
.deps/gnu/java/locale/Calendar_en.P .deps/gnu/java/locale/Calendar_nl.P \
@@ -3365,7 +3392,9 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/gnu/java/locale/LocaleInformation_zh_HK.P \
.deps/gnu/java/locale/LocaleInformation_zh_SG.P \
.deps/gnu/java/locale/LocaleInformation_zh_TW.P \
-.deps/gnu/java/math/MPN.P .deps/gnu/java/net/HeaderFieldHelper.P \
+.deps/gnu/java/math/MPN.P \
+.deps/gnu/java/net/DefaultContentHandlerFactory.P \
+.deps/gnu/java/net/HeaderFieldHelper.P \
.deps/gnu/java/net/PlainDatagramSocketImpl.P \
.deps/gnu/java/net/PlainSocketImpl.P .deps/gnu/java/net/URLParseError.P \
.deps/gnu/java/net/natPlainDatagramSocketImpl.P \
@@ -3441,6 +3470,8 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/gnu/java/rmi/server/UnicastServer.P \
.deps/gnu/java/rmi/server/UnicastServerRef.P \
.deps/gnu/java/security/Engine.P .deps/gnu/java/security/OID.P \
+.deps/gnu/java/security/action/GetPropertyAction.P \
+.deps/gnu/java/security/action/SetAccessibleAction.P \
.deps/gnu/java/security/der/BitString.P \
.deps/gnu/java/security/der/DER.P \
.deps/gnu/java/security/der/DEREncodingException.P \
@@ -3480,8 +3511,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/gnu/java/util/prefs/MemoryBasedFactory.P \
.deps/gnu/java/util/prefs/MemoryBasedPreferences.P \
.deps/gnu/java/util/prefs/NodeReader.P \
-.deps/gnu/java/util/prefs/NodeWriter.P \
-.deps/gnu/regexp/CharIndexed.P \
+.deps/gnu/java/util/prefs/NodeWriter.P .deps/gnu/regexp/CharIndexed.P \
.deps/gnu/regexp/CharIndexedCharArray.P \
.deps/gnu/regexp/CharIndexedInputStream.P \
.deps/gnu/regexp/CharIndexedString.P \
@@ -3659,6 +3689,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/awt/image/BufferStrategy.P \
.deps/java/awt/image/BufferedImage.P \
.deps/java/awt/image/BufferedImageOp.P \
+.deps/java/awt/image/ByteLookupTable.P \
.deps/java/awt/image/ColorModel.P \
.deps/java/awt/image/ComponentColorModel.P \
.deps/java/awt/image/ComponentSampleModel.P \
@@ -3675,7 +3706,8 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/awt/image/ImageObserver.P \
.deps/java/awt/image/ImageProducer.P \
.deps/java/awt/image/ImagingOpException.P \
-.deps/java/awt/image/IndexColorModel.P \
+.deps/java/awt/image/IndexColorModel.P .deps/java/awt/image/Kernel.P \
+.deps/java/awt/image/LookupTable.P \
.deps/java/awt/image/MemoryImageSource.P \
.deps/java/awt/image/PackedColorModel.P \
.deps/java/awt/image/PixelGrabber.P \
@@ -3685,6 +3717,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/awt/image/RasterOp.P .deps/java/awt/image/RenderedImage.P \
.deps/java/awt/image/ReplicateScaleFilter.P \
.deps/java/awt/image/SampleModel.P \
+.deps/java/awt/image/ShortLookupTable.P \
.deps/java/awt/image/SinglePixelPackedSampleModel.P \
.deps/java/awt/image/TileObserver.P \
.deps/java/awt/image/VolatileImage.P \
@@ -3722,8 +3755,9 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/awt/print/PrinterJob.P .deps/java/beans/AppletInitializer.P \
.deps/java/beans/BeanDescriptor.P .deps/java/beans/BeanInfo.P \
.deps/java/beans/Beans.P .deps/java/beans/Customizer.P \
-.deps/java/beans/DesignMode.P .deps/java/beans/EventSetDescriptor.P \
-.deps/java/beans/ExceptionListener.P \
+.deps/java/beans/DesignMode.P .deps/java/beans/EventHandler.P \
+.deps/java/beans/EventSetDescriptor.P \
+.deps/java/beans/ExceptionListener.P .deps/java/beans/Expression.P \
.deps/java/beans/FeatureDescriptor.P \
.deps/java/beans/IndexedPropertyDescriptor.P \
.deps/java/beans/IntrospectionException.P \
@@ -3737,7 +3771,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/beans/PropertyEditorManager.P \
.deps/java/beans/PropertyEditorSupport.P \
.deps/java/beans/PropertyVetoException.P \
-.deps/java/beans/SimpleBeanInfo.P \
+.deps/java/beans/SimpleBeanInfo.P .deps/java/beans/Statement.P \
.deps/java/beans/VetoableChangeListener.P \
.deps/java/beans/VetoableChangeListenerProxy.P \
.deps/java/beans/VetoableChangeSupport.P .deps/java/beans/Visibility.P \
@@ -4301,8 +4335,13 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/javax/accessibility/AccessibleTableModelChange.P \
.deps/javax/accessibility/AccessibleText.P \
.deps/javax/accessibility/AccessibleValue.P \
-.deps/javax/imageio/ImageReader.P .deps/javax/imageio/ImageTranscoder.P \
-.deps/javax/imageio/ImageWriter.P \
+.deps/javax/imageio/IIOException.P .deps/javax/imageio/ImageReader.P \
+.deps/javax/imageio/ImageTranscoder.P .deps/javax/imageio/ImageWriter.P \
+.deps/javax/imageio/event/IIOReadProgressListener.P \
+.deps/javax/imageio/event/IIOReadUpdateListener.P \
+.deps/javax/imageio/event/IIOReadWarningListener.P \
+.deps/javax/imageio/event/IIOWriteProgressListener.P \
+.deps/javax/imageio/event/IIOWriteWarningListener.P \
.deps/javax/imageio/spi/IIOServiceProvider.P \
.deps/javax/imageio/spi/ImageInputStreamSpi.P \
.deps/javax/imageio/spi/ImageOutputStreamSpi.P \
@@ -4571,6 +4610,7 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/javax/swing/ScrollPaneLayout.P .deps/javax/swing/Scrollable.P \
.deps/javax/swing/SingleSelectionModel.P \
.deps/javax/swing/SizeRequirements.P .deps/javax/swing/SizeSequence.P \
+.deps/javax/swing/Spring.P .deps/javax/swing/SpringLayout.P \
.deps/javax/swing/SwingConstants.P .deps/javax/swing/SwingUtilities.P \
.deps/javax/swing/Timer.P .deps/javax/swing/ToolTipManager.P \
.deps/javax/swing/UIDefaults.P .deps/javax/swing/UIManager.P \
@@ -4701,8 +4741,10 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/javax/swing/plaf/basic/BasicSplitPaneDivider.P \
.deps/javax/swing/plaf/basic/BasicSplitPaneUI.P \
.deps/javax/swing/plaf/basic/BasicTabbedPaneUI.P \
+.deps/javax/swing/plaf/basic/BasicTextFieldUI.P \
.deps/javax/swing/plaf/basic/BasicTextUI.P \
.deps/javax/swing/plaf/basic/BasicToggleButtonUI.P \
+.deps/javax/swing/plaf/basic/BasicToolBarSeparatorUI.P \
.deps/javax/swing/plaf/basic/BasicToolBarUI.P \
.deps/javax/swing/plaf/basic/BasicTreeUI.P \
.deps/javax/swing/plaf/basic/BasicViewportUI.P \
@@ -4720,23 +4762,26 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/javax/swing/text/AbstractDocument.P \
.deps/javax/swing/text/AttributeSet.P \
.deps/javax/swing/text/BadLocationException.P \
-.deps/javax/swing/text/Caret.P \
-.deps/javax/swing/text/CharacterIterator.P \
-.deps/javax/swing/text/ComponentView.P \
+.deps/javax/swing/text/Caret.P .deps/javax/swing/text/ComponentView.P \
.deps/javax/swing/text/DefaultCaret.P \
.deps/javax/swing/text/DefaultEditorKit.P \
+.deps/javax/swing/text/DefaultHighlighter.P \
.deps/javax/swing/text/Document.P \
.deps/javax/swing/text/DocumentFilter.P \
.deps/javax/swing/text/EditorKit.P .deps/javax/swing/text/Element.P \
-.deps/javax/swing/text/GapContent.P \
+.deps/javax/swing/text/FieldView.P .deps/javax/swing/text/GapContent.P \
+.deps/javax/swing/text/Highlighter.P \
.deps/javax/swing/text/JTextComponent.P .deps/javax/swing/text/Keymap.P \
+.deps/javax/swing/text/LayeredHighlighter.P \
.deps/javax/swing/text/MutableAttributeSet.P \
.deps/javax/swing/text/NavigationFilter.P \
.deps/javax/swing/text/PlainDocument.P \
-.deps/javax/swing/text/PlainEditorKit.P \
-.deps/javax/swing/text/Position.P .deps/javax/swing/text/Segment.P \
-.deps/javax/swing/text/Style.P .deps/javax/swing/text/StyledDocument.P \
+.deps/javax/swing/text/PlainView.P .deps/javax/swing/text/Position.P \
+.deps/javax/swing/text/Segment.P .deps/javax/swing/text/Style.P \
+.deps/javax/swing/text/StyledDocument.P \
.deps/javax/swing/text/StyledEditorKit.P \
+.deps/javax/swing/text/TabExpander.P \
+.deps/javax/swing/text/TabableView.P \
.deps/javax/swing/text/TextAction.P .deps/javax/swing/text/View.P \
.deps/javax/swing/text/ViewFactory.P .deps/javax/swing/text/html/HTML.P \
.deps/javax/swing/text/html/parser/ParserDelegator.P \
@@ -4861,8 +4906,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) $(lib_org_xml_sax_la_SOURCES) $(lib_org_w3c_dom_la_SOURCES) $(lib_gnu_java_awt_peer_gtk_la_SOURCES) $(lib_gnu_awt_xlib_la_SOURCES) $(EXTRA_lib_gnu_awt_xlib_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) $(lib_gnu_java_awt_peer_gtk_la_OBJECTS) $(lib_gnu_awt_xlib_la_OBJECTS) $(jv_convert_OBJECTS) $(gij_OBJECTS) $(rmic_OBJECTS) $(rmiregistry_OBJECTS) $(gen_from_JIS_OBJECTS)
+SOURCES = $(libgcj_la_SOURCES) $(EXTRA_libgcj_la_SOURCES) $(libgij_la_SOURCES) $(lib_org_xml_sax_la_SOURCES) $(lib_org_w3c_dom_la_SOURCES) $(lib_gnu_java_awt_peer_gtk_la_SOURCES) $(lib_gnu_awt_xlib_la_SOURCES) $(EXTRA_lib_gnu_awt_xlib_la_SOURCES) $(jv_convert_SOURCES) $(EXTRA_jv_convert_SOURCES) $(gij_SOURCES) $(grmic_SOURCES) $(EXTRA_grmic_SOURCES) $(grmiregistry_SOURCES) $(EXTRA_grmiregistry_SOURCES) $(gen_from_JIS_SOURCES) $(EXTRA_gen_from_JIS_SOURCES)
+OBJECTS = $(libgcj_la_OBJECTS) $(libgij_la_OBJECTS) $(lib_org_xml_sax_la_OBJECTS) $(lib_org_w3c_dom_la_OBJECTS) $(lib_gnu_java_awt_peer_gtk_la_OBJECTS) $(lib_gnu_awt_xlib_la_OBJECTS) $(jv_convert_OBJECTS) $(gij_OBJECTS) $(grmic_OBJECTS) $(grmiregistry_OBJECTS) $(gen_from_JIS_OBJECTS)
all: all-redirect
.SUFFIXES:
@@ -4952,6 +4997,9 @@ distclean-libtool:
maintainer-clean-libtool:
+libgij.la: $(libgij_la_OBJECTS) $(libgij_la_DEPENDENCIES)
+ $(CXXLINK) -rpath $(toolexeclibdir) $(libgij_la_LDFLAGS) $(libgij_la_OBJECTS) $(libgij_la_LIBADD) $(LIBS)
+
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)
@@ -5003,13 +5051,13 @@ gij$(EXEEXT): $(gij_OBJECTS) $(gij_DEPENDENCIES)
@rm -f gij$(EXEEXT)
$(gij_LINK) $(gij_LDFLAGS) $(gij_OBJECTS) $(gij_LDADD) $(LIBS)
-rmic$(EXEEXT): $(rmic_OBJECTS) $(rmic_DEPENDENCIES)
- @rm -f rmic$(EXEEXT)
- $(rmic_LINK) $(rmic_LDFLAGS) $(rmic_OBJECTS) $(rmic_LDADD) $(LIBS)
+grmic$(EXEEXT): $(grmic_OBJECTS) $(grmic_DEPENDENCIES)
+ @rm -f grmic$(EXEEXT)
+ $(grmic_LINK) $(grmic_LDFLAGS) $(grmic_OBJECTS) $(grmic_LDADD) $(LIBS)
-rmiregistry$(EXEEXT): $(rmiregistry_OBJECTS) $(rmiregistry_DEPENDENCIES)
- @rm -f rmiregistry$(EXEEXT)
- $(rmiregistry_LINK) $(rmiregistry_LDFLAGS) $(rmiregistry_OBJECTS) $(rmiregistry_LDADD) $(LIBS)
+grmiregistry$(EXEEXT): $(grmiregistry_OBJECTS) $(grmiregistry_DEPENDENCIES)
+ @rm -f grmiregistry$(EXEEXT)
+ $(grmiregistry_LINK) $(grmiregistry_LDFLAGS) $(grmiregistry_OBJECTS) $(grmiregistry_LDADD) $(LIBS)
gen-from-JIS$(EXEEXT): $(gen_from_JIS_OBJECTS) $(gen_from_JIS_DEPENDENCIES)
@rm -f gen-from-JIS$(EXEEXT)
diff --git a/libjava/NEWS b/libjava/NEWS
index 0541bb4dc54..8c9b3b745d1 100644
--- a/libjava/NEWS
+++ b/libjava/NEWS
@@ -1,4 +1,92 @@
-New in libgcj X.XX:
+*** Changes in GCC 3.4:
+
+* Compiling a .jar file will now cause non-.class entries to be automatically
+ compiled as resources.
+
+* libgcj has been ported to Darwin.
+
+* Jeff Sturm has adapted Jan Hubicka's call graph optimization code to gcj.
+
+* libgcj has a new gcjlib URL type; this lets URLClassLoader load code from
+ shared libraries.
+
+* libgcj has been much more completely merged with GNU Classpath.
+
+* Class loading is now much more correct; in particular the caller's class
+ loader is now used when that is required.
+
+* Eclipse 2.x will run out of the box using gij.
+
+* Parts of java.nio have been implemented. Direct and indirect buffers work,
+ as do fundamental file and socket operations.
+
+* java.awt has been improved, though it is still not ready for general use.
+
+* The HTTP protocol handler now uses HTTP/1.1 and can handle the POST method.
+
+* The MinGW port has matured. Enhancements include socket timeout support,
+ thread interruption, improved Runtime.exec() handling and support for
+ accented characters in filenames.
+
+*** Changes in GCC 3.3:
+
+* The java.sql and javax.sql packages now implement the JDBC 3.0 (JDK 1.4)
+ API.
+
+* The JDK 1.4 assert facility has been implemented.
+
+* The bytecode interpreter is now direct threaded and thus faster.
+
+
+*** Changes in GCC 3.1:
+
+* libgcj now includes RMI, java.lang.ref.*, javax.naming, and
+ javax.transaction.
+
+* Property files and other system resources can be compiled into executables
+ which use libgcj using the new gcj --resource feature.
+
+* libgcj has been ported to more platforms. In particular there is now a
+ mostly-functional mingw32 (Windows) target port.
+
+* JNI and CNI invocation interfaces were implemented, so gcj-compiled Java
+ code can now be called from a C/C++ application.
+
+* gcj can now use builtin functions for certain known methods, for instance
+ Math.cos.
+
+* gcj can now automatically remove redundant array-store checks in some common
+ cases.
+
+* The --no-store-checks optimization option was added. This can be used to
+ omit runtime store checks for code which is known not to throw
+ ArrayStoreException
+
+* The following third party interface standards were added to libgcj:
+ org.w3c.dom and org.xml.sax.
+
+* java.security has been merged with GNU Classpath. The new package is now
+ JDK 1.2 compliant, and much more complete.
+
+* A bytecode verifier was added to the libgcj interpreter.
+
+* java.lang.Character was rewritten to comply with the Unicode 3.0 standard,
+ and improve performance.
+
+* Partial support for many more locales was added to libgcj.
+
+* Socket timeouts have been implemented.
+
+* libgcj has been merged into a single shared library. There are no longer
+ separate shared libraries for the garbage collector and zlib.
+
+* Several performance improvements were made to gcj and libgcj:
+ o Hash synchronization (thin locks)
+ o A special allocation path for finalizer-free objects
+ o Thread-local allocation
+ o Parallel GC, and other GC tweaks
+
+*** Changes in GCC 3.0:
* libgcj now includes a bytecode interpreter. If a compiled version of a class
is not found in the application binary or linked shared libraries, the
diff --git a/libjava/README b/libjava/README
index 62668bd606e..f9c3af6b1df 100644
--- a/libjava/README
+++ b/libjava/README
@@ -12,44 +12,9 @@ can be found on the gcj web pages at this URL:
http://gcc.gnu.org/java/
-
-REQUIREMENTS
-============
-
-libgcj must be built with a compatible version of the gcc compiler. libgcj
-releases are usually numbered according to their corresponding gcc release.
-For example, if this is "libgcj 2.95.3", you need to build it using "gcc
-2.95.3".
-
-
-QUICK INSTALLATION
-==================
-
- > mkdir build
- > cd build
- > ../libgcj/configure --enable-threads=<THREADS_TYPE> --prefix=<DIR>
- > make
- > make install
-
-where:
-
-<THREADS_TYPE> specifies the threads library to be used by libgcj. Currently
-the possible values are "posix" and "none". This value must be the same as
-the value used when configuring gcc itself.
-
-<DIR> specifies the installation directory. This should be the same location
-as where gcc is installed.
-
-Consult the gcj web pages for additional "configure" arguments.
-
-NOTE: libgcj can not be built in the same directory as `configure'. You must
-create a separate build directory.
-
-
BUGS
====
Please submit bug reports via this URL:
- http://gcc.gnu.org/cgi-bin/gnatsweb.pl?database=gcc
-
+ http://gcc.gnu.org/bugzilla
diff --git a/libjava/THANKS b/libjava/THANKS
index 5b8c07d8e5c..65d54c28144 100644
--- a/libjava/THANKS
+++ b/libjava/THANKS
@@ -1,58 +1,218 @@
Many people contribute to the GCJ project, and in many different
-capacities. Any omissions to this list are accidental. Feel free to
-contact green@cygnus.com if you have been left out or some of your
-contributions are not listed. Please keep this list in alphabetical
-order.
+capacities. Any omissions to this list are accidental. Please keep
+this list in alphabetical order.
-Godmar Back for his improvements and encouragement.
-Scott Bambrough for help porting the compiler.
-Jon Beniston for his Win32 port.
-Geoff Berry for his object serialization work and various patches.
-Eric Blake for helping to make gcj and libgcj conform to the specifications.
-Hans-J. Boehm for his garbage collector, IA-64 libffi port, and other work.
-Per Bothner for dreaming up, designing and implementing much of gcj.
-Joerg Brunsmann for compiler hacking and help with the FAQ.
-Steve Chamberlain for config fixes and the picoJava port.
-Glenn Chambers for help with the FAQ.
-John-Marc Chandonia for various library patches.
-Eric Christopher for his porting help and clean-ups.
-The GNU Classpath project for all of their merged runtime code.
-Mo DeJong for gcj and libgcj bug fixes.
-The GCC project contributors for all of their great compiler work.
-Ivan Fontes Garcia for the Portugese translation of the FAQ.
-John Gilmore for a donation to the FSF earmarked improving GNU Java.
-Anthony Green for various contributions.
-Stu Grossman for gdb hacking, allowing us to debug our code.
-Andrew Haley for his amazing compiler and library efforts.
-Jakub Jelinek for improving the build system.
-Warren Levy for his tremendous library work.
-Oskar Liljeblad for hacking on AWT and his many bug reports and patches.
-All of the Mauve project contributors, for test code.
-Bryce McKinlay for numerous gcj and libgcj fixes and improvements.
-Adam Megacz for his work on the Win32 port.
-Jason Molenda for establishing the project infrastructure
- on sources.redhat.com.
-Mike Moreton for his various patches.
-Alexandre Oliva for all of this porting and testing efforts.
-Rainer Orth for configuration clean-ups and porting help.
-Alexandre Petit-Bianco for implementing much of the compiler,
- and continued maintainership.
-Rolf W. Rasmussen for hacking on AWT.
-Bradley Schatz for his work on the FAQ.
-Jason Schroeder for jcf-dump patches.
-John Stracke for his HTTP protocol fixes.
-Jeff Sturm for porting help, bug fixes, and encouragement.
-Kresten Krab Thorup for his fantastic bytecode interpreter.
-Andreas Tobler for his work porting libgcj to Darwin.
-Tom Tromey for his many contributions and libgcj maintainership.
-Matt Welsh for help with Linux Threads.
-Urban Widmark for help fixing java.io.
-Mark Wielaard for new library code and his work integrating with Classpath.
-Gilles Zunino for help porting to Irix.
+Robert Abeles
+Mark G. Adams
+C. Scott Ananian
+Mark Anderson
+Bonzo Armstrong
+Steven Augart
+Godmar Back
+Stuart Ballard
+Scott Bambrough
+David Belanger
+Jon Beniston
+Gary Benson
+Mark Benvenuto
+Daniel Berlin
+Geoff Berry
+Alberto Biancardi
+Artur Biesiadowski
+David Billinghurst
+Eric Blake
+Hans Boehm
+Paolo Bonzini
+Neil Booth
+Steven Bosscher
+Per Bothner
+Sascha Brawer
+Dave Brolley
+Rodney Brown
+Joerg Brunsmann
+Nathan Bryant
+Adrian Bunk
+Andrew Cagney
+John F. Carr
+Steve Chamberlain
+Glenn Chambers
+John-Marc Chandonia
+Michael Chastain
+Tang Ching-Hui
+Eric Christopher
+Randolph Chung
+James Clark
+Nick Clifton
+Kelley Cook
+Christian Cornelssen
+Stephen Crawley
+David Daney
+Marcus G. Daniels
+Mo DeJong
+Bert Deknuydt
+DJ Delorie
+Akim Demaille
+R. A. Rivas Diaz
+Julian Dolby
+Richard Earnshaw
+David Edelsohn
+Frank Ch. Eigler
+Mohan Embar
+Marc Espie
+Nic Ferrier
+Thomas Fitzsimmons
+Andreas Franck
+Norbert Frese
+Todd T. Fries
+Jeroen Frijters
+Wu Gansha
+Ivan Fontes Garcia
+Kaveh R. Ghazi
+Scott Gilbertson
+John Gilmore
+Jacob Gladish
+Taras Glek
+Anthony Green
+Stu Grossman
+David P Grove
+Laurent Guerby
+Andrew Haley
+Raja R Harinath
+Richard Henderson
+Kevin B Hendricks
+Kazu Hirata
+Kim Ho
+Graydon Hoare
+Jochen Hoenicke
+Jens-Michael Hoffmann
+Manfred Hollstein
+Jan Hubicka
+Bernardo Innocenti
+Christian Iseli
+Andreas Jaeger
+David Jee
+Jakub Jelinek
+Mojo Jojo
+C. Brian Jones
+Tim Josling
+Martin Kahlert
+Ito Kazumitsu
+Geoffrey Keating
+Brendan Kehoe
+Richard Kenner
+Mumit Khan
+Dhek Bhun Kho
+Tony Kimball
+Adam King
+Matthias Klose
+Michael Koch
+Kaz Kojima
+Stepan Koltsov
+Bruce Korb
+Matt Kraai
+Guilhem Lavaux
+Jeffrey A Law
+John Leuner
+Warren Levy
+Oskar Liljeblad
+Robert Lipe
+Ralph Loader
+H.J. Lu
+Brad Lucier
+Martin v. Löwis
+Andrew MacLeod
+Jan van Male
+Jerome Marc
+Casey Marshall
+T.J. Mather
+Ranjit Mathew
+Greg McGary
+Bryce McKinlay
+Adam Megacz
+Marcus Meissner
+Jason Merrill
+Jim Meyering
+David S. Miller
+Corey Minyard
+Mark Mitchell
+Alan Modra
+Jason Molenda
+Peter Moon
+Mike Moreton
+Joseph S. Myers
+Raif Naffah
+Raif S. Naffah
+Fernando Nasser
+Nathanael Nerode
+Pekka Nikander
+Hans-Peter Nilsson
+Jeremy Nimmer
+Diego Novillo
+Jeffrey Oldham
+Alexandre Oliva
+Rainer Orth
+Andrew Overholt
+Theodore Papadopoulo
+Oscar Pearce
+Alexandre Petit-Bianco
+Andrew Pinski
+Ovidiu Predescu
+Steve Pribyl
+Ingo Proetel
+Vladimir Puskas
+Jerry Quinn
+Rolf W. Rasmussen
+Volker Reichelt
+Petter Reinholdtsen
+Gabriel Dos Reis
+Aaron M. Renn
+J"orn Rennecke
+Loren J. Rittle
+Mark J. Roberts
+Olga Rodimina
+Craig Rodrigues
+Jesse Rosenstock
+Torsten Rueger
+Douglas B. Rupp
+Roger Sayle
+Bradley Schatz
+Bernd Schmidt
+Jason Schroeder
+Andreas Schwab
+Chris Sears
+Nathan Sidwell
+Franz Sirl
+Danny Smith
+Michael Smith
+Todd Stock
+Graham Stott
+John Stracke
+Mike Stump
+Jeff Sturm
+Sam TH
+Philipp Thomas
+Jason Thorpe
+Bo Thorsen
+Kresten Krab Thorup
+Michael Tiemann
+Andreas Tobler
+Gerhard Tonn
+Dalibor Topic
+Gregg Townsend
+Tom Tromey
+Arnaud Vandyck
+H. Väisänen
+Krister Walfridsson
+Ulrich Weigand
+Zack Weinberg
+Matt Welsh
+Urban Widmark
+Mark Wielaard
+Gilles Zunino
-We'd also like to thank the folks who have contributed time and energy
-in testing GCJ:
+We'd also like to thank these folks who contributed time and energy
+in testing early versions of GCJ:
Michael Abd-El-Malek
Thomas Arend
@@ -103,4 +263,11 @@ Frederik Warg
Gregory Warnes
David E. Young
+Special thanks to:
+
+The GCC project contributors for all of their great compiler work.
+The GNU Classpath project for all of their merged class libraries.
+All of the Mauve project contributors, for test code.
+All the contributors to the Jacks compiler test suite.
+
Thank you all!
diff --git a/libjava/acinclude.m4 b/libjava/acinclude.m4
index 6e9ade4dc55..c996a1eddb4 100644
--- a/libjava/acinclude.m4
+++ b/libjava/acinclude.m4
@@ -1,139 +1,5 @@
sinclude(../config/accross.m4)
-
-AC_DEFUN(LIBGCJ_CONFIGURE,
-[
-dnl Default to --enable-multilib
-AC_ARG_ENABLE(multilib,
-[ --enable-multilib build many library versions (default)],
-[case "${enableval}" in
- yes) multilib=yes ;;
- no) multilib=no ;;
- *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
- esac], [multilib=yes])dnl
-
-dnl We may get other options which we don't document:
-dnl --with-target-subdir, --with-multisrctop, --with-multisubdir
-
-# When building with srcdir == objdir, links to the source files will
-# be created in directories within the target_subdir. We have to
-# adjust toplevel_srcdir accordingly, so that configure finds
-# install-sh and other auxiliary files that live in the top-level
-# source directory.
-if test "${srcdir}" = "."; then
- if test -z "${with_target_subdir}"; then
- toprel=".."
- else
- if test "${with_target_subdir}" != "."; then
- toprel="${with_multisrctop}../.."
- else
- toprel="${with_multisrctop}.."
- fi
- fi
-else
- toprel=".."
-fi
-
-libgcj_basedir=$srcdir/$toprel/$1/libjava
-AC_SUBST(libgcj_basedir)
-
-AC_CONFIG_AUX_DIR(${srcdir}/$toprel)
-if :; then :; else
- # This overrides the previous occurrence for automake, but not for
- # autoconf, which is exactly what we want.
- AC_CONFIG_AUX_DIR(..)
-fi
-
-# This works around an automake problem.
-mkinstalldirs="`cd $ac_aux_dir && ${PWDCMD-pwd}`/mkinstalldirs"
-AC_SUBST(mkinstalldirs)
-
-AC_CANONICAL_SYSTEM
-
-dnl This shouldn't be needed, as long as top-level dependencies are
-dnl defined correctly and shared-library paths are set up so that
-dnl execution tests succeed. FIXME.
-define([AC_PROG_CC_WORKS],[])
-define([AC_PROG_CXX_WORKS],[])
-
-AC_PROG_CC
-
-# We use the libstdc++-v3 version of LIB_AC_PROG_CXX, but use
-# glibjava_CXX instead of glibcpp_CXX. That's because we're passed a
-# different definition of CXX than other directories, since we don't
-# depend on libstdc++-v3 having already been built.
-AC_DEFUN(LIB_AC_PROG_CXX,
-[AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
-dnl Fool anybody using AC_PROG_CXX.
-AC_PROVIDE([AC_PROG_CXX])
-# Use glibjava_CXX so that we do not cause CXX to be cached with the
-# flags that come in CXX while configuring libjava. They're different
-# from those used for all other target libraries. If CXX is set in
-# the environment, respect that here.
-glibjava_CXX=$CXX
-AC_CHECK_PROGS(glibjava_CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
-AC_SUBST(CXX)
-CXX=$glibjava_CXX
-test -z "$glibjava_CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
-
-AC_PROG_CXX_GNU
-
-if test $ac_cv_prog_gxx = yes; then
- GXX=yes
-dnl Check whether -g works, even if CXXFLAGS is set, in case the package
-dnl plays around with CXXFLAGS (such as to build both debugging and
-dnl normal versions of a library), tasteless as that idea is.
- ac_test_CXXFLAGS="${CXXFLAGS+set}"
- ac_save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS=
- AC_PROG_CXX_G
- if test "$ac_test_CXXFLAGS" = set; then
- CXXFLAGS="$ac_save_CXXFLAGS"
- elif test $ac_cv_prog_cxx_g = yes; then
- CXXFLAGS="-g -O2"
- else
- CXXFLAGS="-O2"
- fi
-else
- GXX=
- test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
-fi
-])
-
-LIB_AC_PROG_CXX
-
-dnl version is pulled out to make it a bit easier to change using sed.
-version=0.0.7
-dnl Still use "libjava" here to placate dejagnu.
-AM_INIT_AUTOMAKE(libjava, $version)
-
-AC_CHECK_TOOL(AS, as)
-AC_CHECK_TOOL(AR, ar)
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-
-AC_PROG_INSTALL
-
-AM_MAINTAINER_MODE
-
-AC_EXEEXT
-
-# configure.host sets the following important variables
-# libgcj_cflags - host specific C compiler flags
-# libgcj_cxxflags - host specific C++ compiler flags
-# libgcj_javaflags - host specific Java compiler flags
-
-libgcj_cflags=
-libgcj_cxxflags=
-libgcj_javaflags=
-
-. [$]{srcdir}/configure.host
-
-LIBGCJ_CFLAGS="[$]{libgcj_cflags}"
-LIBGCJ_CXXFLAGS="[$]{libgcj_cxxflags}"
-LIBGCJ_JAVAFLAGS="[$]{libgcj_javaflags}"
-AC_SUBST(LIBGCJ_CFLAGS)
-AC_SUBST(LIBGCJ_CXXFLAGS)
-AC_SUBST(LIBGCJ_JAVAFLAGS)
-])dnl
+sinclude(../config/acx.m4)
sinclude(../libtool.m4)
dnl The lines below arrange for aclocal not to bring libtool.m4
diff --git a/libjava/aclocal.m4 b/libjava/aclocal.m4
index 7776d219bc5..f4c52e34dd7 100644
--- a/libjava/aclocal.m4
+++ b/libjava/aclocal.m4
@@ -1,6 +1,6 @@
-dnl aclocal.m4 generated automatically by aclocal 1.4-p6
+dnl aclocal.m4 generated automatically by aclocal 1.4
-dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
+dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -11,141 +11,7 @@ dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
dnl PARTICULAR PURPOSE.
sinclude(../config/accross.m4)
-
-AC_DEFUN(LIBGCJ_CONFIGURE,
-[
-dnl Default to --enable-multilib
-AC_ARG_ENABLE(multilib,
-[ --enable-multilib build many library versions (default)],
-[case "${enableval}" in
- yes) multilib=yes ;;
- no) multilib=no ;;
- *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
- esac], [multilib=yes])dnl
-
-dnl We may get other options which we don't document:
-dnl --with-target-subdir, --with-multisrctop, --with-multisubdir
-
-# When building with srcdir == objdir, links to the source files will
-# be created in directories within the target_subdir. We have to
-# adjust toplevel_srcdir accordingly, so that configure finds
-# install-sh and other auxiliary files that live in the top-level
-# source directory.
-if test "${srcdir}" = "."; then
- if test -z "${with_target_subdir}"; then
- toprel=".."
- else
- if test "${with_target_subdir}" != "."; then
- toprel="${with_multisrctop}../.."
- else
- toprel="${with_multisrctop}.."
- fi
- fi
-else
- toprel=".."
-fi
-
-libgcj_basedir=$srcdir/$toprel/$1/libjava
-AC_SUBST(libgcj_basedir)
-
-AC_CONFIG_AUX_DIR(${srcdir}/$toprel)
-if :; then :; else
- # This overrides the previous occurrence for automake, but not for
- # autoconf, which is exactly what we want.
- AC_CONFIG_AUX_DIR(..)
-fi
-
-# This works around an automake problem.
-mkinstalldirs="`cd $ac_aux_dir && ${PWDCMD-pwd}`/mkinstalldirs"
-AC_SUBST(mkinstalldirs)
-
-AC_CANONICAL_SYSTEM
-
-dnl This shouldn't be needed, as long as top-level dependencies are
-dnl defined correctly and shared-library paths are set up so that
-dnl execution tests succeed. FIXME.
-define([AC_PROG_CC_WORKS],[])
-define([AC_PROG_CXX_WORKS],[])
-
-AC_PROG_CC
-
-# We use the libstdc++-v3 version of LIB_AC_PROG_CXX, but use
-# glibjava_CXX instead of glibcpp_CXX. That's because we're passed a
-# different definition of CXX than other directories, since we don't
-# depend on libstdc++-v3 having already been built.
-AC_DEFUN(LIB_AC_PROG_CXX,
-[AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
-dnl Fool anybody using AC_PROG_CXX.
-AC_PROVIDE([AC_PROG_CXX])
-# Use glibjava_CXX so that we do not cause CXX to be cached with the
-# flags that come in CXX while configuring libjava. They're different
-# from those used for all other target libraries. If CXX is set in
-# the environment, respect that here.
-glibjava_CXX=$CXX
-AC_CHECK_PROGS(glibjava_CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
-AC_SUBST(CXX)
-CXX=$glibjava_CXX
-test -z "$glibjava_CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
-
-AC_PROG_CXX_GNU
-
-if test $ac_cv_prog_gxx = yes; then
- GXX=yes
-dnl Check whether -g works, even if CXXFLAGS is set, in case the package
-dnl plays around with CXXFLAGS (such as to build both debugging and
-dnl normal versions of a library), tasteless as that idea is.
- ac_test_CXXFLAGS="${CXXFLAGS+set}"
- ac_save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS=
- AC_PROG_CXX_G
- if test "$ac_test_CXXFLAGS" = set; then
- CXXFLAGS="$ac_save_CXXFLAGS"
- elif test $ac_cv_prog_cxx_g = yes; then
- CXXFLAGS="-g -O2"
- else
- CXXFLAGS="-O2"
- fi
-else
- GXX=
- test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
-fi
-])
-
-LIB_AC_PROG_CXX
-
-dnl version is pulled out to make it a bit easier to change using sed.
-version=0.0.7
-dnl Still use "libjava" here to placate dejagnu.
-AM_INIT_AUTOMAKE(libjava, $version)
-
-AC_CHECK_TOOL(AS, as)
-AC_CHECK_TOOL(AR, ar)
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-
-AC_PROG_INSTALL
-
-AM_MAINTAINER_MODE
-
-AC_EXEEXT
-
-# configure.host sets the following important variables
-# libgcj_cflags - host specific C compiler flags
-# libgcj_cxxflags - host specific C++ compiler flags
-# libgcj_javaflags - host specific Java compiler flags
-
-libgcj_cflags=
-libgcj_cxxflags=
-libgcj_javaflags=
-
-. [$]{srcdir}/configure.host
-
-LIBGCJ_CFLAGS="[$]{libgcj_cflags}"
-LIBGCJ_CXXFLAGS="[$]{libgcj_cxxflags}"
-LIBGCJ_JAVAFLAGS="[$]{libgcj_javaflags}"
-AC_SUBST(LIBGCJ_CFLAGS)
-AC_SUBST(LIBGCJ_CXXFLAGS)
-AC_SUBST(LIBGCJ_JAVAFLAGS)
-])dnl
+sinclude(../config/acx.m4)
sinclude(../libtool.m4)
dnl The lines below arrange for aclocal not to bring libtool.m4
@@ -338,825 +204,6 @@ AC_DEFUN(PKG_CHECK_MODULES, [
-# lib-prefix.m4 serial 3 (gettext-0.12.2)
-dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
-dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
-dnl require excessive bracketing.
-ifdef([AC_HELP_STRING],
-[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
-[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
-
-dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
-dnl to access previously installed libraries. The basic assumption is that
-dnl a user will want packages to use other packages he previously installed
-dnl with the same --prefix option.
-dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
-dnl libraries, but is otherwise very convenient.
-AC_DEFUN([AC_LIB_PREFIX],
-[
- AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
- AC_REQUIRE([AC_PROG_CC])
- AC_REQUIRE([AC_CANONICAL_HOST])
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- dnl By default, look in $includedir and $libdir.
- use_additional=yes
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- AC_LIB_ARG_WITH([lib-prefix],
-[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
- --without-lib-prefix don't search for libraries in includedir and libdir],
-[
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/lib"
- fi
- fi
-])
- if test $use_additional = yes; then
- dnl Potentially add $additional_includedir to $CPPFLAGS.
- dnl But don't add it
- dnl 1. if it's the standard /usr/include,
- dnl 2. if it's already present in $CPPFLAGS,
- dnl 3. if it's /usr/local/include and we are using GCC on Linux,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- for x in $CPPFLAGS; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux*) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- dnl Really add $additional_includedir to $CPPFLAGS.
- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- dnl Potentially add $additional_libdir to $LDFLAGS.
- dnl But don't add it
- dnl 1. if it's the standard /usr/lib,
- dnl 2. if it's already present in $LDFLAGS,
- dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_libdir" != "X/usr/lib"; then
- haveit=
- for x in $LDFLAGS; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test "X$additional_libdir" = "X/usr/local/lib"; then
- if test -n "$GCC"; then
- case $host_os in
- linux*) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LDFLAGS.
- LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- fi
-])
-
-dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
-dnl acl_final_exec_prefix, containing the values to which $prefix and
-dnl $exec_prefix will expand at the end of the configure script.
-AC_DEFUN([AC_LIB_PREPARE_PREFIX],
-[
- dnl Unfortunately, prefix and exec_prefix get only finally determined
- dnl at the end of configure.
- if test "X$prefix" = "XNONE"; then
- acl_final_prefix="$ac_default_prefix"
- else
- acl_final_prefix="$prefix"
- fi
- if test "X$exec_prefix" = "XNONE"; then
- acl_final_exec_prefix='${prefix}'
- else
- acl_final_exec_prefix="$exec_prefix"
- fi
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
- prefix="$acl_save_prefix"
-])
-
-dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
-dnl variables prefix and exec_prefix bound to the values they will have
-dnl at the end of the configure script.
-AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
-[
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- $1
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-])
-
-# lib-link.m4 serial 4 (gettext-0.12)
-dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
-dnl the libraries corresponding to explicit and implicit dependencies.
-dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
-dnl augments the CPPFLAGS variable.
-AC_DEFUN([AC_LIB_LINKFLAGS],
-[
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
- define([Name],[translit([$1],[./-], [___])])
- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
- AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
- AC_LIB_LINKFLAGS_BODY([$1], [$2])
- ac_cv_lib[]Name[]_libs="$LIB[]NAME"
- ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
- ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
- ])
- LIB[]NAME="$ac_cv_lib[]Name[]_libs"
- LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
- INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
- AC_SUBST([LIB]NAME)
- AC_SUBST([LTLIB]NAME)
- dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
- dnl results of this search when this library appears as a dependency.
- HAVE_LIB[]NAME=yes
- undefine([Name])
- undefine([NAME])
-])
-
-dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
-dnl searches for libname and the libraries corresponding to explicit and
-dnl implicit dependencies, together with the specified include files and
-dnl the ability to compile and link the specified testcode. If found, it
-dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
-dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
-dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
-dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
-AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
-[
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
- define([Name],[translit([$1],[./-], [___])])
- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-
- dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
- dnl accordingly.
- AC_LIB_LINKFLAGS_BODY([$1], [$2])
-
- dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
- dnl because if the user has installed lib[]Name and not disabled its use
- dnl via --without-lib[]Name-prefix, he wants to use it.
- ac_save_CPPFLAGS="$CPPFLAGS"
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-
- AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
- ac_save_LIBS="$LIBS"
- LIBS="$LIBS $LIB[]NAME"
- AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
- LIBS="$ac_save_LIBS"
- ])
- if test "$ac_cv_lib[]Name" = yes; then
- HAVE_LIB[]NAME=yes
- AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
- AC_MSG_CHECKING([how to link with lib[]$1])
- AC_MSG_RESULT([$LIB[]NAME])
- else
- HAVE_LIB[]NAME=no
- dnl If $LIB[]NAME didn't lead to a usable library, we don't need
- dnl $INC[]NAME either.
- CPPFLAGS="$ac_save_CPPFLAGS"
- LIB[]NAME=
- LTLIB[]NAME=
- fi
- AC_SUBST([HAVE_LIB]NAME)
- AC_SUBST([LIB]NAME)
- AC_SUBST([LTLIB]NAME)
- undefine([Name])
- undefine([NAME])
-])
-
-dnl Determine the platform dependent parameters needed to use rpath:
-dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
-dnl hardcode_direct, hardcode_minus_L.
-AC_DEFUN([AC_LIB_RPATH],
-[
- AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
- AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
- AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
- AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
- AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
- . ./conftest.sh
- rm -f ./conftest.sh
- acl_cv_rpath=done
- ])
- wl="$acl_cv_wl"
- libext="$acl_cv_libext"
- shlibext="$acl_cv_shlibext"
- hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
- hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
- hardcode_direct="$acl_cv_hardcode_direct"
- hardcode_minus_L="$acl_cv_hardcode_minus_L"
- dnl Determine whether the user wants rpath handling at all.
- AC_ARG_ENABLE(rpath,
- [ --disable-rpath do not hardcode runtime library paths],
- :, enable_rpath=yes)
-])
-
-dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
-dnl the libraries corresponding to explicit and implicit dependencies.
-dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
-AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
-[
- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
- dnl By default, look in $includedir and $libdir.
- use_additional=yes
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- AC_LIB_ARG_WITH([lib$1-prefix],
-[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
- --without-lib$1-prefix don't search for lib$1 in includedir and libdir],
-[
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/lib"
- fi
- fi
-])
- dnl Search the library and its dependencies in $additional_libdir and
- dnl $LDFLAGS. Using breadth-first-seach.
- LIB[]NAME=
- LTLIB[]NAME=
- INC[]NAME=
- rpathdirs=
- ltrpathdirs=
- names_already_handled=
- names_next_round='$1 $2'
- while test -n "$names_next_round"; do
- names_this_round="$names_next_round"
- names_next_round=
- for name in $names_this_round; do
- already_handled=
- for n in $names_already_handled; do
- if test "$n" = "$name"; then
- already_handled=yes
- break
- fi
- done
- if test -z "$already_handled"; then
- names_already_handled="$names_already_handled $name"
- dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
- dnl or AC_LIB_HAVE_LINKFLAGS call.
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
- eval value=\"\$HAVE_LIB$uppername\"
- if test -n "$value"; then
- if test "$value" = yes; then
- eval value=\"\$LIB$uppername\"
- test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
- eval value=\"\$LTLIB$uppername\"
- test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
- else
- dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
- dnl that this library doesn't exist. So just drop it.
- :
- fi
- else
- dnl Search the library lib$name in $additional_libdir and $LDFLAGS
- dnl and the already constructed $LIBNAME/$LTLIBNAME.
- found_dir=
- found_la=
- found_so=
- found_a=
- if test $use_additional = yes; then
- if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
- found_dir="$additional_libdir"
- found_so="$additional_libdir/lib$name.$shlibext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- else
- if test -f "$additional_libdir/lib$name.$libext"; then
- found_dir="$additional_libdir"
- found_a="$additional_libdir/lib$name.$libext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- for x in $LDFLAGS $LTLIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- case "$x" in
- -L*)
- dir=`echo "X$x" | sed -e 's/^X-L//'`
- if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
- found_dir="$dir"
- found_so="$dir/lib$name.$shlibext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- else
- if test -f "$dir/lib$name.$libext"; then
- found_dir="$dir"
- found_a="$dir/lib$name.$libext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- fi
- fi
- ;;
- esac
- if test "X$found_dir" != "X"; then
- break
- fi
- done
- fi
- if test "X$found_dir" != "X"; then
- dnl Found the library.
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
- if test "X$found_so" != "X"; then
- dnl Linking with a shared library. We attempt to hardcode its
- dnl directory into the executable's runpath, unless it's the
- dnl standard /usr/lib.
- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
- dnl No hardcoding is needed.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- else
- dnl Use an explicit option to hardcode DIR into the resulting
- dnl binary.
- dnl Potentially add DIR to ltrpathdirs.
- dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $found_dir"
- fi
- dnl The hardcoding into $LIBNAME is system dependent.
- if test "$hardcode_direct" = yes; then
- dnl Using DIR/libNAME.so during linking hardcodes DIR into the
- dnl resulting binary.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- else
- if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
- dnl Use an explicit option to hardcode DIR into the resulting
- dnl binary.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- dnl Potentially add DIR to rpathdirs.
- dnl The rpathdirs will be appended to $LIBNAME at the end.
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $found_dir"
- fi
- else
- dnl Rely on "-L$found_dir".
- dnl But don't add it if it's already contained in the LDFLAGS
- dnl or the already constructed $LIBNAME
- haveit=
- for x in $LDFLAGS $LIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
- fi
- if test "$hardcode_minus_L" != no; then
- dnl FIXME: Not sure whether we should use
- dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
- dnl here.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- else
- dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
- dnl here, because this doesn't fit in flags passed to the
- dnl compiler. So give up. No hardcoding. This affects only
- dnl very old systems.
- dnl FIXME: Not sure whether we should use
- dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
- dnl here.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
- fi
- fi
- fi
- fi
- else
- if test "X$found_a" != "X"; then
- dnl Linking with a static library.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
- else
- dnl We shouldn't come here, but anyway it's good to have a
- dnl fallback.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
- fi
- fi
- dnl Assume the include files are nearby.
- additional_includedir=
- case "$found_dir" in
- */lib | */lib/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
- additional_includedir="$basedir/include"
- ;;
- esac
- if test "X$additional_includedir" != "X"; then
- dnl Potentially add $additional_includedir to $INCNAME.
- dnl But don't add it
- dnl 1. if it's the standard /usr/include,
- dnl 2. if it's /usr/local/include and we are using GCC on Linux,
- dnl 3. if it's already present in $CPPFLAGS or the already
- dnl constructed $INCNAME,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux*) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- for x in $CPPFLAGS $INC[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- dnl Really add $additional_includedir to $INCNAME.
- INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- fi
- dnl Look for dependencies.
- if test -n "$found_la"; then
- dnl Read the .la file. It defines the variables
- dnl dlname, library_names, old_library, dependency_libs, current,
- dnl age, revision, installed, dlopen, dlpreopen, libdir.
- save_libdir="$libdir"
- case "$found_la" in
- */* | *\\*) . "$found_la" ;;
- *) . "./$found_la" ;;
- esac
- libdir="$save_libdir"
- dnl We use only dependency_libs.
- for dep in $dependency_libs; do
- case "$dep" in
- -L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
- dnl But don't add it
- dnl 1. if it's the standard /usr/lib,
- dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
- dnl 3. if it's already present in $LDFLAGS or the already
- dnl constructed $LIBNAME,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_libdir" != "X/usr/lib"; then
- haveit=
- if test "X$additional_libdir" = "X/usr/local/lib"; then
- if test -n "$GCC"; then
- case $host_os in
- linux*) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- haveit=
- for x in $LDFLAGS $LIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LIBNAME.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
- fi
- fi
- haveit=
- for x in $LDFLAGS $LTLIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LTLIBNAME.
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- ;;
- -R*)
- dir=`echo "X$dep" | sed -e 's/^X-R//'`
- if test "$enable_rpath" != no; then
- dnl Potentially add DIR to rpathdirs.
- dnl The rpathdirs will be appended to $LIBNAME at the end.
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $dir"
- fi
- dnl Potentially add DIR to ltrpathdirs.
- dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $dir"
- fi
- fi
- ;;
- -l*)
- dnl Handle this in the next round.
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
- ;;
- *.la)
- dnl Handle this in the next round. Throw away the .la's
- dnl directory; it is already contained in a preceding -L
- dnl option.
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
- ;;
- *)
- dnl Most likely an immediate library name.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
- ;;
- esac
- done
- fi
- else
- dnl Didn't find the library; assume it is in the system directories
- dnl known to the linker and runtime loader. (All the system
- dnl directories known to the linker should also be known to the
- dnl runtime loader, otherwise the system is severely misconfigured.)
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
- fi
- fi
- fi
- done
- done
- if test "X$rpathdirs" != "X"; then
- if test -n "$hardcode_libdir_separator"; then
- dnl Weird platform: only the last -rpath option counts, the user must
- dnl pass all path elements in one option. We can arrange that for a
- dnl single library, but not when more than one $LIBNAMEs are used.
- alldirs=
- for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
- done
- dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
- else
- dnl The -rpath options are cumulative.
- for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$found_dir"
- eval flag=\"$hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
- done
- fi
- fi
- if test "X$ltrpathdirs" != "X"; then
- dnl When using libtool, the option that works for both libraries and
- dnl executables is -R. The -R options are cumulative.
- for found_dir in $ltrpathdirs; do
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
- done
- fi
-])
-
-dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
-dnl unless already present in VAR.
-dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
-dnl contains two or three consecutive elements that belong together.
-AC_DEFUN([AC_LIB_APPENDTOVAR],
-[
- for element in [$2]; do
- haveit=
- for x in $[$1]; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X$element"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- [$1]="${[$1]}${[$1]:+ }$element"
- fi
- done
-])
-
-# lib-ld.m4 serial 2 (gettext-0.12)
-dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl Subroutines of libtool.m4,
-dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
-dnl with libtool.m4.
-
-dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
-AC_DEFUN([AC_LIB_PROG_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
- acl_cv_prog_gnu_ld=yes
-else
- acl_cv_prog_gnu_ld=no
-fi])
-with_gnu_ld=$acl_cv_prog_gnu_ld
-])
-
-dnl From libtool-1.4. Sets the variable LD.
-AC_DEFUN([AC_LIB_PROG_LD],
-[AC_ARG_WITH(gnu-ld,
-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-ac_prog=ld
-if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- AC_MSG_CHECKING([for ld used by GCC])
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
- # Accept absolute paths.
- [[\\/]* | [A-Za-z]:[\\/]*)]
- [re_direlt='/[^/][^/]*/\.\./']
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
-elif test "$with_gnu_ld" = yes; then
- AC_MSG_CHECKING([for GNU ld])
-else
- AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(acl_cv_path_LD,
-[if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- acl_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
- test "$with_gnu_ld" != no && break
- else
- test "$with_gnu_ld" != yes && break
- fi
- fi
- done
- IFS="$ac_save_ifs"
-else
- acl_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$acl_cv_path_LD"
-if test -n "$LD"; then
- AC_MSG_RESULT($LD)
-else
- AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_LIB_PROG_LD_GNU
-])
-
# Do all the work for Automake. This macro actually does too much --
# some checks are only needed if your package does certain things.
# But this isn't really a big deal.
@@ -1166,9 +213,8 @@ AC_LIB_PROG_LD_GNU
dnl Usage:
dnl AM_INIT_AUTOMAKE(package,version, [no-define])
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])
+AC_DEFUN(AM_INIT_AUTOMAKE,
+[AC_REQUIRE([AC_PROG_INSTALL])
PACKAGE=[$1]
AC_SUBST(PACKAGE)
VERSION=[$2]
@@ -1184,47 +230,18 @@ AC_REQUIRE([AM_SANITY_CHECK])
AC_REQUIRE([AC_ARG_PROGRAM])
dnl FIXME This is truly gross.
missing_dir=`cd $ac_aux_dir && pwd`
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}, $missing_dir)
+AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir)
+AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
AC_REQUIRE([AC_PROG_MAKE_SET])])
-# Copyright 2002 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION so it can be traced.
-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
- [AM_AUTOMAKE_VERSION([1.4-p6])])
-
#
# Check to make sure that the build environment is sane.
#
-AC_DEFUN([AM_SANITY_CHECK],
+AC_DEFUN(AM_SANITY_CHECK,
[AC_MSG_CHECKING([whether build environment is sane])
# Just in case
sleep 1
@@ -1265,7 +282,7 @@ AC_MSG_RESULT(yes)])
dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
dnl The program must properly implement --version.
-AC_DEFUN([AM_MISSING_PROG],
+AC_DEFUN(AM_MISSING_PROG,
[AC_MSG_CHECKING(for working $2)
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
@@ -1284,7 +301,7 @@ AC_SUBST($1)])
# serial 1
-AC_DEFUN([AM_MAINTAINER_MODE],
+AC_DEFUN(AM_MAINTAINER_MODE,
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
dnl maintainer-mode is disabled by default
AC_ARG_ENABLE(maintainer-mode,
@@ -1301,7 +318,7 @@ AC_DEFUN([AM_MAINTAINER_MODE],
# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
+AC_DEFUN(AM_CONDITIONAL,
[AC_SUBST($1_TRUE)
AC_SUBST($1_FALSE)
if $2; then
@@ -1314,7 +331,7 @@ fi])
# Like AC_CONFIG_HEADER, but automatically create stamp file.
-AC_DEFUN([AM_CONFIG_HEADER],
+AC_DEFUN(AM_CONFIG_HEADER,
[AC_PREREQ([2.12])
AC_CONFIG_HEADER([$1])
dnl When config.status generates a header, we must update the stamp-h file.
@@ -1335,582 +352,3 @@ for am_file in <<$1>>; do
done<<>>dnl>>)
changequote([,]))])
-# Configure paths for GTK+
-# Owen Taylor 1997-2001
-
-dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
-dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES,
-dnl pass to pkg-config
-dnl
-AC_DEFUN(AM_PATH_GTK_2_0,
-[dnl
-dnl Get the cflags and libraries from pkg-config
-dnl
-AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program],
- , enable_gtktest=yes)
-
- pkg_config_args=gtk+-2.0
- for module in . $4
- do
- case "$module" in
- gthread)
- pkg_config_args="$pkg_config_args gthread-2.0"
- ;;
- esac
- done
-
- no_gtk=""
-
- AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-
- if test x$PKG_CONFIG != xno ; then
- if pkg-config --atleast-pkgconfig-version 0.7 ; then
- :
- else
- echo *** pkg-config too old; version 0.7 or better required.
- no_gtk=yes
- PKG_CONFIG=no
- fi
- else
- no_gtk=yes
- fi
-
- min_gtk_version=ifelse([$1], ,2.0.0,$1)
- AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
-
- if test x$PKG_CONFIG != xno ; then
- ## don't try to run the test against uninstalled libtool libs
- if $PKG_CONFIG --uninstalled $pkg_config_args; then
- echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
- enable_gtktest=no
- fi
-
- if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
- :
- else
- no_gtk=yes
- fi
- fi
-
- if test x"$no_gtk" = x ; then
- GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
- GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
- gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
- gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
- gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
- if test "x$enable_gtktest" = "xyes" ; then
- ac_save_CFLAGS="$CFLAGS"
- ac_save_LIBS="$LIBS"
- CFLAGS="$CFLAGS $GTK_CFLAGS"
- LIBS="$GTK_LIBS $LIBS"
-dnl
-dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
-dnl checks the results of pkg-config to some extent)
-dnl
- rm -f conf.gtktest
- AC_TRY_RUN([
-#include <gtk/gtk.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-int
-main ()
-{
- int major, minor, micro;
- char *tmp_version;
-
- system ("touch conf.gtktest");
-
- /* HP/UX 9 (%@#!) writes to sscanf strings */
- tmp_version = g_strdup("$min_gtk_version");
- if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
- printf("%s, bad version string\n", "$min_gtk_version");
- exit(1);
- }
-
- if ((gtk_major_version != $gtk_config_major_version) ||
- (gtk_minor_version != $gtk_config_minor_version) ||
- (gtk_micro_version != $gtk_config_micro_version))
- {
- printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
- $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
- gtk_major_version, gtk_minor_version, gtk_micro_version);
- printf ("*** was found! If pkg-config was correct, then it is best\n");
- printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
- printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
- printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
- printf("*** required on your system.\n");
- printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
- printf("*** to point to the correct configuration files\n");
- }
- else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
- (gtk_minor_version != GTK_MINOR_VERSION) ||
- (gtk_micro_version != GTK_MICRO_VERSION))
- {
- printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
- GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
- printf("*** library (version %d.%d.%d)\n",
- gtk_major_version, gtk_minor_version, gtk_micro_version);
- }
- else
- {
- if ((gtk_major_version > major) ||
- ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
- ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
- {
- return 0;
- }
- else
- {
- printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
- gtk_major_version, gtk_minor_version, gtk_micro_version);
- printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
- major, minor, micro);
- printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
- printf("***\n");
- printf("*** If you have already installed a sufficiently new version, this error\n");
- printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
- printf("*** being found. The easiest way to fix this is to remove the old version\n");
- printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
- printf("*** correct copy of pkg-config. (In this case, you will have to\n");
- printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
- printf("*** so that the correct libraries are found at run-time))\n");
- }
- }
- return 1;
-}
-],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
- fi
- if test "x$no_gtk" = x ; then
- AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
- ifelse([$2], , :, [$2])
- else
- AC_MSG_RESULT(no)
- if test "$PKG_CONFIG" = "no" ; then
- echo "*** A new enough version of pkg-config was not found."
- echo "*** See http://pkgconfig.sourceforge.net"
- else
- if test -f conf.gtktest ; then
- :
- else
- echo "*** Could not run GTK+ test program, checking why..."
- ac_save_CFLAGS="$CFLAGS"
- ac_save_LIBS="$LIBS"
- CFLAGS="$CFLAGS $GTK_CFLAGS"
- LIBS="$LIBS $GTK_LIBS"
- AC_TRY_LINK([
-#include <gtk/gtk.h>
-#include <stdio.h>
-], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
- [ echo "*** The test program compiled, but did not run. This usually means"
- echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
- echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
- echo "*** to the installed location Also, make sure you have run ldconfig if that"
- echo "*** is required on your system"
- echo "***"
- echo "*** If you have an old version installed, it is best to remove it, although"
- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
- [ echo "*** The test program failed to compile or link. See the file config.log for the"
- echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
- fi
- GTK_CFLAGS=""
- GTK_LIBS=""
- ifelse([$3], , :, [$3])
- fi
- AC_SUBST(GTK_CFLAGS)
- AC_SUBST(GTK_LIBS)
- rm -f conf.gtktest
-])
-
-# Configure paths for GLIB
-# Owen Taylor 1997-2001
-
-dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
-dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject or
-dnl gthread is specified in MODULES, pass to pkg-config
-dnl
-AC_DEFUN(AM_PATH_GLIB_2_0,
-[dnl
-dnl Get the cflags and libraries from pkg-config
-dnl
-AC_ARG_ENABLE(glibtest, [ --disable-glibtest do not try to compile and run a test GLIB program],
- , enable_glibtest=yes)
-
- pkg_config_args=glib-2.0
- for module in . $4
- do
- case "$module" in
- gmodule)
- pkg_config_args="$pkg_config_args gmodule-2.0"
- ;;
- gobject)
- pkg_config_args="$pkg_config_args gobject-2.0"
- ;;
- gthread)
- pkg_config_args="$pkg_config_args gthread-2.0"
- ;;
- esac
- done
-
- AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-
- no_glib=""
-
- if test x$PKG_CONFIG != xno ; then
- if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then
- :
- else
- echo *** pkg-config too old; version 0.7 or better required.
- no_glib=yes
- PKG_CONFIG=no
- fi
- else
- no_glib=yes
- fi
-
- min_glib_version=ifelse([$1], ,2.0.0,$1)
- AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
-
- if test x$PKG_CONFIG != xno ; then
- ## don't try to run the test against uninstalled libtool libs
- if $PKG_CONFIG --uninstalled $pkg_config_args; then
- echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
- enable_glibtest=no
- fi
-
- if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then
- :
- else
- no_glib=yes
- fi
- fi
-
- if test x"$no_glib" = x ; then
- GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
- GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
- GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
-
- GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
- GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
- glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
- glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
- glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
- if test "x$enable_glibtest" = "xyes" ; then
- ac_save_CFLAGS="$CFLAGS"
- ac_save_LIBS="$LIBS"
- CFLAGS="$CFLAGS $GLIB_CFLAGS"
- LIBS="$GLIB_LIBS $LIBS"
-dnl
-dnl Now check if the installed GLIB is sufficiently new. (Also sanity
-dnl checks the results of pkg-config to some extent)
-dnl
- rm -f conf.glibtest
- AC_TRY_RUN([
-#include <glib.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-int
-main ()
-{
- int major, minor, micro;
- char *tmp_version;
-
- system ("touch conf.glibtest");
-
- /* HP/UX 9 (%@#!) writes to sscanf strings */
- tmp_version = g_strdup("$min_glib_version");
- if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
- printf("%s, bad version string\n", "$min_glib_version");
- exit(1);
- }
-
- if ((glib_major_version != $glib_config_major_version) ||
- (glib_minor_version != $glib_config_minor_version) ||
- (glib_micro_version != $glib_config_micro_version))
- {
- printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n",
- $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
- glib_major_version, glib_minor_version, glib_micro_version);
- printf ("*** was found! If pkg-config was correct, then it is best\n");
- printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
- printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
- printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
- printf("*** required on your system.\n");
- printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
- printf("*** to point to the correct configuration files\n");
- }
- else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
- (glib_minor_version != GLIB_MINOR_VERSION) ||
- (glib_micro_version != GLIB_MICRO_VERSION))
- {
- printf("*** GLIB header files (version %d.%d.%d) do not match\n",
- GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
- printf("*** library (version %d.%d.%d)\n",
- glib_major_version, glib_minor_version, glib_micro_version);
- }
- else
- {
- if ((glib_major_version > major) ||
- ((glib_major_version == major) && (glib_minor_version > minor)) ||
- ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
- {
- return 0;
- }
- else
- {
- printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n",
- glib_major_version, glib_minor_version, glib_micro_version);
- printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n",
- major, minor, micro);
- printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
- printf("***\n");
- printf("*** If you have already installed a sufficiently new version, this error\n");
- printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
- printf("*** being found. The easiest way to fix this is to remove the old version\n");
- printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
- printf("*** correct copy of pkg-config. (In this case, you will have to\n");
- printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
- printf("*** so that the correct libraries are found at run-time))\n");
- }
- }
- return 1;
-}
-],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
- fi
- if test "x$no_glib" = x ; then
- AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version))
- ifelse([$2], , :, [$2])
- else
- AC_MSG_RESULT(no)
- if test "$PKG_CONFIG" = "no" ; then
- echo "*** A new enough version of pkg-config was not found."
- echo "*** See http://www.freedesktop.org/software/pkgconfig/"
- else
- if test -f conf.glibtest ; then
- :
- else
- echo "*** Could not run GLIB test program, checking why..."
- ac_save_CFLAGS="$CFLAGS"
- ac_save_LIBS="$LIBS"
- CFLAGS="$CFLAGS $GLIB_CFLAGS"
- LIBS="$LIBS $GLIB_LIBS"
- AC_TRY_LINK([
-#include <glib.h>
-#include <stdio.h>
-], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
- [ echo "*** The test program compiled, but did not run. This usually means"
- echo "*** that the run-time linker is not finding GLIB or finding the wrong"
- echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
- echo "*** to the installed location Also, make sure you have run ldconfig if that"
- echo "*** is required on your system"
- echo "***"
- echo "*** If you have an old version installed, it is best to remove it, although"
- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
- [ echo "*** The test program failed to compile or link. See the file config.log for the"
- echo "*** exact error that occured. This usually means GLIB is incorrectly installed."])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
- fi
- GLIB_CFLAGS=""
- GLIB_LIBS=""
- GLIB_GENMARSHAL=""
- GOBJECT_QUERY=""
- GLIB_MKENUMS=""
- ifelse([$3], , :, [$3])
- fi
- AC_SUBST(GLIB_CFLAGS)
- AC_SUBST(GLIB_LIBS)
- AC_SUBST(GLIB_GENMARSHAL)
- AC_SUBST(GOBJECT_QUERY)
- AC_SUBST(GLIB_MKENUMS)
- rm -f conf.glibtest
-])
-
-# Configure paths for LIBART
-# Raph Levien 98-11-18
-# stolen from Manish Singh 98-9-30
-# stolen back from Frank Belew
-# stolen from Manish Singh
-# Shamelessly stolen from Owen Taylor
-
-dnl AM_PATH_LIBART([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
-dnl Test for LIBART, and define LIBART_CFLAGS and LIBART_LIBS
-dnl
-AC_DEFUN(AM_PATH_LIBART,
-[dnl
-dnl Get the cflags and libraries from the libart-config script
-dnl
-AC_ARG_WITH(libart-prefix,[ --with-libart-prefix=PFX Prefix where LIBART is installed (optional)],
- libart_prefix="$withval", libart_prefix="")
-AC_ARG_WITH(libart-exec-prefix,[ --with-libart-exec-prefix=PFX Exec prefix where LIBART is installed (optional)],
- libart_exec_prefix="$withval", libart_exec_prefix="")
-AC_ARG_ENABLE(libarttest, [ --disable-libarttest Do not try to compile and run a test LIBART program],
- , enable_libarttest=yes)
-
- if test x$libart_exec_prefix != x ; then
- libart_args="$libart_args --exec-prefix=$libart_exec_prefix"
- if test x${LIBART_CONFIG+set} != xset ; then
- LIBART_CONFIG=$libart_exec_prefix/bin/libart-config
- fi
- fi
- if test x$libart_prefix != x ; then
- libart_args="$libart_args --prefix=$libart_prefix"
- if test x${LIBART_CONFIG+set} != xset ; then
- LIBART_CONFIG=$libart_prefix/bin/libart-config
- fi
- fi
-
- AC_PATH_PROG(LIBART_CONFIG, libart2-config, no)
- if test "$LIBART_CONFIG" = "no" ; then
- AC_PATH_PROG(LIBART_CONFIG, libart-config, no)
- fi
- min_libart_version=ifelse([$1], ,0.2.5,$1)
- AC_MSG_CHECKING(for LIBART - version >= $min_libart_version)
- no_libart=""
- if test "$LIBART_CONFIG" = "no" ; then
- no_libart=yes
- else
- LIBART_CFLAGS=`$LIBART_CONFIG $libartconf_args --cflags`
- LIBART_LIBS=`$LIBART_CONFIG $libartconf_args --libs`
-
- libart_major_version=`$LIBART_CONFIG $libart_args --version | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
- libart_minor_version=`$LIBART_CONFIG $libart_args --version | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
- libart_micro_version=`$LIBART_CONFIG $libart_config_args --version | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
- if test "x$enable_libarttest" = "xyes" ; then
- ac_save_CFLAGS="$CFLAGS"
- ac_save_LIBS="$LIBS"
- CFLAGS="$CFLAGS $LIBART_CFLAGS"
- LIBS="$LIBS $LIBART_LIBS"
-dnl
-dnl Now check if the installed LIBART is sufficiently new. (Also sanity
-dnl checks the results of libart-config to some extent
-dnl
- rm -f conf.libarttest
- AC_TRY_RUN([
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <libart_lgpl/libart.h>
-
-char*
-my_strdup (char *str)
-{
- char *new_str;
-
- if (str)
- {
- new_str = malloc ((strlen (str) + 1) * sizeof(char));
- strcpy (new_str, str);
- }
- else
- new_str = NULL;
-
- return new_str;
-}
-
-int main ()
-{
- int major, minor, micro;
- char *tmp_version;
-
- system ("touch conf.libarttest");
-
- /* HP/UX 9 (%@#!) writes to sscanf strings */
- tmp_version = my_strdup("$min_libart_version");
- if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
- printf("%s, bad version string\n", "$min_libart_version");
- exit(1);
- }
-
- if (($libart_major_version > major) ||
- (($libart_major_version == major) && ($libart_minor_version > minor)) ||
- (($libart_major_version == major) && ($libart_minor_version == minor) && ($libart_micro_version >= micro)))
- {
- return 0;
- }
- else
- {
- printf("\n*** 'libart-config --version' returned %d.%d.%d, but the minimum version\n", $libart_major_version, $libart_minor_version, $libart_micro_version);
- printf("*** of LIBART required is %d.%d.%d. If libart-config is correct, then it is\n", major, minor, micro);
- printf("*** best to upgrade to the required version.\n");
- printf("*** If libart-config was wrong, set the environment variable LIBART_CONFIG\n");
- printf("*** to point to the correct copy of libart-config, and remove the file\n");
- printf("*** config.cache before re-running configure\n");
- return 1;
- }
-}
-
-],, no_libart=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
- fi
- if test "x$no_libart" = x ; then
- AC_MSG_RESULT(yes)
- ifelse([$2], , :, [$2])
- else
- AC_MSG_RESULT(no)
- if test "$LIBART_CONFIG" = "no" ; then
- echo "*** The libart-config script installed by LIBART could not be found"
- echo "*** If LIBART was installed in PREFIX, make sure PREFIX/bin is in"
- echo "*** your path, or set the LIBART_CONFIG environment variable to the"
- echo "*** full path to libart-config."
- else
- if test -f conf.libarttest ; then
- :
- else
- echo "*** Could not run LIBART test program, checking why..."
- CFLAGS="$CFLAGS $LIBART_CFLAGS"
- LIBS="$LIBS $LIBART_LIBS"
- AC_TRY_LINK([
-#include <stdio.h>
-#include <libart_lgpl/libart.h>
-], [ return 0; ],
- [ echo "*** The test program compiled, but did not run. This usually means"
- echo "*** that the run-time linker is not finding LIBART or finding the wrong"
- echo "*** version of LIBART. If it is not finding LIBART, you'll need to set your"
- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
- echo "*** to the installed location Also, make sure you have run ldconfig if that"
- echo "*** is required on your system"
- echo "***"
- echo "*** If you have an old version installed, it is best to remove it, although"
- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
- [ echo "*** The test program failed to compile or link. See the file config.log for the"
- echo "*** exact error that occured. This usually means LIBART was incorrectly installed"
- echo "*** or that you have moved LIBART since it was installed. In the latter case, you"
- echo "*** may want to edit the libart-config script: $LIBART_CONFIG" ])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
- fi
- LIBART_CFLAGS=""
- LIBART_LIBS=""
- ifelse([$3], , :, [$3])
- fi
- AC_SUBST(LIBART_CFLAGS)
- AC_SUBST(LIBART_LIBS)
- rm -f conf.libarttest
-])
-
diff --git a/libjava/configure b/libjava/configure
index baf065d97a1..79166413f58 100755
--- a/libjava/configure
+++ b/libjava/configure
@@ -588,298 +588,12 @@ fi
-# This works around the fact that libtool configuration may change LD
-# for this particular configuration, but some shells, instead of
-# keeping the changes in LD private, export them just because LD is
-# exported.
-ORIGINAL_LD_FOR_MULTILIBS=$LD
-
-echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:599: checking whether ln -s works" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- rm -f conftestdata
-if ln -s X conftestdata 2>/dev/null
-then
- rm -f conftestdata
- ac_cv_prog_LN_S="ln -s"
-else
- ac_cv_prog_LN_S=ln
-fi
-fi
-LN_S="$ac_cv_prog_LN_S"
-if test "$ac_cv_prog_LN_S" = "ln -s"; then
- echo "$ac_t""yes" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-
# Check whether --with-target-subdir or --without-target-subdir was given.
if test "${with_target_subdir+set}" = set; then
withval="$with_target_subdir"
:
fi
-# Check whether --with-cross-host or --without-cross-host was given.
-if test "${with_cross_host+set}" = set; then
- withval="$with_cross_host"
- :
-fi
-
-
-# Check whether --with-newlib or --without-newlib was given.
-if test "${with_newlib+set}" = set; then
- withval="$with_newlib"
- :
-fi
-
-
-# Check whether --enable-version-specific-runtime-libs or --disable-version-specific-runtime-libs was given.
-if test "${enable_version_specific_runtime_libs+set}" = set; then
- enableval="$enable_version_specific_runtime_libs"
- case "$enableval" in
- yes) version_specific_libs=yes ;;
- no) version_specific_libs=no ;;
- *) { echo "configure: error: Unknown argument to enable/disable version-specific libs" 1>&2; exit 1; };;
- esac
-else
- version_specific_libs=no
-
-fi
-
-
-
-am__api_version="1.4"
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:668: checking for a BSD compatible install" >&5
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
- for ac_dir in $PATH; do
- # Account for people who put trailing slashes in PATH elements.
- case "$ac_dir/" in
- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- if test -f $ac_dir/$ac_prog; then
- if test $ac_prog = install &&
- grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- else
- ac_cv_path_install="$ac_dir/$ac_prog -c"
- break 2
- fi
- fi
- done
- ;;
- esac
- done
- IFS="$ac_save_IFS"
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL="$ac_cv_path_install"
- else
- # As a last resort, use the slow shell script. We don't cache a
- # path for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
- INSTALL="$ac_install_sh"
- fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
-echo "configure:721: checking whether build environment is sane" >&5
-# Just in case
-sleep 1
-echo timestamp > conftestfile
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments. Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
- set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
- if test "$*" = "X"; then
- # -L didn't work.
- set X `ls -t $srcdir/configure conftestfile`
- fi
- if test "$*" != "X $srcdir/configure conftestfile" \
- && test "$*" != "X conftestfile $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- { echo "configure: error: ls -t appears to fail. Make sure there is not a broken
-alias in your environment" 1>&2; exit 1; }
- fi
-
- test "$2" = conftestfile
- )
-then
- # Ok.
- :
-else
- { echo "configure: error: newly created file is older than distributed files!
-Check your system clock" 1>&2; exit 1; }
-fi
-rm -f conftest*
-echo "$ac_t""yes" 1>&6
-if test "$program_transform_name" = s,x,x,; then
- program_transform_name=
-else
- # Double any \ or $. echo might interpret backslashes.
- cat <<\EOF_SED > conftestsed
-s,\\,\\\\,g; s,\$,$$,g
-EOF_SED
- program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
- rm -f conftestsed
-fi
-test "$program_prefix" != NONE &&
- program_transform_name="s,^,${program_prefix},; $program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
- program_transform_name="s,\$\$,${program_suffix},; $program_transform_name"
-
-# sed with no file args requires a program.
-test "$program_transform_name" = "" && program_transform_name="s,x,x,"
-
-echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:778: checking whether ${MAKE-make} sets \${MAKE}" >&5
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftestmake <<\EOF
-all:
- @echo 'ac_maketemp="${MAKE}"'
-EOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
-if test -n "$ac_maketemp"; then
- eval ac_cv_prog_make_${ac_make}_set=yes
-else
- eval ac_cv_prog_make_${ac_make}_set=no
-fi
-rm -f conftestmake
-fi
-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- SET_MAKE=
-else
- echo "$ac_t""no" 1>&6
- SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-if test $host != $build; then
- ac_tool_prefix=${host_alias}-
-else
- ac_tool_prefix=
-fi
-
-echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:811: checking for Cygwin environment" >&5
-if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 816 "configure"
-#include "confdefs.h"
-
-int main() {
-
-#ifndef __CYGWIN__
-#define __CYGWIN__ __CYGWIN32__
-#endif
-return __CYGWIN__;
-; return 0; }
-EOF
-if { (eval echo configure:827: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_cygwin=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_cygwin=no
-fi
-rm -f conftest*
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_cygwin" 1>&6
-CYGWIN=
-test "$ac_cv_cygwin" = yes && CYGWIN=yes
-echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:844: checking for mingw32 environment" >&5
-if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 849 "configure"
-#include "confdefs.h"
-
-int main() {
-return __MINGW32__;
-; return 0; }
-EOF
-if { (eval echo configure:856: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_mingw32=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_mingw32=no
-fi
-rm -f conftest*
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_mingw32" 1>&6
-MINGW32=
-test "$ac_cv_mingw32" = yes && MINGW32=yes
-
-# Check whether --enable-multilib or --disable-multilib was given.
-if test "${enable_multilib+set}" = set; then
- enableval="$enable_multilib"
- case "${enableval}" in
- yes) multilib=yes ;;
- no) multilib=no ;;
- *) { echo "configure: error: bad value ${enableval} for multilib option" 1>&2; exit 1; } ;;
- esac
-else
- multilib=yes
-fi
# When building with srcdir == objdir, links to the source files will
@@ -947,10 +661,6 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
fi
-# This works around an automake problem.
-mkinstalldirs="`cd $ac_aux_dir && ${PWDCMD-pwd}`/mkinstalldirs"
-
-
# Do some error checking and defaulting for the host and target type.
# The inputs are:
@@ -979,7 +689,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:983: checking host system type" >&5
+echo "configure:693: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1000,7 +710,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1004: checking target system type" >&5
+echo "configure:714: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1018,7 +728,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1022: checking build system type" >&5
+echo "configure:732: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1040,6 +750,95 @@ test "$host_alias" != "$target_alias" &&
NONENONEs,x,x, &&
program_prefix=${target_alias}-
+ case ${build_alias} in
+ "") build_noncanonical=${build} ;;
+ *) build_noncanonical=${build_alias} ;;
+esac
+
+ case ${host_alias} in
+ "") host_noncanonical=${build_noncanonical} ;;
+ *) host_noncanonical=${host_alias} ;;
+esac
+
+ case ${target_alias} in
+ "") target_noncanonical=${host_noncanonical} ;;
+ *) target_noncanonical=${target_alias} ;;
+esac
+
+
+
+
+# This works around the fact that libtool configuration may change LD
+# for this particular configuration, but some shells, instead of
+# keeping the changes in LD private, export them just because LD is
+# exported.
+ORIGINAL_LD_FOR_MULTILIBS=$LD
+
+echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
+echo "configure:779: checking whether ln -s works" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ rm -f conftestdata
+if ln -s X conftestdata 2>/dev/null
+then
+ rm -f conftestdata
+ ac_cv_prog_LN_S="ln -s"
+else
+ ac_cv_prog_LN_S=ln
+fi
+fi
+LN_S="$ac_cv_prog_LN_S"
+if test "$ac_cv_prog_LN_S" = "ln -s"; then
+ echo "$ac_t""yes" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+
+# This works around an automake problem.
+mkinstalldirs="`cd $ac_aux_dir && ${PWDCMD-pwd}`/mkinstalldirs"
+
+
+# Check whether --with-cross-host or --without-cross-host was given.
+if test "${with_cross_host+set}" = set; then
+ withval="$with_cross_host"
+ :
+fi
+
+
+# Check whether --with-newlib or --without-newlib was given.
+if test "${with_newlib+set}" = set; then
+ withval="$with_newlib"
+ :
+fi
+
+
+# Check whether --enable-version-specific-runtime-libs or --disable-version-specific-runtime-libs was given.
+if test "${enable_version_specific_runtime_libs+set}" = set; then
+ enableval="$enable_version_specific_runtime_libs"
+ case "$enableval" in
+ yes) version_specific_libs=yes ;;
+ no) version_specific_libs=no ;;
+ *) { echo "configure: error: Unknown argument to enable/disable version-specific libs" 1>&2; exit 1; };;
+ esac
+else
+ version_specific_libs=no
+
+fi
+
+
+# Check whether --enable-multilib or --disable-multilib was given.
+if test "${enable_multilib+set}" = set; then
+ enableval="$enable_multilib"
+ case "${enableval}" in
+ yes) multilib=yes ;;
+ no) multilib=no ;;
+ *) { echo "configure: error: bad value ${enableval} for multilib option" 1>&2; exit 1; } ;;
+ esac
+else
+ multilib=yes
+fi
@@ -1047,7 +846,7 @@ test "$host_alias" != "$target_alias" &&
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1051: checking for $ac_word" >&5
+echo "configure:850: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1077,7 +876,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1081: checking for $ac_word" >&5
+echo "configure:880: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1128,7 +927,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1132: checking for $ac_word" >&5
+echo "configure:931: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1161,7 +960,7 @@ fi
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1165: checking whether we are using GNU C" >&5
+echo "configure:964: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1170,7 +969,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1174: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:973: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1189,7 +988,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1193: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:992: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1238,7 +1037,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1242: checking for $ac_word" >&5
+echo "configure:1041: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_glibjava_CXX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1273,7 +1072,7 @@ CXX=$glibjava_CXX
test -z "$glibjava_CXX" && { echo "configure: error: no acceptable c++ found in \$PATH" 1>&2; exit 1; }
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1277: checking whether we are using GNU C++" >&5
+echo "configure:1076: checking whether we are using GNU C++" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1282,7 +1081,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1286: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1085: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gxx=yes
else
ac_cv_prog_gxx=no
@@ -1297,7 +1096,7 @@ if test $ac_cv_prog_gxx = yes; then
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=
echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1301: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:1100: checking whether ${CXX-g++} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1326,6 +1125,154 @@ fi
version=0.0.7
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
+echo "configure:1141: checking for a BSD compatible install" >&5
+if test -z "$INSTALL"; then
+if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
+ for ac_dir in $PATH; do
+ # Account for people who put trailing slashes in PATH elements.
+ case "$ac_dir/" in
+ /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ if test -f $ac_dir/$ac_prog; then
+ if test $ac_prog = install &&
+ grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ else
+ ac_cv_path_install="$ac_dir/$ac_prog -c"
+ break 2
+ fi
+ fi
+ done
+ ;;
+ esac
+ done
+ IFS="$ac_save_IFS"
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL="$ac_cv_path_install"
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL="$ac_install_sh"
+ fi
+fi
+echo "$ac_t""$INSTALL" 1>&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
+echo "configure:1194: checking whether build environment is sane" >&5
+# Just in case
+sleep 1
+echo timestamp > conftestfile
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftestfile`
+ fi
+ if test "$*" != "X $srcdir/configure conftestfile" \
+ && test "$*" != "X conftestfile $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ { echo "configure: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" 1>&2; exit 1; }
+ fi
+
+ test "$2" = conftestfile
+ )
+then
+ # Ok.
+ :
+else
+ { echo "configure: error: newly created file is older than distributed files!
+Check your system clock" 1>&2; exit 1; }
+fi
+rm -f conftest*
+echo "$ac_t""yes" 1>&6
+if test "$program_transform_name" = s,x,x,; then
+ program_transform_name=
+else
+ # Double any \ or $. echo might interpret backslashes.
+ cat <<\EOF_SED > conftestsed
+s,\\,\\\\,g; s,\$,$$,g
+EOF_SED
+ program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
+ rm -f conftestsed
+fi
+test "$program_prefix" != NONE &&
+ program_transform_name="s,^,${program_prefix},; $program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s,\$\$,${program_suffix},; $program_transform_name"
+
+# sed with no file args requires a program.
+test "$program_transform_name" = "" && program_transform_name="s,x,x,"
+
+echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
+echo "configure:1251: checking whether ${MAKE-make} sets \${MAKE}" >&5
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftestmake <<\EOF
+all:
+ @echo 'ac_maketemp="${MAKE}"'
+EOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+ eval ac_cv_prog_make_${ac_make}_set=yes
+else
+ eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftestmake
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ SET_MAKE=
+else
+ echo "$ac_t""no" 1>&6
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
PACKAGE=libjava
@@ -1345,21 +1292,21 @@ EOF
missing_dir=`cd $ac_aux_dir && pwd`
-echo $ac_n "checking for working aclocal-${am__api_version}""... $ac_c" 1>&6
-echo "configure:1350: checking for working aclocal-${am__api_version}" >&5
+echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
+echo "configure:1297: checking for working aclocal" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
-if (aclocal-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then
- ACLOCAL=aclocal-${am__api_version}
+if (aclocal --version) < /dev/null > /dev/null 2>&1; then
+ ACLOCAL=aclocal
echo "$ac_t""found" 1>&6
else
- ACLOCAL="$missing_dir/missing aclocal-${am__api_version}"
+ ACLOCAL="$missing_dir/missing aclocal"
echo "$ac_t""missing" 1>&6
fi
echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
-echo "configure:1363: checking for working autoconf" >&5
+echo "configure:1310: checking for working autoconf" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@@ -1371,21 +1318,21 @@ else
echo "$ac_t""missing" 1>&6
fi
-echo $ac_n "checking for working automake-${am__api_version}""... $ac_c" 1>&6
-echo "configure:1376: checking for working automake-${am__api_version}" >&5
+echo $ac_n "checking for working automake""... $ac_c" 1>&6
+echo "configure:1323: checking for working automake" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
-if (automake-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then
- AUTOMAKE=automake-${am__api_version}
+if (automake --version) < /dev/null > /dev/null 2>&1; then
+ AUTOMAKE=automake
echo "$ac_t""found" 1>&6
else
- AUTOMAKE="$missing_dir/missing automake-${am__api_version}"
+ AUTOMAKE="$missing_dir/missing automake"
echo "$ac_t""missing" 1>&6
fi
echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
-echo "configure:1389: checking for working autoheader" >&5
+echo "configure:1336: checking for working autoheader" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@@ -1398,7 +1345,7 @@ else
fi
echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
-echo "configure:1402: checking for working makeinfo" >&5
+echo "configure:1349: checking for working makeinfo" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@@ -1412,10 +1359,16 @@ fi
+if test $host != $build; then
+ ac_tool_prefix=${host_alias}-
+else
+ ac_tool_prefix=
+fi
+
# Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
set dummy ${ac_tool_prefix}as; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1419: checking for $ac_word" >&5
+echo "configure:1372: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1447,7 +1400,7 @@ fi
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1451: checking for $ac_word" >&5
+echo "configure:1404: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1479,7 +1432,7 @@ fi
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1483: checking for $ac_word" >&5
+echo "configure:1436: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1511,7 +1464,7 @@ if test -n "$ac_tool_prefix"; then
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1515: checking for $ac_word" >&5
+echo "configure:1468: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1556,7 +1509,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1560: checking for a BSD compatible install" >&5
+echo "configure:1513: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1610,7 +1563,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:1614: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:1567: checking whether to enable maintainer-specific portions of Makefiles" >&5
# Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
if test "${enable_maintainer_mode+set}" = set; then
enableval="$enable_maintainer_mode"
@@ -1633,10 +1586,72 @@ fi
+echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
+echo "configure:1591: checking for Cygwin environment" >&5
+if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1596 "configure"
+#include "confdefs.h"
+
+int main() {
+
+#ifndef __CYGWIN__
+#define __CYGWIN__ __CYGWIN32__
+#endif
+return __CYGWIN__;
+; return 0; }
+EOF
+if { (eval echo configure:1607: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_cygwin=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_cygwin=no
+fi
+rm -f conftest*
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_cygwin" 1>&6
+CYGWIN=
+test "$ac_cv_cygwin" = yes && CYGWIN=yes
+echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
+echo "configure:1624: checking for mingw32 environment" >&5
+if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1629 "configure"
+#include "confdefs.h"
+
+int main() {
+return __MINGW32__;
+; return 0; }
+EOF
+if { (eval echo configure:1636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_mingw32=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_mingw32=no
+fi
+rm -f conftest*
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_mingw32" 1>&6
+MINGW32=
+test "$ac_cv_mingw32" = yes && MINGW32=yes
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:1640: checking for executable suffix" >&5
+echo "configure:1655: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1646,7 +1661,7 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:1650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:1665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
*.c | *.o | *.obj) ;;
@@ -1689,7 +1704,6 @@ LIBGCJ_JAVAFLAGS="${libgcj_javaflags}"
-
# Only use libltdl for non-newlib builds.
if test "x${with_newlib}" = "x" || test "x${with_newlib}" = "xno"; then
case $enable_ltdl_convenience in
@@ -1796,7 +1810,7 @@ ac_prog=ld
if test "$GCC" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
-echo "configure:1800: checking for ld used by GCC" >&5
+echo "configure:1814: checking for ld used by GCC" >&5
case $host in
*-*-mingw*)
# gcc leaves a trailing carriage return which upsets mingw
@@ -1826,10 +1840,10 @@ echo "configure:1800: checking for ld used by GCC" >&5
esac
elif test "$with_gnu_ld" = yes; then
echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:1830: checking for GNU ld" >&5
+echo "configure:1844: checking for GNU ld" >&5
else
echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:1833: checking for non-GNU ld" >&5
+echo "configure:1847: checking for non-GNU ld" >&5
fi
if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1864,7 +1878,7 @@ else
fi
test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
-echo "configure:1868: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:1882: checking if the linker ($LD) is GNU ld" >&5
if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1881,7 +1895,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
-echo "configure:1885: checking for $LD option to reload object files" >&5
+echo "configure:1899: checking for $LD option to reload object files" >&5
if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1893,7 +1907,7 @@ reload_flag=$lt_cv_ld_reload_flag
test -n "$reload_flag" && reload_flag=" $reload_flag"
echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
-echo "configure:1897: checking for BSD-compatible nm" >&5
+echo "configure:1911: checking for BSD-compatible nm" >&5
if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1931,7 +1945,7 @@ NM="$lt_cv_path_NM"
echo "$ac_t""$NM" 1>&6
echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6
-echo "configure:1935: checking how to recognise dependant libraries" >&5
+echo "configure:1949: checking how to recognise dependant libraries" >&5
if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2106,13 +2120,13 @@ file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
echo $ac_n "checking for object suffix""... $ac_c" 1>&6
-echo "configure:2110: checking for object suffix" >&5
+echo "configure:2124: checking for object suffix" >&5
if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
rm -f conftest*
echo 'int i = 1;' > conftest.$ac_ext
-if { (eval echo configure:2116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2130: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
for ac_file in conftest.*; do
case $ac_file in
*.c) ;;
@@ -2136,7 +2150,7 @@ case $deplibs_check_method in
file_magic*)
if test "$file_magic_cmd" = '$MAGIC_CMD'; then
echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6
-echo "configure:2140: checking for ${ac_tool_prefix}file" >&5
+echo "configure:2154: checking for ${ac_tool_prefix}file" >&5
if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2198,7 +2212,7 @@ fi
if test -z "$lt_cv_path_MAGIC_CMD"; then
if test -n "$ac_tool_prefix"; then
echo $ac_n "checking for file""... $ac_c" 1>&6
-echo "configure:2202: checking for file" >&5
+echo "configure:2216: checking for file" >&5
if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2269,7 +2283,7 @@ esac
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2273: checking for $ac_word" >&5
+echo "configure:2287: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2301,7 +2315,7 @@ if test -n "$ac_tool_prefix"; then
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2305: checking for $ac_word" >&5
+echo "configure:2319: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2336,7 +2350,7 @@ fi
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
set dummy ${ac_tool_prefix}strip; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2340: checking for $ac_word" >&5
+echo "configure:2354: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2368,7 +2382,7 @@ if test -n "$ac_tool_prefix"; then
# Extract the first word of "strip", so it can be a program name with args.
set dummy strip; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2372: checking for $ac_word" >&5
+echo "configure:2386: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2435,8 +2449,8 @@ test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
case $host in
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 2439 "configure"' > conftest.$ac_ext
- if { (eval echo configure:2440: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ echo '#line 2453 "configure"' > conftest.$ac_ext
+ if { (eval echo configure:2454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if test "$lt_cv_prog_gnu_ld" = yes; then
case `/usr/bin/file conftest.$ac_objext` in
*32-bit*)
@@ -2469,7 +2483,7 @@ case $host in
ia64-*-hpux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
- if { (eval echo configure:2473: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ if { (eval echo configure:2487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
case "`/usr/bin/file conftest.o`" in
*ELF-32*)
HPUX_IA64_MODE="32"
@@ -2485,7 +2499,7 @@ ia64-*-hpux*)
x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
- if { (eval echo configure:2489: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ if { (eval echo configure:2503: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
case "`/usr/bin/file conftest.o`" in
*32-bit*)
case $host in
@@ -2529,7 +2543,7 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -belf"
echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:2533: checking whether the C compiler needs -belf" >&5
+echo "configure:2547: checking whether the C compiler needs -belf" >&5
if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2542,14 +2556,14 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 2546 "configure"
+#line 2560 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:2553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
lt_cv_cc_needs_belf=yes
else
@@ -2579,7 +2593,7 @@ echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6
esac
echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:2583: checking how to run the C++ preprocessor" >&5
+echo "configure:2597: checking how to run the C++ preprocessor" >&5
if test -z "$CXXCPP"; then
if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2592,12 +2606,12 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
CXXCPP="${CXX-g++} -E"
cat > conftest.$ac_ext <<EOF
-#line 2596 "configure"
+#line 2610 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2601: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2615: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -2881,7 +2895,7 @@ INTERPRETER="$libgcj_interpreter"
echo $ac_n "checking for exception model to use""... $ac_c" 1>&6
-echo "configure:2885: checking for exception model to use" >&5
+echo "configure:2899: checking for exception model to use" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -2896,7 +2910,7 @@ if test "${enable_sjlj_exceptions+set}" = set; then
:
else
cat > conftest.$ac_ext << EOF
-#line 2900 "configure"
+#line 2914 "configure"
struct S { ~S(); };
void bar();
void foo()
@@ -2907,7 +2921,7 @@ void foo()
EOF
old_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=-S
-if { (eval echo configure:2911: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2925: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
enable_sjlj_exceptions=yes
elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
@@ -3021,7 +3035,7 @@ case "$TARGET_ECOS" in
PLATFORMH=win32.h
echo $ac_n "checking whether 'ld' is at least 2.13""... $ac_c" 1>&6
-echo "configure:3025: checking whether 'ld' is at least 2.13" >&5
+echo "configure:3039: checking whether 'ld' is at least 2.13" >&5
LD_PROG=`$CC --print-prog-name=ld`
LD_VERSION=`$LD_PROG --version`
LD_VERSION_MAJOR=`echo "$LD_VERSION" | head -1 | cut -d '.' -f 1 | cut -d ' ' -f 4`
@@ -3067,7 +3081,7 @@ esac
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:3071: checking how to run the C preprocessor" >&5
+echo "configure:3085: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -3082,13 +3096,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 3086 "configure"
+#line 3100 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3092: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3106: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -3099,13 +3113,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 3103 "configure"
+#line 3117 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3109: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3123: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -3116,13 +3130,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 3120 "configure"
+#line 3134 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3126: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3140: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -3147,7 +3161,7 @@ fi
echo "$ac_t""$CPP" 1>&6
cat > conftest.$ac_ext <<EOF
-#line 3151 "configure"
+#line 3165 "configure"
#include "confdefs.h"
#include <stdint.h>
EOF
@@ -3162,7 +3176,7 @@ fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3166 "configure"
+#line 3180 "configure"
#include "confdefs.h"
#include <inttypes.h>
EOF
@@ -3177,7 +3191,7 @@ fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3181 "configure"
+#line 3195 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
@@ -3192,7 +3206,7 @@ fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3196 "configure"
+#line 3210 "configure"
#include "confdefs.h"
#include <sys/config.h>
EOF
@@ -3209,7 +3223,7 @@ rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3213 "configure"
+#line 3227 "configure"
#include "confdefs.h"
#include <time.h>
EOF
@@ -3224,7 +3238,7 @@ fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3228 "configure"
+#line 3242 "configure"
#include "confdefs.h"
#include <time.h>
EOF
@@ -3265,7 +3279,7 @@ test -d gnu/java/nio/channels || mkdir gnu/java/nio/channels
case "${host}" in
*mingw*)
- SYSTEMSPEC="-lgdi32 -lwsock32 -lws2_32"
+ SYSTEMSPEC="-lgdi32 -lws2_32"
if test "${with_win32_nlsapi}" = "unicows"; then
SYSTEMSPEC="-lunicows $SYSTEMSPEC"
fi
@@ -3295,7 +3309,7 @@ ZLIBTESTSPEC=
# Uses ac_ vars as temps to allow command line to override cache and checks.
# --without-x overrides everything else, but does not touch the cache.
echo $ac_n "checking for X""... $ac_c" 1>&6
-echo "configure:3299: checking for X" >&5
+echo "configure:3313: checking for X" >&5
# Check whether --with-x or --without-x was given.
if test "${with_x+set}" = set; then
@@ -3357,12 +3371,12 @@ if test "$ac_x_includes" = NO; then
# First, try using that file with no special directory specified.
cat > conftest.$ac_ext <<EOF
-#line 3361 "configure"
+#line 3375 "configure"
#include "confdefs.h"
#include <$x_direct_test_include>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3366: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3380: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -3431,14 +3445,14 @@ if test "$ac_x_libraries" = NO; then
ac_save_LIBS="$LIBS"
LIBS="-l$x_direct_test_library $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3435 "configure"
+#line 3449 "configure"
#include "confdefs.h"
int main() {
${x_direct_test_function}()
; return 0; }
EOF
-if { (eval echo configure:3442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
LIBS="$ac_save_LIBS"
# We can link X programs with no special library path.
@@ -3544,17 +3558,17 @@ else
case "`(uname -sr) 2>/dev/null`" in
"SunOS 5"*)
echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6
-echo "configure:3548: checking whether -R must be followed by a space" >&5
+echo "configure:3562: checking whether -R must be followed by a space" >&5
ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries"
cat > conftest.$ac_ext <<EOF
-#line 3551 "configure"
+#line 3565 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:3558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_R_nospace=yes
else
@@ -3570,14 +3584,14 @@ rm -f conftest*
else
LIBS="$ac_xsave_LIBS -R $x_libraries"
cat > conftest.$ac_ext <<EOF
-#line 3574 "configure"
+#line 3588 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:3581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_R_space=yes
else
@@ -3609,7 +3623,7 @@ rm -f conftest*
# libraries were built with DECnet support. And karl@cs.umb.edu says
# the Alpha needs dnet_stub (dnet does not exist).
echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:3613: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:3627: checking for dnet_ntoa in -ldnet" >&5
ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3617,7 +3631,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldnet $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3621 "configure"
+#line 3635 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3628,7 +3642,7 @@ int main() {
dnet_ntoa()
; return 0; }
EOF
-if { (eval echo configure:3632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3646: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3650,7 +3664,7 @@ fi
if test $ac_cv_lib_dnet_dnet_ntoa = no; then
echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6
-echo "configure:3654: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:3668: checking for dnet_ntoa in -ldnet_stub" >&5
ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3658,7 +3672,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldnet_stub $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3662 "configure"
+#line 3676 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3669,7 +3683,7 @@ int main() {
dnet_ntoa()
; return 0; }
EOF
-if { (eval echo configure:3673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3698,12 +3712,12 @@ fi
# The nsl library prevents programs from opening the X display
# on Irix 5.2, according to dickey@clark.net.
echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
-echo "configure:3702: checking for gethostbyname" >&5
+echo "configure:3716: checking for gethostbyname" >&5
if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3707 "configure"
+#line 3721 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gethostbyname(); below. */
@@ -3726,7 +3740,7 @@ gethostbyname();
; return 0; }
EOF
-if { (eval echo configure:3730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_gethostbyname=yes"
else
@@ -3747,7 +3761,7 @@ fi
if test $ac_cv_func_gethostbyname = no; then
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3751: checking for gethostbyname in -lnsl" >&5
+echo "configure:3765: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3755,7 +3769,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3759 "configure"
+#line 3773 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3766,7 +3780,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3796,12 +3810,12 @@ fi
# -lsocket must be given before -lnsl if both are needed.
# We assume that if connect needs -lnsl, so does gethostbyname.
echo $ac_n "checking for connect""... $ac_c" 1>&6
-echo "configure:3800: checking for connect" >&5
+echo "configure:3814: checking for connect" >&5
if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3805 "configure"
+#line 3819 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char connect(); below. */
@@ -3824,7 +3838,7 @@ connect();
; return 0; }
EOF
-if { (eval echo configure:3828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_connect=yes"
else
@@ -3845,7 +3859,7 @@ fi
if test $ac_cv_func_connect = no; then
echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
-echo "configure:3849: checking for connect in -lsocket" >&5
+echo "configure:3863: checking for connect in -lsocket" >&5
ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3853,7 +3867,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3857 "configure"
+#line 3871 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3864,7 +3878,7 @@ int main() {
connect()
; return 0; }
EOF
-if { (eval echo configure:3868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3882: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3888,12 +3902,12 @@ fi
# gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX.
echo $ac_n "checking for remove""... $ac_c" 1>&6
-echo "configure:3892: checking for remove" >&5
+echo "configure:3906: checking for remove" >&5
if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3897 "configure"
+#line 3911 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char remove(); below. */
@@ -3916,7 +3930,7 @@ remove();
; return 0; }
EOF
-if { (eval echo configure:3920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3934: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_remove=yes"
else
@@ -3937,7 +3951,7 @@ fi
if test $ac_cv_func_remove = no; then
echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:3941: checking for remove in -lposix" >&5
+echo "configure:3955: checking for remove in -lposix" >&5
ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3945,7 +3959,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lposix $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3949 "configure"
+#line 3963 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3956,7 +3970,7 @@ int main() {
remove()
; return 0; }
EOF
-if { (eval echo configure:3960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3974: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3980,12 +3994,12 @@ fi
# BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:3984: checking for shmat" >&5
+echo "configure:3998: checking for shmat" >&5
if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3989 "configure"
+#line 4003 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char shmat(); below. */
@@ -4008,7 +4022,7 @@ shmat();
; return 0; }
EOF
-if { (eval echo configure:4012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_shmat=yes"
else
@@ -4029,7 +4043,7 @@ fi
if test $ac_cv_func_shmat = no; then
echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:4033: checking for shmat in -lipc" >&5
+echo "configure:4047: checking for shmat in -lipc" >&5
ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4037,7 +4051,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lipc $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4041 "configure"
+#line 4055 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4048,7 +4062,7 @@ int main() {
shmat()
; return 0; }
EOF
-if { (eval echo configure:4052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4081,7 +4095,7 @@ fi
# libraries we check for below, so use a different variable.
# --interran@uluru.Stanford.EDU, kb@cs.umb.edu.
echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6
-echo "configure:4085: checking for IceConnectionNumber in -lICE" >&5
+echo "configure:4099: checking for IceConnectionNumber in -lICE" >&5
ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4089,7 +4103,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lICE $X_EXTRA_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4093 "configure"
+#line 4107 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4100,7 +4114,7 @@ int main() {
IceConnectionNumber()
; return 0; }
EOF
-if { (eval echo configure:4104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4218,7 +4232,7 @@ then
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4222: checking for $ac_word" >&5
+echo "configure:4236: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4262,19 +4276,19 @@ fi
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
echo $ac_n "checking for cairo""... $ac_c" 1>&6
-echo "configure:4266: checking for cairo" >&5
+echo "configure:4280: checking for cairo" >&5
if $PKG_CONFIG --exists "cairo" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking CAIRO_CFLAGS""... $ac_c" 1>&6
-echo "configure:4273: checking CAIRO_CFLAGS" >&5
+echo "configure:4287: checking CAIRO_CFLAGS" >&5
CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo"`
echo "$ac_t""$CAIRO_CFLAGS" 1>&6
echo $ac_n "checking CAIRO_LIBS""... $ac_c" 1>&6
-echo "configure:4278: checking CAIRO_LIBS" >&5
+echo "configure:4292: checking CAIRO_LIBS" >&5
CAIRO_LIBS=`$PKG_CONFIG --libs "cairo"`
echo "$ac_t""$CAIRO_LIBS" 1>&6
else
@@ -4307,7 +4321,7 @@ echo "configure:4278: checking CAIRO_LIBS" >&5
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4311: checking for $ac_word" >&5
+echo "configure:4325: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4351,19 +4365,19 @@ fi
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
echo $ac_n "checking for pangoft2""... $ac_c" 1>&6
-echo "configure:4355: checking for pangoft2" >&5
+echo "configure:4369: checking for pangoft2" >&5
if $PKG_CONFIG --exists "pangoft2" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking PANGOFT2_CFLAGS""... $ac_c" 1>&6
-echo "configure:4362: checking PANGOFT2_CFLAGS" >&5
+echo "configure:4376: checking PANGOFT2_CFLAGS" >&5
PANGOFT2_CFLAGS=`$PKG_CONFIG --cflags "pangoft2"`
echo "$ac_t""$PANGOFT2_CFLAGS" 1>&6
echo $ac_n "checking PANGOFT2_LIBS""... $ac_c" 1>&6
-echo "configure:4367: checking PANGOFT2_LIBS" >&5
+echo "configure:4381: checking PANGOFT2_LIBS" >&5
PANGOFT2_LIBS=`$PKG_CONFIG --libs "pangoft2"`
echo "$ac_t""$PANGOFT2_LIBS" 1>&6
else
@@ -4398,7 +4412,7 @@ fi
libsubdir=.libs
echo $ac_n "checking for garbage collector to use""... $ac_c" 1>&6
-echo "configure:4402: checking for garbage collector to use" >&5
+echo "configure:4416: checking for garbage collector to use" >&5
# Check whether --enable-java-gc or --disable-java-gc was given.
if test "${enable_java_gc+set}" = set; then
enableval="$enable_java_gc"
@@ -4450,7 +4464,7 @@ esac
echo $ac_n "checking for thread model used by GCC""... $ac_c" 1>&6
-echo "configure:4454: checking for thread model used by GCC" >&5
+echo "configure:4468: checking for thread model used by GCC" >&5
THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
echo "$ac_t""$THREADS" 1>&6
@@ -4593,10 +4607,6 @@ else
USING_GCC_FALSE=
fi
-CANADIAN=no
-NULL_TARGET=no
-NATIVE=yes
-
# We're in the tree with gcc, and need to include some of its headers.
GCC_UNWIND_INCLUDE='-I$(libgcj_basedir)/../gcc'
@@ -4604,7 +4614,7 @@ GCC_UNWIND_INCLUDE='-I$(libgcj_basedir)/../gcc'
gcc_version_trigger=${libgcj_basedir}/../gcc/version.c
gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([^\"]*\)\".*/\1/'`
gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
-tool_include_dir='$(libdir)/gcc/$(target_alias)/'${gcc_version}/include
+tool_include_dir='$(libdir)/gcc/$(target_noncanonical)/'${gcc_version}/include
@@ -4661,12 +4671,12 @@ else
for ac_func in strerror ioctl select fstat open fsync sleep opendir
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4665: checking for $ac_func" >&5
+echo "configure:4675: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4670 "configure"
+#line 4680 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4689,7 +4699,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4693: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4703: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -4716,12 +4726,12 @@ done
for ac_func in gmtime_r localtime_r readdir_r getpwuid_r getcwd
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4720: checking for $ac_func" >&5
+echo "configure:4730: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4725 "configure"
+#line 4735 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4744,7 +4754,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -4771,12 +4781,12 @@ done
for ac_func in access stat mkdir rename rmdir unlink realpath utime chmod
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4775: checking for $ac_func" >&5
+echo "configure:4785: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4780 "configure"
+#line 4790 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4799,7 +4809,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4813: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -4826,12 +4836,12 @@ done
for ac_func in nl_langinfo setlocale
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4830: checking for $ac_func" >&5
+echo "configure:4840: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4835 "configure"
+#line 4845 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4854,7 +4864,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -4881,12 +4891,12 @@ done
for ac_func in inet_aton inet_addr
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4885: checking for $ac_func" >&5
+echo "configure:4895: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4890 "configure"
+#line 4900 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4909,7 +4919,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -4936,12 +4946,12 @@ done
for ac_func in inet_pton uname inet_ntoa
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4940: checking for $ac_func" >&5
+echo "configure:4950: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4945 "configure"
+#line 4955 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4964,7 +4974,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -4991,12 +5001,12 @@ done
for ac_func in fork execvp pipe sigaction ftruncate
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4995: checking for $ac_func" >&5
+echo "configure:5005: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5000 "configure"
+#line 5010 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5019,7 +5029,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5047,17 +5057,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5051: checking for $ac_hdr" >&5
+echo "configure:5061: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5056 "configure"
+#line 5066 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5061: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5071: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5084,12 +5094,12 @@ fi
done
echo $ac_n "checking for backtrace""... $ac_c" 1>&6
-echo "configure:5088: checking for backtrace" >&5
+echo "configure:5098: checking for backtrace" >&5
if eval "test \"`echo '$''{'ac_cv_func_backtrace'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5093 "configure"
+#line 5103 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char backtrace(); below. */
@@ -5112,7 +5122,7 @@ backtrace();
; return 0; }
EOF
-if { (eval echo configure:5116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_backtrace=yes"
else
@@ -5165,7 +5175,7 @@ fi
echo $ac_n "checking for dladdr in -ldl""... $ac_c" 1>&6
-echo "configure:5169: checking for dladdr in -ldl" >&5
+echo "configure:5179: checking for dladdr in -ldl" >&5
ac_lib_var=`echo dl'_'dladdr | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5173,7 +5183,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5177 "configure"
+#line 5187 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5184,7 +5194,7 @@ int main() {
dladdr()
; return 0; }
EOF
-if { (eval echo configure:5188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5220,7 +5230,7 @@ do
ac_safe=`echo "$ac_file" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_file""... $ac_c" 1>&6
-echo "configure:5224: checking for $ac_file" >&5
+echo "configure:5234: checking for $ac_file" >&5
if eval "test \"`echo '$''{'ac_cv_file_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5278,7 +5288,7 @@ fi
echo $ac_n "checking for iconv""... $ac_c" 1>&6
-echo "configure:5282: checking for iconv" >&5
+echo "configure:5292: checking for iconv" >&5
if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5286,7 +5296,7 @@ else
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
cat > conftest.$ac_ext <<EOF
-#line 5290 "configure"
+#line 5300 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -5296,7 +5306,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:5300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5310: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_func_iconv=yes
else
@@ -5308,7 +5318,7 @@ rm -f conftest*
am_save_LIBS="$LIBS"
LIBS="$LIBS $am_cv_libiconv_ldpath -liconv"
cat > conftest.$ac_ext <<EOF
-#line 5312 "configure"
+#line 5322 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -5318,7 +5328,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:5322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_lib_iconv=yes
am_cv_func_iconv=yes
@@ -5339,13 +5349,13 @@ echo "$ac_t""$am_cv_func_iconv" 1>&6
EOF
echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6
-echo "configure:5343: checking for iconv declaration" >&5
+echo "configure:5353: checking for iconv declaration" >&5
if eval "test \"`echo '$''{'am_cv_proto_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5349 "configure"
+#line 5359 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -5364,7 +5374,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:5368: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5378: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
am_cv_proto_iconv_arg1=""
else
@@ -5395,17 +5405,17 @@ EOF
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5399: checking for $ac_hdr" >&5
+echo "configure:5409: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5404 "configure"
+#line 5414 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5409: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5419: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5433,19 +5443,19 @@ done
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:5437: checking for LC_MESSAGES" >&5
+echo "configure:5447: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5442 "configure"
+#line 5452 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:5449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -5466,12 +5476,12 @@ EOF
fi
fi
echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
-echo "configure:5470: checking whether struct tm is in sys/time.h or time.h" >&5
+echo "configure:5480: checking whether struct tm is in sys/time.h or time.h" >&5
if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5475 "configure"
+#line 5485 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <time.h>
@@ -5479,7 +5489,7 @@ int main() {
struct tm *tp; tp->tm_sec;
; return 0; }
EOF
-if { (eval echo configure:5483: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5493: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_tm=time.h
else
@@ -5500,12 +5510,12 @@ EOF
fi
echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
-echo "configure:5504: checking for tm_zone in struct tm" >&5
+echo "configure:5514: checking for tm_zone in struct tm" >&5
if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5509 "configure"
+#line 5519 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_cv_struct_tm>
@@ -5513,7 +5523,7 @@ int main() {
struct tm tm; tm.tm_zone;
; return 0; }
EOF
-if { (eval echo configure:5517: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5527: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_tm_zone=yes
else
@@ -5533,12 +5543,12 @@ EOF
else
echo $ac_n "checking for tzname""... $ac_c" 1>&6
-echo "configure:5537: checking for tzname" >&5
+echo "configure:5547: checking for tzname" >&5
if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5542 "configure"
+#line 5552 "configure"
#include "confdefs.h"
#include <time.h>
#ifndef tzname /* For SGI. */
@@ -5548,7 +5558,7 @@ int main() {
atoi(*tzname);
; return 0; }
EOF
-if { (eval echo configure:5552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_var_tzname=yes
else
@@ -5573,12 +5583,12 @@ fi
for ac_func in gethostbyname_r
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5577: checking for $ac_func" >&5
+echo "configure:5587: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5582 "configure"
+#line 5592 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5601,7 +5611,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5615: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5628,7 +5638,7 @@ EOF
# We look for the one that returns `int'.
# Hopefully this check is robust enough.
cat > conftest.$ac_ext <<EOF
-#line 5632 "configure"
+#line 5642 "configure"
#include "confdefs.h"
#include <netdb.h>
EOF
@@ -5648,7 +5658,7 @@ rm -f conftest*
*" -D_REENTRANT "*) ;;
*)
echo $ac_n "checking whether gethostbyname_r declaration requires -D_REENTRANT""... $ac_c" 1>&6
-echo "configure:5652: checking whether gethostbyname_r declaration requires -D_REENTRANT" >&5
+echo "configure:5662: checking whether gethostbyname_r declaration requires -D_REENTRANT" >&5
if eval "test \"`echo '$''{'libjava_cv_gethostbyname_r_needs_reentrant'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5661,14 +5671,14 @@ ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftes
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 5665 "configure"
+#line 5675 "configure"
#include "confdefs.h"
#include <netdb.h>
int main() {
gethostbyname_r("", 0, 0);
; return 0; }
EOF
-if { (eval echo configure:5672: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5682: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
libjava_cv_gethostbyname_r_needs_reentrant=no
else
@@ -5678,14 +5688,14 @@ else
CPPFLAGS_SAVE="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -D_REENTRANT"
cat > conftest.$ac_ext <<EOF
-#line 5682 "configure"
+#line 5692 "configure"
#include "confdefs.h"
#include <netdb.h>
int main() {
gethostbyname_r("", 0, 0);
; return 0; }
EOF
-if { (eval echo configure:5689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5699: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
libjava_cv_gethostbyname_r_needs_reentrant=yes
else
@@ -5720,12 +5730,12 @@ EOF
esac
echo $ac_n "checking for struct hostent_data""... $ac_c" 1>&6
-echo "configure:5724: checking for struct hostent_data" >&5
+echo "configure:5734: checking for struct hostent_data" >&5
if eval "test \"`echo '$''{'libjava_cv_struct_hostent_data'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5729 "configure"
+#line 5739 "configure"
#include "confdefs.h"
#if GETHOSTBYNAME_R_NEEDS_REENTRANT && !defined(_REENTRANT)
@@ -5736,7 +5746,7 @@ int main() {
struct hostent_data data;
; return 0; }
EOF
-if { (eval echo configure:5740: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5750: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
libjava_cv_struct_hostent_data=yes
else
@@ -5768,7 +5778,7 @@ done
# to exist where expected. (The root issue: AC_CHECK_FUNCS assumes C
# linkage check is enough, yet C++ code requires proper prototypes.)
cat > conftest.$ac_ext <<EOF
-#line 5772 "configure"
+#line 5782 "configure"
#include "confdefs.h"
#include <netdb.h>
EOF
@@ -5779,12 +5789,12 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
for ac_func in gethostbyaddr_r
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5783: checking for $ac_func" >&5
+echo "configure:5793: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5788 "configure"
+#line 5798 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5807,7 +5817,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5834,7 +5844,7 @@ EOF
# We look for the one that returns `int'.
# Hopefully this check is robust enough.
cat > conftest.$ac_ext <<EOF
-#line 5838 "configure"
+#line 5848 "configure"
#include "confdefs.h"
#include <netdb.h>
EOF
@@ -5861,12 +5871,12 @@ rm -f conftest*
for ac_func in gethostname
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5865: checking for $ac_func" >&5
+echo "configure:5875: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5870 "configure"
+#line 5880 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5889,7 +5899,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5893: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5903: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5913,7 +5923,7 @@ EOF
EOF
cat > conftest.$ac_ext <<EOF
-#line 5917 "configure"
+#line 5927 "configure"
#include "confdefs.h"
#include <unistd.h>
EOF
@@ -5937,12 +5947,12 @@ done
for ac_func in usleep
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5941: checking for $ac_func" >&5
+echo "configure:5951: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5946 "configure"
+#line 5956 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5965,7 +5975,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5985,7 +5995,7 @@ if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
EOF
cat > conftest.$ac_ext <<EOF
-#line 5989 "configure"
+#line 5999 "configure"
#include "confdefs.h"
#include <unistd.h>
EOF
@@ -6016,12 +6026,12 @@ done
for ac_func in pthread_mutexattr_settype pthread_mutexattr_setkind_np
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6020: checking for $ac_func" >&5
+echo "configure:6030: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6025 "configure"
+#line 6035 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6044,7 +6054,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6058: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6074,12 +6084,12 @@ done
for ac_func in sched_yield
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6078: checking for $ac_func" >&5
+echo "configure:6088: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6083 "configure"
+#line 6093 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6102,7 +6112,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6124,7 +6134,7 @@ EOF
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for sched_yield in -lrt""... $ac_c" 1>&6
-echo "configure:6128: checking for sched_yield in -lrt" >&5
+echo "configure:6138: checking for sched_yield in -lrt" >&5
ac_lib_var=`echo rt'_'sched_yield | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -6132,7 +6142,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lrt $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6136 "configure"
+#line 6146 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -6143,7 +6153,7 @@ int main() {
sched_yield()
; return 0; }
EOF
-if { (eval echo configure:6147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -6169,7 +6179,7 @@ else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for sched_yield in -lposix4""... $ac_c" 1>&6
-echo "configure:6173: checking for sched_yield in -lposix4" >&5
+echo "configure:6183: checking for sched_yield in -lposix4" >&5
ac_lib_var=`echo posix4'_'sched_yield | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -6177,7 +6187,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lposix4 $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6181 "configure"
+#line 6191 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -6188,7 +6198,7 @@ int main() {
sched_yield()
; return 0; }
EOF
-if { (eval echo configure:6192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -6224,7 +6234,7 @@ done
# We can save a little space at runtime if the mutex has m_count
# or __m_count. This is a nice hack for Linux.
cat > conftest.$ac_ext <<EOF
-#line 6228 "configure"
+#line 6238 "configure"
#include "confdefs.h"
#include <pthread.h>
int main() {
@@ -6233,7 +6243,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:6237: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6247: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define PTHREAD_MUTEX_HAVE_M_COUNT 1
@@ -6245,7 +6255,7 @@ else
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 6249 "configure"
+#line 6259 "configure"
#include "confdefs.h"
#include <pthread.h>
int main() {
@@ -6254,7 +6264,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:6258: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6268: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define PTHREAD_MUTEX_HAVE___M_COUNT 1
@@ -6274,12 +6284,12 @@ rm -f conftest*
for ac_func in gettimeofday time ftime
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6278: checking for $ac_func" >&5
+echo "configure:6288: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6283 "configure"
+#line 6293 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6302,7 +6312,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6333,12 +6343,12 @@ done
for ac_func in memmove
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6337: checking for $ac_func" >&5
+echo "configure:6347: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6342 "configure"
+#line 6352 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6361,7 +6371,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6391,12 +6401,12 @@ done
for ac_func in memcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6395: checking for $ac_func" >&5
+echo "configure:6405: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6400 "configure"
+#line 6410 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6419,7 +6429,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6448,7 +6458,7 @@ done
fi
echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:6452: checking for dlopen in -ldl" >&5
+echo "configure:6462: checking for dlopen in -ldl" >&5
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -6456,7 +6466,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6460 "configure"
+#line 6470 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -6467,7 +6477,7 @@ int main() {
dlopen()
; return 0; }
EOF
-if { (eval echo configure:6471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -6512,7 +6522,7 @@ fi
#--------------------------------------------------------------------
echo $ac_n "checking for socket libraries""... $ac_c" 1>&6
-echo "configure:6516: checking for socket libraries" >&5
+echo "configure:6526: checking for socket libraries" >&5
if eval "test \"`echo '$''{'gcj_cv_lib_sockets'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6520,12 +6530,12 @@ else
gcj_checkBoth=0
unset ac_cv_func_connect
echo $ac_n "checking for connect""... $ac_c" 1>&6
-echo "configure:6524: checking for connect" >&5
+echo "configure:6534: checking for connect" >&5
if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6529 "configure"
+#line 6539 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char connect(); below. */
@@ -6548,7 +6558,7 @@ connect();
; return 0; }
EOF
-if { (eval echo configure:6552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_connect=yes"
else
@@ -6571,7 +6581,7 @@ fi
if test "$gcj_checkSocket" = 1; then
unset ac_cv_func_connect
echo $ac_n "checking for main in -lsocket""... $ac_c" 1>&6
-echo "configure:6575: checking for main in -lsocket" >&5
+echo "configure:6585: checking for main in -lsocket" >&5
ac_lib_var=`echo socket'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -6579,14 +6589,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6583 "configure"
+#line 6593 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:6590: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -6613,12 +6623,12 @@ fi
LIBS="$LIBS -lsocket -lnsl"
unset ac_cv_func_accept
echo $ac_n "checking for accept""... $ac_c" 1>&6
-echo "configure:6617: checking for accept" >&5
+echo "configure:6627: checking for accept" >&5
if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6622 "configure"
+#line 6632 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char accept(); below. */
@@ -6641,7 +6651,7 @@ accept();
; return 0; }
EOF
-if { (eval echo configure:6645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6655: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_accept=yes"
else
@@ -6668,12 +6678,12 @@ fi
gcj_oldLibs=$LIBS
LIBS="$LIBS $gcj_cv_lib_sockets"
echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
-echo "configure:6672: checking for gethostbyname" >&5
+echo "configure:6682: checking for gethostbyname" >&5
if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6677 "configure"
+#line 6687 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gethostbyname(); below. */
@@ -6696,7 +6706,7 @@ gethostbyname();
; return 0; }
EOF
-if { (eval echo configure:6700: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_gethostbyname=yes"
else
@@ -6714,7 +6724,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6
-echo "configure:6718: checking for main in -lnsl" >&5
+echo "configure:6728: checking for main in -lnsl" >&5
ac_lib_var=`echo nsl'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -6722,14 +6732,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6726 "configure"
+#line 6736 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:6733: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -6761,7 +6771,7 @@ echo "$ac_t""$gcj_cv_lib_sockets" 1>&6
if test "$with_system_zlib" = yes; then
echo $ac_n "checking for deflate in -lz""... $ac_c" 1>&6
-echo "configure:6765: checking for deflate in -lz" >&5
+echo "configure:6775: checking for deflate in -lz" >&5
ac_lib_var=`echo z'_'deflate | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -6769,7 +6779,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lz $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 6773 "configure"
+#line 6783 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -6780,7 +6790,7 @@ int main() {
deflate()
; return 0; }
EOF
-if { (eval echo configure:6784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -6812,7 +6822,7 @@ fi
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6816: checking for $ac_word" >&5
+echo "configure:6826: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6855,28 +6865,28 @@ fi
else
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
- echo $ac_n "checking for gtk+-2.0 >= 2.2""... $ac_c" 1>&6
-echo "configure:6860: checking for gtk+-2.0 >= 2.2" >&5
+ echo $ac_n "checking for gtk+-2.0 >= 2.4""... $ac_c" 1>&6
+echo "configure:6870: checking for gtk+-2.0 >= 2.4" >&5
- if $PKG_CONFIG --exists "gtk+-2.0 >= 2.2" ; then
+ if $PKG_CONFIG --exists "gtk+-2.0 >= 2.4" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking GTK_CFLAGS""... $ac_c" 1>&6
-echo "configure:6867: checking GTK_CFLAGS" >&5
- GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.2"`
+echo "configure:6877: checking GTK_CFLAGS" >&5
+ GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 2.4"`
echo "$ac_t""$GTK_CFLAGS" 1>&6
echo $ac_n "checking GTK_LIBS""... $ac_c" 1>&6
-echo "configure:6872: checking GTK_LIBS" >&5
- GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.2"`
+echo "configure:6882: checking GTK_LIBS" >&5
+ GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0 >= 2.4"`
echo "$ac_t""$GTK_LIBS" 1>&6
else
GTK_CFLAGS=""
GTK_LIBS=""
## If we have a custom action on failure, don't print errors, but
## do set a variable so people can do so.
- GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk+-2.0 >= 2.2"`
+ GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk+-2.0 >= 2.4"`
echo $GTK_PKG_ERRORS
fi
@@ -6891,7 +6901,7 @@ echo "configure:6872: checking GTK_LIBS" >&5
if test $succeeded = yes; then
:
else
- { echo "configure: error: Library requirements (gtk+-2.0 >= 2.2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." 1>&2; exit 1; }
+ { echo "configure: error: Library requirements (gtk+-2.0 >= 2.4) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." 1>&2; exit 1; }
fi
@@ -6904,7 +6914,7 @@ echo "configure:6872: checking GTK_LIBS" >&5
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6908: checking for $ac_word" >&5
+echo "configure:6918: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6947,28 +6957,28 @@ fi
else
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
- echo $ac_n "checking for glib-2.0 >= 2.2 gthread-2.0 >= 2.2""... $ac_c" 1>&6
-echo "configure:6952: checking for glib-2.0 >= 2.2 gthread-2.0 >= 2.2" >&5
+ echo $ac_n "checking for glib-2.0 >= 2.4 gthread-2.0 >= 2.4""... $ac_c" 1>&6
+echo "configure:6962: checking for glib-2.0 >= 2.4 gthread-2.0 >= 2.4" >&5
- if $PKG_CONFIG --exists "glib-2.0 >= 2.2 gthread-2.0 >= 2.2" ; then
+ if $PKG_CONFIG --exists "glib-2.0 >= 2.4 gthread-2.0 >= 2.4" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking GLIB_CFLAGS""... $ac_c" 1>&6
-echo "configure:6959: checking GLIB_CFLAGS" >&5
- GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.2 gthread-2.0 >= 2.2"`
+echo "configure:6969: checking GLIB_CFLAGS" >&5
+ GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.4 gthread-2.0 >= 2.4"`
echo "$ac_t""$GLIB_CFLAGS" 1>&6
echo $ac_n "checking GLIB_LIBS""... $ac_c" 1>&6
-echo "configure:6964: checking GLIB_LIBS" >&5
- GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.2 gthread-2.0 >= 2.2"`
+echo "configure:6974: checking GLIB_LIBS" >&5
+ GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.4 gthread-2.0 >= 2.4"`
echo "$ac_t""$GLIB_LIBS" 1>&6
else
GLIB_CFLAGS=""
GLIB_LIBS=""
## If we have a custom action on failure, don't print errors, but
## do set a variable so people can do so.
- GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-2.0 >= 2.2 gthread-2.0 >= 2.2"`
+ GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-2.0 >= 2.4 gthread-2.0 >= 2.4"`
echo $GLIB_PKG_ERRORS
fi
@@ -6983,7 +6993,7 @@ echo "configure:6964: checking GLIB_LIBS" >&5
if test $succeeded = yes; then
:
else
- { echo "configure: error: Library requirements (glib-2.0 >= 2.2 gthread-2.0 >= 2.2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." 1>&2; exit 1; }
+ { echo "configure: error: Library requirements (glib-2.0 >= 2.4 gthread-2.0 >= 2.4) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." 1>&2; exit 1; }
fi
@@ -6996,7 +7006,7 @@ echo "configure:6964: checking GLIB_LIBS" >&5
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7000: checking for $ac_word" >&5
+echo "configure:7010: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7040,19 +7050,19 @@ fi
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
echo $ac_n "checking for libart-2.0 >= 2.1""... $ac_c" 1>&6
-echo "configure:7044: checking for libart-2.0 >= 2.1" >&5
+echo "configure:7054: checking for libart-2.0 >= 2.1" >&5
if $PKG_CONFIG --exists "libart-2.0 >= 2.1" ; then
echo "$ac_t""yes" 1>&6
succeeded=yes
echo $ac_n "checking LIBART_CFLAGS""... $ac_c" 1>&6
-echo "configure:7051: checking LIBART_CFLAGS" >&5
+echo "configure:7061: checking LIBART_CFLAGS" >&5
LIBART_CFLAGS=`$PKG_CONFIG --cflags "libart-2.0 >= 2.1"`
echo "$ac_t""$LIBART_CFLAGS" 1>&6
echo $ac_n "checking LIBART_LIBS""... $ac_c" 1>&6
-echo "configure:7056: checking LIBART_LIBS" >&5
+echo "configure:7066: checking LIBART_LIBS" >&5
LIBART_LIBS=`$PKG_CONFIG --libs "libart-2.0 >= 2.1"`
echo "$ac_t""$LIBART_LIBS" 1>&6
else
@@ -7086,7 +7096,7 @@ echo "configure:7056: checking LIBART_LIBS" >&5
# requires -ldl.
if test "$GC" = boehm; then
echo $ac_n "checking for main in -ldl""... $ac_c" 1>&6
-echo "configure:7090: checking for main in -ldl" >&5
+echo "configure:7100: checking for main in -ldl" >&5
ac_lib_var=`echo dl'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -7094,14 +7104,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7098 "configure"
+#line 7108 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:7105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7115: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -7132,6 +7142,8 @@ else
fi
+NATIVE=yes
+
# Which gcj do we use?
which_gcj=default
built_gcc_dir="`cd ${builddotdot}/../../gcc && ${PWDCMD-pwd}`"
@@ -7146,7 +7158,7 @@ if test -n "${with_cross_host}"; then
;;
esac
if test -x "${built_gcc_dir}/gcj${cross_host_exeext}"; then
- if test x"$build_alias" = x"$with_cross_host"; then
+ if test x"$build_noncanonical" = x"$with_cross_host"; then
# Ordinary cross (host!=target and host=build)
which_gcj=built
else
@@ -7173,27 +7185,32 @@ fi
case "${which_gcj}" in
built)
GCJ="$built_gcc_dir/gcj -B`${PWDCMD-pwd}`/ -B$built_gcc_dir/"
+ GCJH='$(MULTIBUILDTOP)../$(COMPPATH)/gcc/gcjh'
+ ZIP='$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/fastjar'
;;
cross)
- # See the comment in Makefile.am about CANADIAN being a misnomer
- CANADIAN=yes
- NULL_TARGET=no
if test "x${with_newlib}" = "xyes"; then
# FIXME (comment): Why is this needed?
GCC_UNWIND_INCLUDE=
- GCJ="${target_alias}-gcj"
+ GCJ="${target_noncanonical}-gcj"
else
- GCJ="${target_alias}-gcj -B`${PWDCMD-pwd}`/"
+ GCJ="${target_noncanonical}-gcj -B`${PWDCMD-pwd}`/"
fi
+ ZIP=jar
+ GCJH='$(target_noncanonical)-gcjh'
;;
path)
- # See the comment in Makefile.am about CANADIAN being a misnomer
- CANADIAN=yes
- NULL_TARGET=yes
GCJ="gcj -B`${PWDCMD-pwd}`/"
+ ## In this case, gcj is found outside the build tree. However, zip is
+ ## found in the build tree.
+ ZIP='$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/fastjar'
+ GCJH=gcjh
;;
esac
+
+
+
# Create it, so that compile/link tests don't fail
test -f libgcj.spec || touch libgcj.spec
@@ -7222,7 +7239,7 @@ fi
# Extract the first word of "${ac_tool_prefix}gcj", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcj; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7226: checking for $ac_word" >&5
+echo "configure:7243: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_GCJ'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7254,7 +7271,7 @@ if test -n "$ac_tool_prefix"; then
# Extract the first word of "gcj", so it can be a program name with args.
set dummy gcj; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7258: checking for $ac_word" >&5
+echo "configure:7275: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_GCJ'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -7316,13 +7333,13 @@ exec 5>>./config.log
CPPFLAGS=$GCJ_SAVE_CPPFLAGS
echo $ac_n "checking size of void *""... $ac_c" 1>&6
-echo "configure:7320: checking size of void *" >&5
+echo "configure:7337: checking size of void *" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_void_p'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
for ac_size in 4 8 1 2 16 12 ; do # List sizes in rough order of prevalence.
cat > conftest.$ac_ext <<EOF
-#line 7326 "configure"
+#line 7343 "configure"
#include "confdefs.h"
#include "confdefs.h"
#include <sys/types.h>
@@ -7332,7 +7349,7 @@ int main() {
switch (0) case 0: case (sizeof (void *) == $ac_size):;
; return 0; }
EOF
-if { (eval echo configure:7336: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7353: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sizeof_void_p=$ac_size
else
@@ -7377,25 +7394,7 @@ fi
-if test "$CANADIAN" = yes; then
- CANADIAN_TRUE=
- CANADIAN_FALSE='#'
-else
- CANADIAN_TRUE='#'
- CANADIAN_FALSE=
-fi
-
-
-if test "$NULL_TARGET" = yes; then
- NULL_TARGET_TRUE=
- NULL_TARGET_FALSE='#'
-else
- NULL_TARGET_TRUE='#'
- NULL_TARGET_FALSE=
-fi
-
-
-if test "$NATIVE" = yes || test "$NULL_TARGET" = yes; then
+if test "$NATIVE" = yes; then
NATIVE_TRUE=
NATIVE_FALSE='#'
else
@@ -7420,8 +7419,8 @@ case ${version_specific_libs} in
# Need the gcc compiler version to know where to install libraries
# and header files if --enable-version-specific-runtime-libs option
# is selected.
- includedir='${libdir}/gcc/${target_alias}/'$gcc_version/include/
- toolexecdir='$(libdir)/gcc/$(target_alias)'
+ includedir='${libdir}/gcc/${target_noncanonical}/'$gcc_version/include/
+ toolexecdir='$(libdir)/gcc/$(target_noncanonical)'
toolexecmainlibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
toolexeclibdir=$toolexecmainlibdir
;;
@@ -7429,10 +7428,10 @@ case ${version_specific_libs} in
if test -n "$with_cross_host" &&
test x"$with_cross_host" != x"no"; then
# Install a library built with a cross compiler in tooldir, not libdir.
- toolexecdir='$(exec_prefix)/$(target_alias)'
+ toolexecdir='$(exec_prefix)/$(target_noncanonical)'
toolexecmainlibdir='$(toolexecdir)/lib'
else
- toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+ toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
toolexecmainlibdir='$(libdir)'
fi
multi_os_directory=`$CC -print-multi-os-directory`
@@ -7461,17 +7460,17 @@ for ac_hdr in unistd.h bstring.h sys/time.h sys/types.h fcntl.h sys/ioctl.h sys/
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7465: checking for $ac_hdr" >&5
+echo "configure:7464: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7470 "configure"
+#line 7469 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7475: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7474: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -7501,17 +7500,17 @@ for ac_hdr in dirent.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7505: checking for $ac_hdr" >&5
+echo "configure:7504: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7510 "configure"
+#line 7509 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7515: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7514: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -7541,17 +7540,17 @@ for ac_hdr in inttypes.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7545: checking for $ac_hdr" >&5
+echo "configure:7544: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7550 "configure"
+#line 7549 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7555: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7554: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -7587,12 +7586,12 @@ fi
done
echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:7591: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:7590: checking for sys/wait.h that is POSIX.1 compatible" >&5
if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7596 "configure"
+#line 7595 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
@@ -7608,7 +7607,7 @@ wait (&s);
s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
; return 0; }
EOF
-if { (eval echo configure:7612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7611: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_sys_wait_h=yes
else
@@ -7630,12 +7629,12 @@ fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:7634: checking for ANSI C header files" >&5
+echo "configure:7633: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7639 "configure"
+#line 7638 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -7643,7 +7642,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7647: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7646: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -7660,7 +7659,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 7664 "configure"
+#line 7663 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -7678,7 +7677,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 7682 "configure"
+#line 7681 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -7699,7 +7698,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 7703 "configure"
+#line 7702 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -7710,7 +7709,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:7714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -7734,12 +7733,12 @@ EOF
fi
echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:7738: checking for ssize_t" >&5
+echo "configure:7737: checking for ssize_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7743 "configure"
+#line 7742 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -7768,9 +7767,9 @@ fi
echo $ac_n "checking for in_addr_t""... $ac_c" 1>&6
-echo "configure:7772: checking for in_addr_t" >&5
+echo "configure:7771: checking for in_addr_t" >&5
cat > conftest.$ac_ext <<EOF
-#line 7774 "configure"
+#line 7773 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -7784,7 +7783,7 @@ int main() {
in_addr_t foo;
; return 0; }
EOF
-if { (eval echo configure:7788: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7787: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_IN_ADDR_T 1
@@ -7800,16 +7799,16 @@ fi
rm -f conftest*
echo $ac_n "checking whether struct ip_mreq is in netinet/in.h""... $ac_c" 1>&6
-echo "configure:7804: checking whether struct ip_mreq is in netinet/in.h" >&5
+echo "configure:7803: checking whether struct ip_mreq is in netinet/in.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 7806 "configure"
+#line 7805 "configure"
#include "confdefs.h"
#include <netinet/in.h>
int main() {
struct ip_mreq mreq;
; return 0; }
EOF
-if { (eval echo configure:7813: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7812: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_STRUCT_IP_MREQ 1
@@ -7825,16 +7824,16 @@ fi
rm -f conftest*
echo $ac_n "checking whether struct ipv6_mreq is in netinet/in.h""... $ac_c" 1>&6
-echo "configure:7829: checking whether struct ipv6_mreq is in netinet/in.h" >&5
+echo "configure:7828: checking whether struct ipv6_mreq is in netinet/in.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 7831 "configure"
+#line 7830 "configure"
#include "confdefs.h"
#include <netinet/in.h>
int main() {
struct ipv6_mreq mreq6;
; return 0; }
EOF
-if { (eval echo configure:7838: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7837: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_STRUCT_IPV6_MREQ 1
@@ -7850,16 +7849,16 @@ fi
rm -f conftest*
echo $ac_n "checking whether struct sockaddr_in6 is in netinet/in.h""... $ac_c" 1>&6
-echo "configure:7854: checking whether struct sockaddr_in6 is in netinet/in.h" >&5
+echo "configure:7853: checking whether struct sockaddr_in6 is in netinet/in.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 7856 "configure"
+#line 7855 "configure"
#include "confdefs.h"
#include <netinet/in.h>
int main() {
struct sockaddr_in6 addr6;
; return 0; }
EOF
-if { (eval echo configure:7863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7862: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_INET6 1
@@ -7875,9 +7874,9 @@ fi
rm -f conftest*
echo $ac_n "checking for socklen_t in sys/socket.h""... $ac_c" 1>&6
-echo "configure:7879: checking for socklen_t in sys/socket.h" >&5
+echo "configure:7878: checking for socklen_t in sys/socket.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 7881 "configure"
+#line 7880 "configure"
#include "confdefs.h"
#define _POSIX_PII_SOCKET
#include <sys/types.h>
@@ -7886,7 +7885,7 @@ int main() {
socklen_t x = 5;
; return 0; }
EOF
-if { (eval echo configure:7890: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7889: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_SOCKLEN_T 1
@@ -7902,16 +7901,16 @@ fi
rm -f conftest*
echo $ac_n "checking for tm_gmtoff in struct tm""... $ac_c" 1>&6
-echo "configure:7906: checking for tm_gmtoff in struct tm" >&5
+echo "configure:7905: checking for tm_gmtoff in struct tm" >&5
cat > conftest.$ac_ext <<EOF
-#line 7908 "configure"
+#line 7907 "configure"
#include "confdefs.h"
#include <time.h>
int main() {
struct tm tim; tim.tm_gmtoff = 0;
; return 0; }
EOF
-if { (eval echo configure:7915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7914: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define STRUCT_TM_HAS_GMTOFF 1
@@ -7924,16 +7923,16 @@ else
rm -rf conftest*
echo "$ac_t""no" 1>&6
echo $ac_n "checking for global timezone variable""... $ac_c" 1>&6
-echo "configure:7928: checking for global timezone variable" >&5
+echo "configure:7927: checking for global timezone variable" >&5
cat > conftest.$ac_ext <<EOF
-#line 7930 "configure"
+#line 7929 "configure"
#include "confdefs.h"
#include <time.h>
int main() {
void i(){long z2 = 2*timezone;}
; return 0; }
EOF
-if { (eval echo configure:7937: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7936: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_TIMEZONE 1
@@ -7946,16 +7945,16 @@ else
rm -rf conftest*
echo "$ac_t""no" 1>&6
echo $ac_n "checking for global _timezone variable""... $ac_c" 1>&6
-echo "configure:7950: checking for global _timezone variable" >&5
+echo "configure:7949: checking for global _timezone variable" >&5
cat > conftest.$ac_ext <<EOF
-#line 7952 "configure"
+#line 7951 "configure"
#include "confdefs.h"
#include <time.h>
int main() {
long z2 = _timezone;
; return 0; }
EOF
-if { (eval echo configure:7959: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7958: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cat >> confdefs.h <<\EOF
#define HAVE_UNDERSCORE_TIMEZONE 1
@@ -7977,19 +7976,19 @@ rm -f conftest*
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:7981: checking for working alloca.h" >&5
+echo "configure:7980: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7986 "configure"
+#line 7985 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:7993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -8010,12 +8009,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:8014: checking for alloca" >&5
+echo "configure:8013: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8019 "configure"
+#line 8018 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -8043,7 +8042,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:8047: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -8075,12 +8074,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:8079: checking whether alloca needs Cray hooks" >&5
+echo "configure:8078: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8084 "configure"
+#line 8083 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -8105,12 +8104,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8109: checking for $ac_func" >&5
+echo "configure:8108: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8114 "configure"
+#line 8113 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8133,7 +8132,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8136: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8160,7 +8159,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:8164: checking stack direction for C alloca" >&5
+echo "configure:8163: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8168,7 +8167,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 8172 "configure"
+#line 8171 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -8187,7 +8186,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:8191: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -8212,17 +8211,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8216: checking for $ac_hdr" >&5
+echo "configure:8215: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8221 "configure"
+#line 8220 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8226: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8225: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -8251,12 +8250,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8255: checking for $ac_func" >&5
+echo "configure:8254: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8260 "configure"
+#line 8259 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8279,7 +8278,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8304,7 +8303,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:8308: checking for working mmap" >&5
+echo "configure:8307: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8312,7 +8311,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 8316 "configure"
+#line 8315 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -8452,7 +8451,7 @@ main()
}
EOF
-if { (eval echo configure:8456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -8480,7 +8479,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8484: checking for $ac_word" >&5
+echo "configure:8483: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_PERL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8525,6 +8524,9 @@ case "${host}" in
# SYSDEP_SOURCES=sysdep/ia64.c
# test -d sysdep || mkdir sysdep
# ;;
+ hppa*-*-linux*)
+ SIGNAL_HANDLER=include/pa-signal.h
+ ;;
ia64-*-linux*)
SIGNAL_HANDLER=include/dwarf2-signal.h
;;
@@ -8553,6 +8555,9 @@ case "${host}" in
mips*-*-linux*)
SIGNAL_HANDLER=include/mips-signal.h
;;
+ *-*-darwin*)
+ SIGNAL_HANDLER=include/darwin-signal.h
+ ;;
*)
SIGNAL_HANDLER=include/default-signal.h
;;
@@ -8728,9 +8733,7 @@ s%@includedir@%$includedir%g
s%@oldincludedir@%$oldincludedir%g
s%@infodir@%$infodir%g
s%@mandir@%$mandir%g
-s%@LN_S@%$LN_S%g
s%@libgcj_basedir@%$libgcj_basedir%g
-s%@mkinstalldirs@%$mkinstalldirs%g
s%@host@%$host%g
s%@host_alias@%$host_alias%g
s%@host_cpu@%$host_cpu%g
@@ -8746,6 +8749,9 @@ s%@build_alias@%$build_alias%g
s%@build_cpu@%$build_cpu%g
s%@build_vendor@%$build_vendor%g
s%@build_os@%$build_os%g
+s%@target_noncanonical@%$target_noncanonical%g
+s%@LN_S@%$LN_S%g
+s%@mkinstalldirs@%$mkinstalldirs%g
s%@CC@%$CC%g
s%@glibjava_CXX@%$glibjava_CXX%g
s%@CXX@%$CXX%g
@@ -8836,6 +8842,8 @@ s%@GLIB_CFLAGS@%$GLIB_CFLAGS%g
s%@GLIB_LIBS@%$GLIB_LIBS%g
s%@LIBART_CFLAGS@%$LIBART_CFLAGS%g
s%@LIBART_LIBS@%$LIBART_LIBS%g
+s%@GCJH@%$GCJH%g
+s%@ZIP@%$ZIP%g
s%@GCJ@%$GCJ%g
s%@GCJFLAGS@%$GCJFLAGS%g
s%@ZLIBS@%$ZLIBS%g
@@ -8845,10 +8853,6 @@ s%@DIVIDESPEC@%$DIVIDESPEC%g
s%@CHECKREFSPEC@%$CHECKREFSPEC%g
s%@EXCEPTIONSPEC@%$EXCEPTIONSPEC%g
s%@IEEESPEC@%$IEEESPEC%g
-s%@CANADIAN_TRUE@%$CANADIAN_TRUE%g
-s%@CANADIAN_FALSE@%$CANADIAN_FALSE%g
-s%@NULL_TARGET_TRUE@%$NULL_TARGET_TRUE%g
-s%@NULL_TARGET_FALSE@%$NULL_TARGET_FALSE%g
s%@NATIVE_TRUE@%$NATIVE_TRUE%g
s%@NATIVE_FALSE@%$NATIVE_FALSE%g
s%@NEEDS_DATA_START_TRUE@%$NEEDS_DATA_START_TRUE%g
diff --git a/libjava/configure.host b/libjava/configure.host
index c021d13abed..4cef1b8a5d1 100644
--- a/libjava/configure.host
+++ b/libjava/configure.host
@@ -138,6 +138,7 @@ case "${host}" in
s390*-*)
sysdeps_dir=s390
libgcj_interpreter=yes
+ DIVIDESPEC=-fno-use-divide-subroutine
enable_hash_synchronization_default=yes
;;
sparc*-*)
@@ -169,6 +170,7 @@ case "${host}" in
sparc*-linux* | \
ia64-* | \
x86_64*-linux* | \
+ hppa*-linux* | \
sh-linux* | sh[34]*-linux*)
can_unwind_signal=yes
if test x$slow_pthread_self = xyes \
@@ -232,10 +234,10 @@ EOF
;;
esac
;;
- *-*-darwin*)
- enable_hash_synchronization_default=no
+ powerpc*-*-darwin*)
+ enable_hash_synchronization_default=yes
slow_pthread_self=
- can_unwind_signal=no
+ can_unwind_signal=yes
;;
*-*-freebsd*)
slow_pthread_self=
diff --git a/libjava/configure.in b/libjava/configure.in
index c763b7525f1..dc7b8799353 100644
--- a/libjava/configure.in
+++ b/libjava/configure.in
@@ -2,6 +2,49 @@ dnl Process this with autoconf to create configure
AC_PREREQ(2.13)
AC_INIT(java/lang/System.java)
+dnl We use these options to decide which functions to include.
+AC_ARG_WITH(target-subdir,
+[ --with-target-subdir=SUBDIR
+ configuring in a subdirectory])
+
+dnl We may get other options which we don't document:
+dnl --with-target-subdir, --with-multisrctop, --with-multisubdir
+
+# When building with srcdir == objdir, links to the source files will
+# be created in directories within the target_subdir. We have to
+# adjust toplevel_srcdir accordingly, so that configure finds
+# install-sh and other auxiliary files that live in the top-level
+# source directory.
+if test "${srcdir}" = "."; then
+ if test -z "${with_target_subdir}"; then
+ toprel=".."
+ else
+ if test "${with_target_subdir}" != "."; then
+ toprel="${with_multisrctop}../.."
+ else
+ toprel="${with_multisrctop}.."
+ fi
+ fi
+else
+ toprel=".."
+fi
+
+libgcj_basedir=$srcdir/$toprel/./libjava
+AC_SUBST(libgcj_basedir)
+
+AC_CONFIG_AUX_DIR(${srcdir}/$toprel)
+if :; then :; else
+ # This overrides the previous occurrence for automake, but not for
+ # autoconf, which is exactly what we want.
+ AC_CONFIG_AUX_DIR(..)
+fi
+
+AC_CANONICAL_SYSTEM
+_GCC_TOPLEV_NONCANONICAL_BUILD
+_GCC_TOPLEV_NONCANONICAL_TARGET
+
+AC_SUBST(target_noncanonical)
+
# This works around the fact that libtool configuration may change LD
# for this particular configuration, but some shells, instead of
# keeping the changes in LD private, export them just because LD is
@@ -10,10 +53,10 @@ ORIGINAL_LD_FOR_MULTILIBS=$LD
AC_PROG_LN_S
-dnl We use these options to decide which functions to include.
-AC_ARG_WITH(target-subdir,
-[ --with-target-subdir=SUBDIR
- configuring in a subdirectory])
+# This works around an automake problem.
+mkinstalldirs="`cd $ac_aux_dir && ${PWDCMD-pwd}`/mkinstalldirs"
+AC_SUBST(mkinstalldirs)
+
AC_ARG_WITH(cross-host,
[ --with-cross-host=HOST configuring with a cross compiler])
@@ -32,8 +75,99 @@ AC_ARG_ENABLE(version-specific-runtime-libs,
[version_specific_libs=no]
)
+dnl Default to --enable-multilib
+AC_ARG_ENABLE(multilib,
+[ --enable-multilib build many library versions (default)],
+[case "${enableval}" in
+ yes) multilib=yes ;;
+ no) multilib=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
+ esac], [multilib=yes])dnl
+
+dnl This shouldn't be needed, as long as top-level dependencies are
+dnl defined correctly and shared-library paths are set up so that
+dnl execution tests succeed. FIXME.
+define([AC_PROG_CC_WORKS],[])
+define([AC_PROG_CXX_WORKS],[])
+
+AC_PROG_CC
+
+# We use the libstdc++-v3 version of LIB_AC_PROG_CXX, but use
+# glibjava_CXX instead of glibcpp_CXX. That's because we're passed a
+# different definition of CXX than other directories, since we don't
+# depend on libstdc++-v3 having already been built.
+AC_DEFUN(LIB_AC_PROG_CXX,
+[AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
+dnl Fool anybody using AC_PROG_CXX.
+AC_PROVIDE([AC_PROG_CXX])
+# Use glibjava_CXX so that we do not cause CXX to be cached with the
+# flags that come in CXX while configuring libjava. They're different
+# from those used for all other target libraries. If CXX is set in
+# the environment, respect that here.
+glibjava_CXX=$CXX
+AC_CHECK_PROGS(glibjava_CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
+AC_SUBST(CXX)
+CXX=$glibjava_CXX
+test -z "$glibjava_CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
+
+AC_PROG_CXX_GNU
+
+if test $ac_cv_prog_gxx = yes; then
+ GXX=yes
+dnl Check whether -g works, even if CXXFLAGS is set, in case the package
+dnl plays around with CXXFLAGS (such as to build both debugging and
+dnl normal versions of a library), tasteless as that idea is.
+ ac_test_CXXFLAGS="${CXXFLAGS+set}"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS=
+ AC_PROG_CXX_G
+ if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ elif test $ac_cv_prog_cxx_g = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-O2"
+ fi
+else
+ GXX=
+ test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
+fi
+])
+
+LIB_AC_PROG_CXX
+
+dnl version is pulled out to make it a bit easier to change using sed.
+version=0.0.7
+dnl Still use "libjava" here to placate dejagnu.
+AM_INIT_AUTOMAKE(libjava, $version)
+
+AC_CHECK_TOOL(AS, as)
+AC_CHECK_TOOL(AR, ar)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+
+AC_PROG_INSTALL
+
+AM_MAINTAINER_MODE
-LIBGCJ_CONFIGURE(.)
+AC_EXEEXT
+
+# configure.host sets the following important variables
+# libgcj_cflags - host specific C compiler flags
+# libgcj_cxxflags - host specific C++ compiler flags
+# libgcj_javaflags - host specific Java compiler flags
+
+libgcj_cflags=
+libgcj_cxxflags=
+libgcj_javaflags=
+
+. [$]{srcdir}/configure.host
+
+LIBGCJ_CFLAGS="[$]{libgcj_cflags}"
+LIBGCJ_CXXFLAGS="[$]{libgcj_cxxflags}"
+LIBGCJ_JAVAFLAGS="[$]{libgcj_javaflags}"
+AC_SUBST(LIBGCJ_CFLAGS)
+AC_SUBST(LIBGCJ_CXXFLAGS)
+AC_SUBST(LIBGCJ_JAVAFLAGS)
AM_CONFIG_HEADER(include/config.h gcj/libgcj-config.h)
@@ -347,7 +481,7 @@ AC_LINK_FILES(gnu/java/nio/channels/natFileChannel${FILE-${PLATFORM}}.cc, gnu/ja
case "${host}" in
*mingw*)
- SYSTEMSPEC="-lgdi32 -lwsock32 -lws2_32"
+ SYSTEMSPEC="-lgdi32 -lws2_32"
if test "${with_win32_nlsapi}" = "unicows"; then
SYSTEMSPEC="-lunicows $SYSTEMSPEC"
fi
@@ -605,10 +739,6 @@ AC_SUBST(HASH_SYNC_SPEC)
AM_CONDITIONAL(USING_GCC, test "$GCC" = yes)
-CANADIAN=no
-NULL_TARGET=no
-NATIVE=yes
-
# We're in the tree with gcc, and need to include some of its headers.
GCC_UNWIND_INCLUDE='-I$(libgcj_basedir)/../gcc'
@@ -617,7 +747,7 @@ changequote(,)dnl
gcc_version_trigger=${libgcj_basedir}/../gcc/version.c
gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([^\"]*\)\".*/\1/'`
gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
-tool_include_dir='$(libdir)/gcc/$(target_alias)/'${gcc_version}/include
+tool_include_dir='$(libdir)/gcc/$(target_noncanonical)/'${gcc_version}/include
changequote([,])dnl
AC_SUBST(tool_include_dir)
AC_SUBST(gcc_version)
@@ -890,11 +1020,11 @@ else
# Test for Gtk stuff, if asked for.
if test "$use_gtk_awt" = yes; then
- PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.2)
+ PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.4)
AC_SUBST(GTK_CFLAGS)
AC_SUBST(GTK_LIBS)
- PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.2 gthread-2.0 >= 2.2)
+ PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.4 gthread-2.0 >= 2.4)
AC_SUBST(GLIB_CFLAGS)
AC_SUBST(GLIB_LIBS)
@@ -918,6 +1048,8 @@ changequote(<<,>>)
changequote([,])
fi
+NATIVE=yes
+
# Which gcj do we use?
which_gcj=default
built_gcc_dir="`cd ${builddotdot}/../../gcc && ${PWDCMD-pwd}`"
@@ -932,7 +1064,7 @@ if test -n "${with_cross_host}"; then
;;
esac
if test -x "${built_gcc_dir}/gcj${cross_host_exeext}"; then
- if test x"$build_alias" = x"$with_cross_host"; then
+ if test x"$build_noncanonical" = x"$with_cross_host"; then
# Ordinary cross (host!=target and host=build)
which_gcj=built
else
@@ -959,27 +1091,32 @@ fi
case "${which_gcj}" in
built)
GCJ="$built_gcc_dir/gcj -B`${PWDCMD-pwd}`/ -B$built_gcc_dir/"
+ GCJH='$(MULTIBUILDTOP)../$(COMPPATH)/gcc/gcjh'
+ ZIP='$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/fastjar'
;;
cross)
- # See the comment in Makefile.am about CANADIAN being a misnomer
- CANADIAN=yes
- NULL_TARGET=no
if test "x${with_newlib}" = "xyes"; then
# FIXME (comment): Why is this needed?
GCC_UNWIND_INCLUDE=
- GCJ="${target_alias}-gcj"
+ GCJ="${target_noncanonical}-gcj"
else
- GCJ="${target_alias}-gcj -B`${PWDCMD-pwd}`/"
+ GCJ="${target_noncanonical}-gcj -B`${PWDCMD-pwd}`/"
fi
+ ZIP=jar
+ GCJH='$(target_noncanonical)-gcjh'
;;
path)
- # See the comment in Makefile.am about CANADIAN being a misnomer
- CANADIAN=yes
- NULL_TARGET=yes
GCJ="gcj -B`${PWDCMD-pwd}`/"
+ ## In this case, gcj is found outside the build tree. However, zip is
+ ## found in the build tree.
+ ZIP='$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/fastjar'
+ GCJH=gcjh
;;
esac
+AC_SUBST(GCJH)
+AC_SUBST(ZIP)
+
# Create it, so that compile/link tests don't fail
test -f libgcj.spec || touch libgcj.spec
@@ -1031,9 +1168,7 @@ AC_SUBST(CHECKREFSPEC)
AC_SUBST(EXCEPTIONSPEC)
AC_SUBST(IEEESPEC)
-AM_CONDITIONAL(CANADIAN, test "$CANADIAN" = yes)
-AM_CONDITIONAL(NULL_TARGET, test "$NULL_TARGET" = yes)
-AM_CONDITIONAL(NATIVE, test "$NATIVE" = yes || test "$NULL_TARGET" = yes)
+AM_CONDITIONAL(NATIVE, test "$NATIVE" = yes)
AM_CONDITIONAL(NEEDS_DATA_START, test "$NEEDS_DATA_START" = yes && test "$NATIVE" = yes)
AC_SUBST(GCC_UNWIND_INCLUDE)
@@ -1044,8 +1179,8 @@ case ${version_specific_libs} in
# Need the gcc compiler version to know where to install libraries
# and header files if --enable-version-specific-runtime-libs option
# is selected.
- includedir='${libdir}/gcc/${target_alias}/'$gcc_version/include/
- toolexecdir='$(libdir)/gcc/$(target_alias)'
+ includedir='${libdir}/gcc/${target_noncanonical}/'$gcc_version/include/
+ toolexecdir='$(libdir)/gcc/$(target_noncanonical)'
toolexecmainlibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
toolexeclibdir=$toolexecmainlibdir
;;
@@ -1053,10 +1188,10 @@ case ${version_specific_libs} in
if test -n "$with_cross_host" &&
test x"$with_cross_host" != x"no"; then
# Install a library built with a cross compiler in tooldir, not libdir.
- toolexecdir='$(exec_prefix)/$(target_alias)'
+ toolexecdir='$(exec_prefix)/$(target_noncanonical)'
toolexecmainlibdir='$(toolexecdir)/lib'
else
- toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+ toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
toolexecmainlibdir='$(libdir)'
fi
multi_os_directory=`$CC -print-multi-os-directory`
@@ -1177,6 +1312,9 @@ case "${host}" in
# SYSDEP_SOURCES=sysdep/ia64.c
# test -d sysdep || mkdir sysdep
# ;;
+ hppa*-*-linux*)
+ SIGNAL_HANDLER=include/pa-signal.h
+ ;;
ia64-*-linux*)
SIGNAL_HANDLER=include/dwarf2-signal.h
;;
@@ -1205,6 +1343,9 @@ case "${host}" in
mips*-*-linux*)
SIGNAL_HANDLER=include/mips-signal.h
;;
+ *-*-darwin*)
+ SIGNAL_HANDLER=include/darwin-signal.h
+ ;;
*)
SIGNAL_HANDLER=include/default-signal.h
;;
diff --git a/libjava/defineclass.cc b/libjava/defineclass.cc
index 26606815836..0648ad98287 100644
--- a/libjava/defineclass.cc
+++ b/libjava/defineclass.cc
@@ -336,6 +336,8 @@ _Jv_ClassReader::parse ()
// tell everyone we're done.
def->state = JV_STATE_LOADED;
+ if (gcj::verbose_class_flag)
+ fprintf (stderr, "[Loaded (bytecode) %s]\n", (const char*)(def->name->data));
def->notifyAll ();
}
diff --git a/libjava/gcj/Makefile.am b/libjava/gcj/Makefile.am
index e5b80e678d1..313ff6ad2fa 100644
--- a/libjava/gcj/Makefile.am
+++ b/libjava/gcj/Makefile.am
@@ -2,6 +2,9 @@
AUTOMAKE_OPTIONS = foreign
+# autoconf2.13's target_alias
+target_noncanonical = @target_noncanonical@
+
gcjdir = $(includedir)/gcj
gcj_HEADERS = array.h cni.h field.h javaprims.h method.h
diff --git a/libjava/gcj/Makefile.in b/libjava/gcj/Makefile.in
index 9a262ce62d2..2d39365b349 100644
--- a/libjava/gcj/Makefile.in
+++ b/libjava/gcj/Makefile.in
@@ -1,6 +1,6 @@
-# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
-# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -71,6 +71,7 @@ CAIRO_LIBS = @CAIRO_LIBS@
CC = @CC@
CHECKREFSPEC = @CHECKREFSPEC@
COMPPATH = @COMPPATH@
+CPP = @CPP@
CXX = @CXX@
CXXCPP = @CXXCPP@
DIRLTDL = @DIRLTDL@
@@ -84,27 +85,23 @@ GCDEPS = @GCDEPS@
GCINCS = @GCINCS@
GCJ = @GCJ@
GCJFLAGS = @GCJFLAGS@
+GCJH = @GCJH@
GCJVERSION = @GCJVERSION@
GCLIBS = @GCLIBS@
GCOBJS = @GCOBJS@
GCSPEC = @GCSPEC@
GCTESTSPEC = @GCTESTSPEC@
GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
-GLIB_MKENUMS = @GLIB_MKENUMS@
-GOBJECT_QUERY = @GOBJECT_QUERY@
+GNATBIND = @GNATBIND@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
-HAVE_LIB = @HAVE_LIB@
IEEESPEC = @IEEESPEC@
INCLTDL = @INCLTDL@
INTERPRETER = @INTERPRETER@
JC1GCSPEC = @JC1GCSPEC@
-LIB = @LIB@
LIBART_CFLAGS = @LIBART_CFLAGS@
-LIBART_CONFIG = @LIBART_CONFIG@
LIBART_LIBS = @LIBART_LIBS@
LIBFFI = @LIBFFI@
LIBFFIINCS = @LIBFFIINCS@
@@ -116,8 +113,8 @@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@
LIBICONV = @LIBICONV@
LIBLTDL = @LIBLTDL@
LIBTOOL = @LIBTOOL@
+LN = @LN@
LN_S = @LN_S@
-LTLIB = @LTLIB@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
@@ -143,14 +140,20 @@ THREADSPEC = @THREADSPEC@
TOOLKIT = @TOOLKIT@
VERSION = @VERSION@
ZINCS = @ZINCS@
+ZIP = @ZIP@
ZLIBS = @ZLIBS@
ZLIBSPEC = @ZLIBSPEC@
ZLIBTESTSPEC = @ZLIBTESTSPEC@
+build_subdir = @build_subdir@
+do_compare = @do_compare@
gcc_version = @gcc_version@
glibjava_CXX = @glibjava_CXX@
here = @here@
+host_subdir = @host_subdir@
libgcj_basedir = @libgcj_basedir@
mkinstalldirs = @mkinstalldirs@
+ncn_cv_ = @ncn_cv_@
+target_subdir = @target_subdir@
tool_include_dir = @tool_include_dir@
toolexecdir = @toolexecdir@
toolexeclibdir = @toolexeclibdir@
@@ -158,6 +161,9 @@ toolexecmainlibdir = @toolexecmainlibdir@
AUTOMAKE_OPTIONS = foreign
+# autoconf2.13's target_alias
+target_noncanonical = @target_noncanonical@
+
gcjdir = $(includedir)/gcj
gcj_HEADERS = array.h cni.h field.h javaprims.h method.h
@@ -260,7 +266,7 @@ TAGS: $(HEADERS) $(SOURCES) libgcj-config.h.in $(TAGS_DEPENDENCIES) $(LISP)
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)libgcj-config.h.in$$unique$(LISP)$$tags" \
- || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags libgcj-config.h.in $$unique $(LISP))
+ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags libgcj-config.h.in $$unique $(LISP) -o $$here/TAGS)
mostlyclean-tags:
diff --git a/libjava/gcj/field.h b/libjava/gcj/field.h
index 9279c832964..70c5901417b 100644
--- a/libjava/gcj/field.h
+++ b/libjava/gcj/field.h
@@ -39,7 +39,16 @@ struct _Jv_Field
union {
jint boffset; /* offset in bytes for instance field */
- void* addr; /* address of static field */
+ char* addr; /* address of static field */
+
+ jobject* object_addr; /* address of static object field... etc */
+ jbyte* byte_addr;
+ jshort* short_addr;
+ jchar* char_addr;
+ jint* int_addr;
+ jlong* long_addr;
+ jfloat* float_addr;
+ jdouble* double_addr;
} u;
#ifdef __cplusplus
diff --git a/libjava/gcj/javaprims.h b/libjava/gcj/javaprims.h
index 0cdd55071e0..9cf2741cd18 100644
--- a/libjava/gcj/javaprims.h
+++ b/libjava/gcj/javaprims.h
@@ -338,6 +338,7 @@ extern "Java"
class RandomAccess;
class RandomAccessSubList;
class ResourceBundle;
+ class ResourceBundle$BundleKey;
class Set;
class SimpleTimeZone;
class SortedMap;
diff --git a/libjava/gij.cc b/libjava/gij.cc
index 3b0683de03e..8c75fa6db7a 100644
--- a/libjava/gij.cc
+++ b/libjava/gij.cc
@@ -133,6 +133,8 @@ main (int argc, const char **argv)
// correct behavior.
_Jv_Jar_Class_Path = argv[++i];
}
+ else if (! strcmp (arg, "-verbose:class"))
+ gcj::verbose_class_flag = true;
else if (arg[1] == 'X')
{
if (arg[2] == '\0')
diff --git a/libjava/gnu/awt/xlib/XCanvasPeer.java b/libjava/gnu/awt/xlib/XCanvasPeer.java
index d8a00db9d0a..5daee59dcd7 100644
--- a/libjava/gnu/awt/xlib/XCanvasPeer.java
+++ b/libjava/gnu/awt/xlib/XCanvasPeer.java
@@ -210,11 +210,11 @@ public class XCanvasPeer implements CanvasPeer
}
public Image createImage(ImageProducer prod)
{
- throw new UnsupportedOperationException("FIXME, not implemented");
+ return new XOffScreenImage (config, window, prod, config.getColorModel());
}
public Image createImage(int width, int height)
{
- return new XOffScreenImage (config, window, width, height);
+ return new XOffScreenImage (config, window, width, height, config.getColorModel());
}
public void dispose()
{
diff --git a/libjava/gnu/awt/xlib/XOffScreenImage.java b/libjava/gnu/awt/xlib/XOffScreenImage.java
index 71791c1be5f..0ea6c1b3a0a 100644
--- a/libjava/gnu/awt/xlib/XOffScreenImage.java
+++ b/libjava/gnu/awt/xlib/XOffScreenImage.java
@@ -15,6 +15,7 @@ import java.awt.GraphicsConfiguration;
import java.awt.image.ColorModel;
import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer;
+import java.awt.image.ImageConsumer;
import java.util.Hashtable;
import gnu.awt.j2d.DirectRasterGraphics;
import gnu.awt.j2d.Graphics2DImpl;
@@ -23,6 +24,7 @@ import gnu.gcj.xlib.Drawable;
import gnu.gcj.xlib.Pixmap;
import gnu.gcj.xlib.Screen;
import gnu.gcj.xlib.Visual;
+import gnu.gcj.xlib.GC;
/** Image class for xlib off-screen buffers.
* The image is stored in a server-side pixmap for best performance.
@@ -34,12 +36,17 @@ import gnu.gcj.xlib.Visual;
* @author scott gilbertson <scottg@mantatest.com> <sgilbertson@cogeco.ca>
*/
public class XOffScreenImage extends Image
- implements IntegerGraphicsState.ScreenCoupledImage
+ implements IntegerGraphicsState.ScreenCoupledImage,
+ ImageConsumer
{
private Pixmap pixmap;
private XGraphicsConfiguration config;
private int width;
private int height;
+ private Drawable drawable;
+ private ImageProducer prod;
+ private GC gc;
+ private ColorModel pixmapColorModel;
/** Create a new XOffScreenImage
* @param config Graphics configuration, to compare against on-screen
@@ -47,13 +54,35 @@ public class XOffScreenImage extends Image
* @param drawable The drawable with which the image is compatible
* @param width The width of the image
* @param height The height of the image
+ * @param cm The ColorModel associated with drawable
*/
- XOffScreenImage (XGraphicsConfiguration config, Drawable drawable, int width, int height)
+ XOffScreenImage (XGraphicsConfiguration config, Drawable drawable, int width, int height, ColorModel cm)
{
this.config = config;
this.width = width;
this.height = height;
+ this.drawable = drawable;
+ pixmapColorModel = cm;
pixmap = new Pixmap (drawable, width, height, drawable.getDepth ());
+ gc = GC.create (pixmap);
+ }
+
+ /** Create a new XOffScreenImage and obtain image data from an ImageProducer
+ * @param config Graphics configuration, to compare against on-screen
+ * components and to create the appropriate Graphics
+ * @param drawable The drawable with which the image is compatible
+ * @param prod The source of image data for this image
+ * @param cm The ColorModel associated with drawable
+ */
+ XOffScreenImage (XGraphicsConfiguration config, Drawable drawable, ImageProducer prod, ColorModel cm)
+ {
+ this.config = config;
+ this.width = 0; // size will be overridden in a moment
+ this.height = 0;
+ this.drawable = drawable;
+ this.prod = prod;
+ pixmapColorModel = cm;
+ prod.startProduction (this);
}
/** Get the pixmap which contains this image
@@ -120,7 +149,10 @@ public class XOffScreenImage extends Image
*/
public ImageProducer getSource ()
{
- throw new UnsupportedOperationException ("getSource not supported");
+ if (prod == null)
+ throw new UnsupportedOperationException ("getSource not supported");
+ else
+ return prod;
}
/** Returns the width of the image, or -1 if it is unknown. If the
@@ -172,4 +204,77 @@ public class XOffScreenImage extends Image
{
return config;
}
+
+ public void imageComplete (int status)
+ {
+ }
+
+ public void setColorModel (ColorModel model)
+ {
+ }
+
+ public void setDimensions (int width, int height)
+ {
+ this.width = width;
+ this.height = height;
+ pixmap = new Pixmap (drawable, width, height, drawable.getDepth ());
+ gc = GC.create (pixmap);
+ }
+
+ public void setHints (int flags)
+ {
+ }
+
+ public void setPixels (int x, int y, int w, int h, ColorModel model, int[] pixels, int offset, int scansize)
+ {
+ int idx = 0;
+ float[] normalizedComponents = new float [4];
+ int[] unnormalizedComponents = { 0, 0, 0, 0xff };
+ normalizedComponents[3] = 1;
+ for (int yp=y; yp < (y + h); yp++)
+ {
+ for (int xp=x; xp < (x + w); xp++)
+ {
+ int p = (yp - y) * scansize + (xp - x) + offset;
+ // FIXME: there HAS to be a more efficient mechanism for color mapping
+ normalizedComponents[0] = (float)model.getRed (pixels[p]) / 255F;
+ normalizedComponents[1] = (float)model.getGreen (pixels[p]) / 255F;
+ normalizedComponents[2] = (float)model.getBlue (pixels[p]) / 255F;
+ pixmapColorModel.getUnnormalizedComponents (normalizedComponents, 0,
+ unnormalizedComponents, 0);
+ int pixelColor = pixmapColorModel.getDataElement (unnormalizedComponents, 0);
+ gc.setForeground (pixelColor);
+ gc.drawPoint (xp, yp);
+ }
+ }
+ }
+
+ public void setPixels (int x, int y, int w, int h, ColorModel model, byte[] pixels, int offset, int scansize)
+ {
+ int idx = 0;
+ float[] normalizedComponents = new float [4];
+ int[] unnormalizedComponents = { 0, 0, 0, 0xff };
+ normalizedComponents[3] = 1;
+ for (int yp=y; yp < (y + h); yp++)
+ {
+ for (int xp=x; xp < (x + w); xp++)
+ {
+ // FIXME: there HAS to be a more efficient mechanism for color mapping
+ int p = (yp - y) * scansize + (xp - x) + offset;
+ normalizedComponents[0] = (float)model.getRed (pixels[p]) / 255F;
+ normalizedComponents[1] = (float)model.getGreen (pixels[p]) / 255F;
+ normalizedComponents[2] = (float)model.getBlue (pixels[p]) / 255F;
+ pixmapColorModel.getUnnormalizedComponents (normalizedComponents, 0,
+ unnormalizedComponents, 0);
+ int pixelColor = pixmapColorModel.getDataElement (unnormalizedComponents, 0);
+ gc.setForeground (pixelColor);
+ gc.drawPoint (xp, yp);
+ }
+ }
+ }
+
+ public void setProperties (Hashtable props)
+ {
+ }
+
}
diff --git a/libjava/gnu/gcj/convert/UnicodeCharacterDatabase-3.0.0.html b/libjava/gnu/gcj/convert/UnicodeCharacterDatabase-3.0.0.html
deleted file mode 100644
index 113d311f01b..00000000000
--- a/libjava/gnu/gcj/convert/UnicodeCharacterDatabase-3.0.0.html
+++ /dev/null
@@ -1,345 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
-
- "http://www.w3.org/TR/REC-html40/loose.dtd">
-
-<html>
-
-
-
-<head>
-
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
-<meta http-equiv="Content-Language" content="en-us">
-
-<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
-
-<meta name="ProgId" content="FrontPage.Editor.Document">
-
-<link rel="stylesheet" href="http://www.unicode.org/unicode.css" type="text/css">
-
-<title>Unicode Character Database</title>
-
-</head>
-
-
-
-<body>
-
-
-
-<h1>UNICODE CHARACTER DATABASE<br>
-Version 3.0.0</h1>
-
-<table border="1" cellspacing="2" cellpadding="0" height="87" width="100%">
-
- <tr>
-
- <td valign="TOP" width="144">Revision</td>
-
- <td valign="TOP">3.0.0</td>
-
- </tr>
-
- <tr>
-
- <td valign="TOP" width="144">Authors</td>
-
- <td valign="TOP">Mark Davis and Ken Whistler</td>
-
- </tr>
-
- <tr>
-
- <td valign="TOP" width="144">Date</td>
-
- <td valign="TOP">1999-09-11</td>
-
- </tr>
-
- <tr>
-
- <td valign="TOP" width="144">This Version</td>
-
- <td valign="TOP"><a href="ftp://ftp.unicode.org/Public/3.0-Update/UnicodeCharacterDatabase-3.0.0.html">ftp://ftp.unicode.org/Public/3.0-Update/UnicodeCharacterDatabase-3.0.0.html</a></td>
-
- </tr>
-
- <tr>
-
- <td valign="TOP" width="144">Previous Version</td>
-
- <td valign="TOP">n/a</td>
-
- </tr>
-
- <tr>
-
- <td valign="TOP" width="144">Latest Version</td>
-
- <td valign="TOP"><a href="ftp://ftp.unicode.org/Public/3.0-Update/UnicodeCharacterDatabase-3.0.0.html">ftp://ftp.unicode.org/Public/3.0-Update/UnicodeCharacterDatabase-3.0.0.html</a></td>
-
- </tr>
-
-</table>
-
-<p align="center">Copyright © 1995-1999 Unicode, Inc. All Rights reserved.</p>
-
-<h2>Disclaimer</h2>
-
-<p>The Unicode Character Database is provided as is by Unicode, Inc. No claims
-
-are made as to fitness for any particular purpose. No warranties of any kind are
-
-expressed or implied. The recipient agrees to determine applicability of
-
-information provided. If this file has been purchased on magnetic or optical
-
-media from Unicode, Inc., the sole remedy for any claim will be exchange of
-
-defective media within 90 days of receipt.</p>
-
-<p>This disclaimer is applicable for all other data files accompanying the
-
-Unicode Character Database, some of which have been compiled by the Unicode
-
-Consortium, and some of which have been supplied by other sources.</p>
-
-<h2>Limitations on Rights to Redistribute This Data</h2>
-
-<p>Recipient is granted the right to make copies in any form for internal
-
-distribution and to freely use the information supplied in the creation of
-
-products supporting the Unicode<sup>TM</sup> Standard. The files in the Unicode
-
-Character Database can be redistributed to third parties or other organizations
-
-(whether for profit or not) as long as this notice and the disclaimer notice are
-
-retained. Information can be extracted from these files and used in
-
-documentation or programs, as long as there is an accompanying notice indicating
-
-the source.</p>
-
-<h2>Introduction</h2>
-
-<p>The Unicode Character Database is a set of files that define the Unicode
-
-character properties and internal mappings. For more information about character
-
-properties and mappings, see <i><a href="http://www.unicode.org/unicode/uni2book/u2.html">The
-
-Unicode Standard</a></i>.</p>
-
-<p>The Unicode Character Database has been updated to reflect Version 3.0 of the
-
-Unicode Standard, with many characters added to those published in Version 2.0.
-
-A number of corrections have also been made to case mappings or other errors in
-
-the database noted since the publication of Version 2.0. Normative bidirectional
-
-properties have also been modified to reflect decisions of the Unicode Technical
-
-Committee.</p>
-
-<p>For more information on versions of the Unicode Standard and how to reference
-
-them, see <a href="http://www.unicode.org/unicode/standard/versions/">http://www.unicode.org/unicode/standard/versions/</a>.</p>
-
-<h2>Conformance</h2>
-
-<p>Character properties may be either normative or informative. <i>Normative</i>
-
-means that implementations that claim conformance to the Unicode Standard (at a
-
-particular version) and which make use of a particular property or field must
-
-follow the specifications of the standard for that property or field in order to
-
-be conformant. The term <i>normative</i> when applied to a property or field of
-
-the Unicode Character Database, does <i>not</i> mean that the value of that
-
-field will never change. Corrections and extensions to the standard in the
-
-future may require minor changes to normative values, even though the Unicode
-
-Technical Committee strives to minimize such changes. An<i> informative </i>property
-
-or field is strongly recommended, but a conformant implementation is free to use
-
-or change such values as it may require while still being conformant to the
-
-standard. Particular implementations may choose to override the properties and
-
-mappings that are not normative. In that case, it is up to the implementer to
-
-establish a protocol to convey that information.</p>
-
-<h2>Files</h2>
-
-<p>The following summarizes the files in the Unicode Character Database. &nbsp;For
-
-more information about these files, see the referenced technical report or
-
-section of Unicode Standard, Version 3.0.</p>
-
-<p><b>UnicodeData.txt (Chapter 4)</b>
-
-<ul>
-
- <li>The main file in the Unicode Character Database.</li>
-
- <li>For detailed information on the format, see <a href="UnicodeData.html">UnicodeData.html</a>.
-
- This file also characterizes which properties are normative and which are
-
- informative.</li>
-
-</ul>
-
-<p><b>PropList.txt (Chapter 4)</b>
-
-<ul>
-
- <li>Additional informative properties list: <i>Alphabetic, Ideographic,</i>
-
- and <i>Mathematical</i>, among others.</li>
-
-</ul>
-
-<p><b>SpecialCasing.txt (Chapter 4)</b>
-
-<ul>
-
- <li>List of informative special casing properties, including one-to-many
-
- mappings such as SHARP S =&gt; &quot;SS&quot;, and locale-specific mappings,
-
- such as for Turkish <i>dotless i</i>.</li>
-
-</ul>
-
-<p><b>Blocks.txt (Chapter 14)</b>
-
-<ul>
-
- <li>List of normative block names.</li>
-
-</ul>
-
-<p><b>Jamo.txt (Chapter 4)</b>
-
-<ul>
-
- <li>List of normative Jamo short names, used in deriving HANGUL SYLLABLE names
-
- algorithmically.</li>
-
-</ul>
-
-<p><b>ArabicShaping.txt (Section 8.2)</b>
-
-<ul>
-
- <li>Basic Arabic and Syriac character shaping properties, such as initial,
-
- medial and final shapes. These properties are normative for minimal shaping
-
- of Arabic and Syriac. </li>
-
-</ul>
-
-<p><b>NamesList.txt (Chapter 14)</b>
-
-<ul>
-
- <li>This file duplicates some of the material in the UnicodeData file, and
-
- adds informative annotations uses in the character charts, as printed in the
-
- Unicode Standard. </li>
-
- <li><b>Note: </b>The information in NamesList.txt and Index.txt files matches
-
- the appropriate version of the book. Changes in the Unicode Character
-
- Database since then may not be reflected in these files, since they are
-
- primarily of archival interest.</li>
-
-</ul>
-
-<p><b>Index.txt (Chapter 14)</b>
-
-<ul>
-
- <li>Informative index to Unicode characters, as printed in the Unicode
-
- Standard</li>
-
- <li><b>Note: </b>The information in NamesList.txt and Index.txt files matches
-
- the appropriate version of the book. Changes in the Unicode Character
-
- Database since then may not be reflected in these files, since they are
-
- primarily of archival interest.</li>
-
-</ul>
-
-<p><b>CompositionExclusions.txt (<a href="http://www.unicode.org/unicode/reports/tr15/">UTR#15
-
-Unicode Normalization Forms</a>)</b>
-
-<ul>
-
- <li>Normative properties for normalization.</li>
-
-</ul>
-
-<p><b>LineBreak.txt (<a href="http://www.unicode.org/unicode/reports/tr14/">UTR
-
-#14: Line Breaking Properties</a>)</b>
-
-<ul>
-
- <li>Normative and informative properties for line breaking. To see which
-
- properties are informative and which are normative, consult UTR#14.</li>
-
-</ul>
-
-<p><b>EastAsianWidth.txt (<a href="http://www.unicode.org/unicode/reports/tr11/">UTR
-
-#11: East Asian Character Width</a>)</b>
-
-<ul>
-
- <li>Informative properties for determining the choice of wide vs. narrow
-
- glyphs in East Asian contexts.</li>
-
-</ul>
-
-<p><b>diffXvY.txt</b>
-
-<ul>
-
- <li>Mechanically-generated informative files containing accumulated
-
- differences between successive versions of UnicodeData.txt</li>
-
-</ul>
-
-
-
-</body>
-
-
-
-</html>
-
diff --git a/libjava/gnu/gcj/convert/UnicodeData-3.0.0.txt b/libjava/gnu/gcj/convert/UnicodeData-3.0.0.txt
deleted file mode 100644
index 6a54d3d74e9..00000000000
--- a/libjava/gnu/gcj/convert/UnicodeData-3.0.0.txt
+++ /dev/null
@@ -1,10617 +0,0 @@
-0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
-0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
-0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
-0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
-0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
-0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
-0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
-0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
-0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
-0009;<control>;Cc;0;S;;;;;N;HORIZONTAL TABULATION;;;;
-000A;<control>;Cc;0;B;;;;;N;LINE FEED;;;;
-000B;<control>;Cc;0;S;;;;;N;VERTICAL TABULATION;;;;
-000C;<control>;Cc;0;WS;;;;;N;FORM FEED;;;;
-000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN;;;;
-000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
-000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
-0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
-0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
-0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
-0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
-0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
-0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
-0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
-0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
-0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
-0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
-001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
-001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
-001C;<control>;Cc;0;B;;;;;N;FILE SEPARATOR;;;;
-001D;<control>;Cc;0;B;;;;;N;GROUP SEPARATOR;;;;
-001E;<control>;Cc;0;B;;;;;N;RECORD SEPARATOR;;;;
-001F;<control>;Cc;0;S;;;;;N;UNIT SEPARATOR;;;;
-0020;SPACE;Zs;0;WS;;;;;N;;;;;
-0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
-0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
-0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
-0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
-0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
-0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
-0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
-0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
-0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
-002A;ASTERISK;Po;0;ON;;;;;N;;;;;
-002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;;
-002C;COMMA;Po;0;CS;;;;;N;;;;;
-002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
-002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
-002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;;
-0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
-0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
-0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
-0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
-0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
-0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
-0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
-0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
-0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
-0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
-003A;COLON;Po;0;CS;;;;;N;;;;;
-003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
-003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
-003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
-003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
-003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
-0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
-0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
-0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
-0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
-0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
-0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
-0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
-0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
-0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
-0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
-004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
-004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
-004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
-004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
-004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
-004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
-0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
-0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
-0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
-0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
-0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
-0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
-0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
-0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
-0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
-0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
-005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
-005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
-005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
-005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
-005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
-005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
-0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
-0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
-0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
-0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
-0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
-0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
-0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
-0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
-0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
-0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
-006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
-006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
-006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
-006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
-006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
-006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
-0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
-0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
-0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
-0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
-0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
-0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
-0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
-0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
-0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
-0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
-007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
-007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
-007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
-007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
-007E;TILDE;Sm;0;ON;;;;;N;;;;;
-007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
-0080;<control>;Cc;0;BN;;;;;N;;;;;
-0081;<control>;Cc;0;BN;;;;;N;;;;;
-0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
-0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
-0084;<control>;Cc;0;BN;;;;;N;INDEX;;;;
-0085;<control>;Cc;0;B;;;;;N;NEXT LINE;;;;
-0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
-0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
-0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
-0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
-008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
-008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE DOWN;;;;
-008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE UP;;;;
-008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
-008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
-008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
-0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
-0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
-0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
-0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
-0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
-0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
-0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
-0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
-0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
-0099;<control>;Cc;0;BN;;;;;N;;;;;
-009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
-009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
-009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
-009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
-009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
-009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
-00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
-00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
-00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
-00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
-00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
-00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
-00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
-00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
-00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
-00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
-00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
-00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
-00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
-00AD;SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
-00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
-00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
-00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
-00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
-00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;2;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
-00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
-00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
-00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
-00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
-00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
-00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
-00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;1;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
-00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
-00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;;
-00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
-00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
-00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
-00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
-00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
-00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
-00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
-00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
-00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
-00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
-00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6;
-00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
-00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
-00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
-00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
-00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
-00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
-00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
-00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
-00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
-00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
-00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
-00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
-00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
-00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
-00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
-00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
-00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
-00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
-00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
-00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
-00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
-00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
-00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
-00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
-00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
-00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
-00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
-00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
-00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
-00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
-00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
-00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6
-00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
-00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
-00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
-00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
-00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
-00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
-00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
-00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
-00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
-00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
-00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
-00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
-00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
-00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
-00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
-00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
-00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
-00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
-00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
-00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
-00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
-00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
-00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
-00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
-00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
-0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
-0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
-0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
-0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
-0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
-0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
-0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
-0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
-0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
-0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
-010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
-010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
-010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
-010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
-010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
-010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
-0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
-0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
-0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
-0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
-0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
-0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
-0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
-0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
-0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
-0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
-011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
-011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
-011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
-011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
-011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
-011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
-0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
-0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
-0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
-0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
-0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
-0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
-0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
-0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
-0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
-0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
-012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
-012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
-012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
-012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
-012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
-012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
-0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
-0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
-0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
-0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
-0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
-0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
-0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
-0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
-0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
-0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
-013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
-013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
-013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
-013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
-013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
-013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
-0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
-0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
-0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
-0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
-0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
-0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
-0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
-0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
-0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
-0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
-014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
-014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
-014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
-014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
-014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
-014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
-0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
-0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
-0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
-0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
-0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
-0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
-0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
-0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
-0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
-0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
-015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
-015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
-015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
-015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
-015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F;
-015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E
-0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
-0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
-0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163;
-0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162
-0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
-0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
-0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
-0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
-0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
-0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
-016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
-016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
-016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
-016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
-016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
-016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
-0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
-0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
-0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
-0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
-0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
-0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
-0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
-0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
-0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
-0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
-017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
-017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
-017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
-017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
-017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
-017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
-0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;;
-0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
-0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
-0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
-0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
-0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
-0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
-0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
-0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
-0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256;
-018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
-018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
-018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
-018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
-018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
-018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
-0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
-0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
-0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
-0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
-0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
-0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6
-0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
-0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
-0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
-0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
-019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;;;
-019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
-019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
-019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
-019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;;;
-019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275;
-01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
-01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
-01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3;
-01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2
-01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
-01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
-01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;;;0280;
-01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
-01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
-01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
-01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
-01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
-01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
-01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
-01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
-01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
-01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
-01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
-01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
-01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
-01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
-01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
-01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
-01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
-01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
-01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
-01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
-01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
-01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
-01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
-01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
-01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
-01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
-01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
-01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
-01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
-01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
-01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;
-01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
-01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
-01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;
-01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
-01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
-01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;
-01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
-01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
-01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
-01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
-01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
-01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
-01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
-01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
-01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
-01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
-01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
-01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
-01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
-01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
-01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
-01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
-01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
-01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
-01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
-01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
-01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
-01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
-01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3;
-01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2
-01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
-01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
-01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
-01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
-01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
-01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
-01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
-01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
-01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
-01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
-01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
-01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
-01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
-01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
-01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;
-01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
-01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
-01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
-01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
-01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
-01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
-01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
-01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
-01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
-01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD;
-01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC
-01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
-01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
-0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
-0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
-0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
-0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
-0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
-0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
-0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
-0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
-0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
-0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
-020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
-020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
-020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
-020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
-020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
-020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
-0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
-0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
-0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
-0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
-0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
-0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
-0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
-0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
-0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
-0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
-021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
-021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
-021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
-021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
-021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
-021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
-0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;
-0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222
-0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;
-0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224
-0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;
-0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226
-0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;
-0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228
-022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;
-022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A
-022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;
-022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C
-022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;
-022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E
-0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;
-0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230
-0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;
-0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232
-0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;;
-0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;;
-0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
-0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
-0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
-0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
-0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
-0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
-0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
-0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
-025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
-025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
-025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
-025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
-025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
-025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
-0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
-0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
-0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
-0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
-0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
-0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
-0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
-0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
-0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
-0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
-026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
-026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
-026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
-026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
-026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
-0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
-0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;;
-0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
-0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
-0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
-0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
-0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
-0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
-0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
-0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
-027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
-027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
-027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
-027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;;
-027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
-027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
-0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;;01A6;;01A6
-0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
-0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
-0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
-0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
-0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
-0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
-0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
-0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
-0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;;
-028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
-028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
-028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;;
-028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
-028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
-028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
-0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
-0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
-0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
-0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
-0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
-0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
-0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
-0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
-0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
-0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
-029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
-029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
-029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
-029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
-029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
-029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
-02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
-02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
-02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
-02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
-02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
-02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
-02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
-02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
-02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
-02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;
-02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;
-02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;
-02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
-02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
-02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
-02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
-02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
-02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
-02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
-02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
-02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
-02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
-02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
-02B9;MODIFIER LETTER PRIME;Sk;0;ON;;;;;N;;;;;
-02BA;MODIFIER LETTER DOUBLE PRIME;Sk;0;ON;;;;;N;;;;;
-02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
-02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
-02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
-02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
-02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
-02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
-02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
-02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
-02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
-02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
-02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;;
-02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
-02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
-02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
-02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;;
-02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
-02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
-02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
-02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
-02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
-02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
-02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
-02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
-02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
-02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
-02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
-02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
-02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
-02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
-02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
-02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
-02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
-02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
-02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
-02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
-02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
-02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
-02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
-02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
-02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
-02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
-02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
-02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
-02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
-02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
-02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;;
-02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
-02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
-0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
-0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia;;;
-0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
-0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
-0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
-0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
-0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;;
-0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
-0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
-0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
-030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
-030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
-030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
-030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;Tonos;;;
-030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
-030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
-0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
-0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
-0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
-0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
-0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
-0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
-0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
-0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
-0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
-0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
-031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
-031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
-031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
-031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
-031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
-031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
-0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
-0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
-0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
-0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
-0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
-0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
-0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
-0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
-0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
-0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
-032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
-032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
-032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
-032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
-032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
-032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
-0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
-0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
-0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
-0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
-0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
-0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
-0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
-0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
-0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
-0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
-033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
-033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
-033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
-033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
-033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
-033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
-0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
-0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
-0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
-0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
-0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
-0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
-0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
-0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
-0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
-0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
-034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
-034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
-034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
-034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
-034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
-0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
-0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
-0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
-0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
-0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;;
-037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
-037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
-0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
-0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
-0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
-0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
-0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
-0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
-038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
-038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
-038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
-038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
-0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
-0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
-0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
-0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
-0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
-0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
-0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
-0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
-0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
-0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
-039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
-039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
-039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
-039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
-039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
-039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
-03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
-03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
-03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
-03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
-03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
-03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
-03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
-03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
-03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
-03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
-03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
-03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
-03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
-03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
-03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
-03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
-03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
-03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
-03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
-03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
-03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
-03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
-03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
-03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
-03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
-03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
-03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
-03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
-03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
-03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
-03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
-03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
-03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
-03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
-03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
-03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
-03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
-03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
-03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
-03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
-03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
-03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
-03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
-03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
-03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
-03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
-03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
-03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
-03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
-03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
-03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
-03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
-03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
-03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;;
-03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
-03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
-03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
-03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
-03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
-03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
-03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
-03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
-03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
-03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
-03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
-03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
-03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
-03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
-03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
-03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
-03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
-03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
-03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
-03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
-03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
-03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
-03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
-03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
-03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03A3;;03A3
-03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
-0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;
-0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
-0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
-0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
-0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
-0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
-0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
-0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
-0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
-0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
-040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
-040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
-040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
-040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;
-040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
-040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
-0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
-0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
-0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
-0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
-0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
-0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
-0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
-0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
-0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
-0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
-041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
-041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
-041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
-041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
-041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
-041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
-0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
-0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
-0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
-0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
-0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
-0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
-0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
-0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
-0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
-0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
-042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
-042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
-042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
-042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
-042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
-042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
-0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
-0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
-0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
-0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
-0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
-0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
-0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
-0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
-0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
-0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
-043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
-043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
-043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
-043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
-043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
-043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
-0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
-0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
-0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
-0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
-0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
-0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
-0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
-0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
-0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
-0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
-044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
-044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
-044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
-044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
-044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
-044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
-0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400
-0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
-0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
-0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
-0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
-0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
-0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
-0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
-0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
-0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
-045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
-045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
-045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
-045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D
-045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
-045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
-0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
-0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
-0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
-0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
-0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
-0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
-0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
-0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
-0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
-0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
-046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
-046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
-046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
-046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
-046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
-046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
-0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
-0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
-0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
-0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
-0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
-0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
-0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
-0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
-0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
-0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
-047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
-047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
-047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
-047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
-047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
-047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
-0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
-0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
-0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
-0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
-0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
-0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
-0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
-0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;
-0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
-048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
-048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
-048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
-048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
-0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
-0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
-0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
-0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
-0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
-0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
-0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
-0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
-0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
-0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
-049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
-049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
-049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
-049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
-049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
-049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
-04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
-04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
-04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
-04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
-04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
-04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
-04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
-04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
-04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
-04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
-04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
-04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
-04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
-04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
-04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
-04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
-04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
-04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
-04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
-04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
-04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
-04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
-04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
-04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
-04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
-04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
-04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
-04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
-04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
-04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
-04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
-04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
-04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;;
-04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
-04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
-04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
-04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
-04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
-04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
-04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
-04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
-04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
-04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
-04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
-04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
-04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
-04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
-04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
-04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
-04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
-04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
-04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
-04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
-04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
-04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
-04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
-04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
-04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
-04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
-04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
-04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
-04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
-04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
-04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
-04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
-04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
-04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
-04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
-04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
-04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
-04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
-04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
-04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
-04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
-04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
-04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
-04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
-04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
-04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
-04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
-04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
-0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
-0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
-0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
-0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
-0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
-0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
-0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
-0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
-0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
-053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
-053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
-053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
-053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
-053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
-053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
-0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
-0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
-0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
-0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
-0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
-0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
-0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
-0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
-0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
-0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
-054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
-054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
-054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
-054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
-054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
-054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
-0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
-0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
-0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
-0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
-0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
-0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
-0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
-0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
-055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
-055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
-055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
-055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
-055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
-055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
-0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
-0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
-0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
-0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
-0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
-0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
-0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
-0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
-0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
-056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
-056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
-056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
-056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
-056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
-056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
-0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
-0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
-0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
-0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
-0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
-0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
-0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
-0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
-0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
-0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
-057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
-057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
-057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
-057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
-057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
-057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
-0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
-0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
-0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
-0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
-0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
-0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
-0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
-0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
-0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
-058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
-0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
-0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
-0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
-0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
-0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
-0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;;
-0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
-0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;;
-0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
-059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
-059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
-059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
-059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
-059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
-059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
-05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
-05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
-05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;
-05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;
-05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;;
-05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;
-05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;
-05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;;
-05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;
-05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;;
-05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;
-05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;
-05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;
-05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;
-05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;
-05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
-05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
-05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
-05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
-05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
-05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
-05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
-05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
-05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
-05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
-05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
-05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;;
-05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;;
-05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
-05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
-05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;;
-05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
-05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
-05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;;
-05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;
-05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
-05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
-05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
-05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
-05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
-05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
-05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
-05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
-05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
-05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
-05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
-05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
-05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
-05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
-05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
-05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
-05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
-05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
-05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
-05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
-05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
-05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
-05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
-05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
-05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
-05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
-05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
-05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
-05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
-05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
-05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
-05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
-060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
-061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
-061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
-0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
-0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
-0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
-0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
-0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
-0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
-0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
-0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
-0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
-062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
-062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
-062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
-062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
-062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
-062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
-0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
-0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
-0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
-0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
-0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
-0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
-0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
-0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
-0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
-0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
-063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
-0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
-0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
-0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
-0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
-0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
-0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
-0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
-0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
-0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
-0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
-064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
-064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
-064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
-064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
-064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
-064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
-0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
-0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
-0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
-0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;
-0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;
-0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;
-0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
-0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
-0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
-0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
-0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
-0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
-0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
-0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
-0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
-0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
-066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
-066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
-066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
-066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
-0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
-0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
-0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
-0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
-0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
-0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
-0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
-0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
-0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
-0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
-067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
-067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
-067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
-067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
-067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
-067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
-0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
-0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
-0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
-0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
-0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
-0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
-0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
-0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
-0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
-0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
-068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
-068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
-068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
-068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
-068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
-0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
-0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
-0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
-0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
-0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
-0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
-0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
-0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
-0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
-069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
-06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
-06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
-06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
-06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
-06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
-06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
-06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
-06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
-06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
-06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
-06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
-06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
-06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
-06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
-06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
-06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
-06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
-06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
-06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
-06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
-06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
-06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
-06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
-06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
-06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
-06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
-06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
-06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
-06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
-06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
-06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
-06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
-06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
-06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
-06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;;
-06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
-06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
-06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
-06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
-06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
-06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
-06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
-06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
-06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
-06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
-06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
-06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
-06DD;ARABIC END OF AYAH;Me;0;NSM;;;;;N;;;;;
-06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
-06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
-06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
-06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
-06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
-06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
-06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
-06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
-06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
-06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
-06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
-06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
-06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
-06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
-06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
-06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
-06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
-06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
-06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
-06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
-06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
-06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
-06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
-06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
-06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
-06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
-06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;
-06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;
-0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;
-0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
-0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
-0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;
-0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;
-0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;
-0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
-0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
-0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
-0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
-070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;
-070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;
-070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;
-070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;
-070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;;
-0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;
-0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;
-0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;
-0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;
-0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;
-0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;
-0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;
-0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;
-0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;
-0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
-071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;
-071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;
-071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;
-071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;
-071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;
-071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;
-0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;
-0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;
-0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;
-0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;
-0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;
-0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;
-0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;
-0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;
-0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;
-0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;
-072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;
-072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;
-072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;
-0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;
-0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;
-0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;
-0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;
-0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;
-0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;
-0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
-0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;
-0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;
-0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;
-073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
-073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;
-073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;
-073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;
-073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;
-073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;
-0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;
-0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;
-0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;
-0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
-0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
-0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
-0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
-0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;
-0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;
-0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;
-074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;
-0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
-0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
-0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
-0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
-0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
-0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
-0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
-0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
-0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
-0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
-078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
-078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
-078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
-078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
-078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
-078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
-0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
-0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
-0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
-0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
-0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
-0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
-0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
-0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
-0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
-0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
-079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
-079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
-079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
-079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
-079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
-079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
-07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
-07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
-07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
-07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
-07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
-07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
-07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
-07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
-07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
-07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
-07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
-07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
-07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
-07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
-07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
-07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
-07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
-0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
-0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
-0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
-0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
-0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
-0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
-090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
-090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
-090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
-090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
-0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
-0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
-0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
-0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
-0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
-0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
-0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
-0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
-0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
-0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
-091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
-091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
-091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
-091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
-091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
-091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
-0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
-0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
-0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
-0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
-0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
-0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
-0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
-0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
-092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
-092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
-092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
-092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
-092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
-092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
-0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
-0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
-0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
-0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
-0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
-0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
-0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
-0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
-0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
-0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
-093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
-093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
-0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
-0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;
-0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
-0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
-094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
-094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
-094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
-094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
-0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;
-0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;
-0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
-0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
-0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
-0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
-095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
-095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
-095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
-095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
-095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
-095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
-0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
-0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
-0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
-0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
-0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
-0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
-0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
-0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
-0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
-0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
-098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
-098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
-0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
-0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
-0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
-0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
-0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
-0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
-0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
-0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
-099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
-099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
-099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
-099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
-099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
-099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
-09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
-09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
-09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
-09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
-09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
-09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
-09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
-09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
-09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
-09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
-09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
-09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
-09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
-09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
-09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
-09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;
-09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
-09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
-09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
-09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
-09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
-09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
-09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
-09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
-09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
-09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
-09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
-09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
-09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
-09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
-09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
-09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
-09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
-09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
-09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
-09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
-09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
-09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;;
-09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
-09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
-0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
-0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
-0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
-0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
-0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
-0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
-0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
-0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
-0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
-0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
-0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
-0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
-0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
-0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
-0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
-0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
-0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
-0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
-0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
-0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
-0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
-0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
-0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
-0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
-0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
-0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
-0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
-0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
-0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
-0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
-0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
-0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
-0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
-0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
-0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
-0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
-0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
-0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;
-0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
-0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;
-0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
-0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
-0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
-0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
-0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
-0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
-0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
-0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
-0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
-0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;
-0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
-0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;
-0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;
-0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
-0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
-0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
-0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
-0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
-0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
-0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
-0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
-0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
-0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
-0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
-0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
-0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
-0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
-0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
-0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
-0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
-0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
-0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
-0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
-0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
-0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
-0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
-0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
-0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
-0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
-0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
-0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
-0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
-0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
-0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
-0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
-0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
-0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
-0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
-0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
-0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
-0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
-0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
-0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
-0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
-0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
-0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
-0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
-0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
-0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
-0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
-0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
-0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
-0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
-0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
-0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
-0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
-0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
-0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
-0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
-0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
-0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
-0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
-0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
-0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
-0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
-0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
-0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
-0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
-0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
-0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
-0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
-0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
-0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
-0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
-0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
-0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
-0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
-0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
-0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
-0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
-0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
-0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
-0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
-0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
-0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
-0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
-0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
-0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
-0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
-0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
-0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
-0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
-0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
-0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
-0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
-0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
-0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
-0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
-0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
-0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
-0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
-0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
-0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
-0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
-0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
-0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
-0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
-0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
-0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;
-0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
-0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-0B83;TAMIL SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
-0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
-0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
-0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
-0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
-0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
-0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
-0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
-0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
-0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
-0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
-0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
-0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
-0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
-0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
-0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
-0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
-0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
-0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
-0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
-0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
-0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
-0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
-0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
-0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
-0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
-0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
-0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
-0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
-0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
-0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
-0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
-0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
-0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
-0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
-0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
-0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
-0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
-0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
-0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
-0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
-0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
-0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
-0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
-0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
-0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
-0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
-0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
-0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
-0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
-0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
-0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
-0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
-0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
-0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
-0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
-0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
-0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
-0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
-0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
-0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
-0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
-0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
-0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
-0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
-0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
-0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
-0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
-0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
-0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
-0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
-0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
-0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
-0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
-0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
-0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
-0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
-0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
-0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
-0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
-0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
-0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
-0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
-0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
-0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
-0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
-0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
-0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
-0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
-0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
-0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
-0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
-0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
-0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
-0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
-0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;
-0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
-0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
-0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
-0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;
-0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;
-0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
-0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
-0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
-0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
-0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
-0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
-0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
-0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
-0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
-0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
-0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
-0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
-0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
-0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
-0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
-0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
-0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
-0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
-0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
-0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
-0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
-0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
-0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
-0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
-0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
-0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
-0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
-0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
-0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
-0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
-0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
-0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
-0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
-0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
-0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
-0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
-0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
-0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
-0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
-0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
-0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
-0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
-0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
-0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
-0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
-0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0CBF;KANNADA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
-0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
-0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
-0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
-0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
-0CC6;KANNADA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
-0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
-0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
-0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
-0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
-0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
-0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
-0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
-0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
-0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
-0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
-0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
-0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
-0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
-0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
-0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
-0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
-0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
-0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
-0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
-0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
-0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
-0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
-0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
-0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
-0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
-0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
-0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
-0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
-0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
-0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
-0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
-0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
-0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
-0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
-0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
-0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
-0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
-0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
-0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
-0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
-0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
-0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
-0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
-0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
-0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
-0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
-0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
-0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
-0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
-0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
-0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
-0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
-0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
-0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
-0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
-0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
-0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
-0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
-0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
-0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
-0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
-0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
-0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
-0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
-0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
-0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
-0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
-0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
-0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
-0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
-0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
-0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
-0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
-0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
-0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
-0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
-0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
-0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
-0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
-0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
-0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
-0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
-0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
-0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
-0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
-0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
-0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
-0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
-0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
-0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
-0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
-0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
-0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
-0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
-0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
-0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
-0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
-0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
-0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
-0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
-0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
-0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
-0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
-0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
-0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
-0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
-0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
-0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
-0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
-0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
-0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
-0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
-0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
-0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
-0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
-0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
-0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
-0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
-0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
-0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
-0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
-0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
-0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
-0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
-0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
-0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
-0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
-0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
-0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
-0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
-0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
-0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
-0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
-0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
-0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
-0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
-0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
-0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
-0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
-0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
-0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
-0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
-0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
-0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
-0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
-0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
-0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
-0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
-0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
-0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
-0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
-0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
-0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
-0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
-0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
-0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
-0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
-0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
-0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
-0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
-0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
-0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
-0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
-0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
-0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
-0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
-0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
-0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
-0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
-0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
-0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
-0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
-0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
-0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
-0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
-0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
-0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
-0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
-0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
-0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
-0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
-0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
-0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
-0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
-0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
-0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
-0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
-0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
-0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
-0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
-0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
-0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
-0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
-0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
-0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
-0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
-0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
-0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
-0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
-0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
-0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
-0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
-0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
-0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
-0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
-0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
-0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
-0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
-0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
-0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
-0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
-0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
-0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
-0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
-0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
-0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
-0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
-0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
-0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
-0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
-0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
-0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
-0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
-0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
-0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
-0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
-0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
-0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
-0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
-0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
-0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
-0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
-0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
-0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
-0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
-0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
-0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
-0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
-0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
-0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
-0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
-0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
-0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
-0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
-0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
-0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
-0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
-0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
-0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
-0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
-0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
-0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
-0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
-0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
-0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
-0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
-0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
-0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
-0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
-0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
-0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
-0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;;
-0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
-0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
-0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
-0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;;
-0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
-0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
-0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;;
-0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;;
-0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;;
-0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;;
-0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
-0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
-0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;;
-0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
-0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
-0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;;
-0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
-0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
-0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
-0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;;
-0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;;
-0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
-0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
-0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
-0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
-0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
-0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
-0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;;N;;;;;
-0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;;N;;;;;
-0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;;N;;;;;
-0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;;N;;;;;
-0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;;N;;;;;
-0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;;N;;;;;
-0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;;N;;;;;
-0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;;N;;;;;
-0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;;N;;;;;
-0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;;N;;;;;
-0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
-0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;;
-0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
-0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;;
-0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
-0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;;
-0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;;
-0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
-0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;;
-0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;TIBETAN RIGHT BRACE;ang kang ye;;;
-0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;;
-0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;;
-0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
-0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
-0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
-0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
-0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
-0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
-0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
-0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
-0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
-0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
-0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
-0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
-0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
-0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
-0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
-0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
-0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
-0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
-0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
-0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
-0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
-0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
-0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
-0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
-0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
-0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
-0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
-0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
-0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
-0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
-0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
-0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
-0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
-0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;;
-0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
-0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
-0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
-0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
-0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
-0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
-0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
-0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;;
-0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
-0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
-0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
-0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
-0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
-0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
-0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
-0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
-0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
-0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
-0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
-0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
-0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
-0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;;
-0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;;
-0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
-0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
-0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;;
-0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;;
-0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
-0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
-0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;;
-0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;;
-0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
-0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
-0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
-0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
-0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
-0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
-0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
-0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
-0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
-0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
-0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
-0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
-0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
-0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
-0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
-0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
-0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
-0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
-0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
-0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
-0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
-0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
-0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
-0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
-0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
-0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
-0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
-0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
-0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
-0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
-0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
-0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
-0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;;
-0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
-0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
-0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
-0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;;
-0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;;
-0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
-0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
-0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
-0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
-0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
-0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
-0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
-0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;;
-0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;;
-0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;;
-0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;;
-0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;;
-0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
-0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
-0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;;
-0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;;
-0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;;
-0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;;
-0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;;
-0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;;
-0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;;
-0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;;
-0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;;
-0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;;
-0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;;
-0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;;;;
-1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;
-1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;
-1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;
-1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;
-1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;
-1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;
-1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;
-1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;
-1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;
-1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;
-100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;
-100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;
-100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;
-100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;
-100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;
-100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;
-1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;
-1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;
-1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;
-1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;
-1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;
-1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;
-1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;
-1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;
-1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;
-1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;
-101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;
-101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;
-101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;
-101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;
-101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;
-101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;
-1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;
-1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;
-1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;
-1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;
-1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;
-1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;
-1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;
-1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
-102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
-102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
-1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;
-1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;
-104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;
-104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;
-104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;
-104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;
-104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;
-1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;
-1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;
-1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
-1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
-1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
-10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;;
-10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;;
-10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;;
-10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;;
-10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;;
-10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;;
-10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;;
-10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;;
-10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;;
-10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;;
-10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;;
-10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;;
-10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;;
-10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;;
-10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;;
-10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;;
-10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;;
-10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
-10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
-10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
-10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
-10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
-10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
-10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
-10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
-10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
-10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
-10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
-10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
-10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
-10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
-10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
-10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
-10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
-10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
-10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
-10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
-10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
-10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
-10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
-10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
-10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
-10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
-10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
-10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
-10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
-10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
-10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
-10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
-10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
-10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
-10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
-10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
-10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
-10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
-10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
-10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
-1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
-1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
-1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
-1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
-1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;;
-1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;;
-1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
-1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
-1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;;
-1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
-110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
-110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
-110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
-110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;;
-110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
-110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
-1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
-1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
-1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
-1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
-1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
-1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
-1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;
-1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
-1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
-1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
-111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
-111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
-111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
-111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
-111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
-111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;
-1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
-1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
-1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
-1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
-1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
-1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;
-1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
-1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
-1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
-1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;
-112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
-112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
-112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;
-112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
-112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;
-112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
-1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
-1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
-1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
-1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
-1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;
-1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;
-1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
-1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
-1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;
-1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
-113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;
-113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
-113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
-113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
-113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
-113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
-1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
-1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
-1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;
-1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
-1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;
-1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;
-1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
-1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
-1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;
-1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;
-114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;
-114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;
-114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
-114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;
-114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
-114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
-1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
-1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
-1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;
-1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;
-1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
-1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
-1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
-1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
-1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;
-1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
-115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
-1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
-1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
-1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;
-1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
-1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;
-1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
-1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;
-1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
-1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;
-1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
-116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;
-116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;
-116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;
-116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
-116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
-116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;
-1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;
-1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;
-1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
-1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
-1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;
-1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
-1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;
-1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;
-1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;
-1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;
-117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;
-117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;
-117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;
-117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;
-117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;
-117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;
-1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;
-1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;
-1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;
-1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;
-1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;
-1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;
-1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;
-1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;
-1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;
-1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;
-118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;
-118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;
-118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;
-118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;
-118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;
-118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;
-1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;
-1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;
-1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;
-1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;
-1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;
-1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;
-1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;
-1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;
-1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;
-1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;
-119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;
-119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;
-119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;
-119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;
-119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
-119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;
-11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;
-11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;
-11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;
-11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
-11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
-11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;;
-11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
-11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;;
-11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;;
-11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
-11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;;
-11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;;
-11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;;
-11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;;
-11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;;
-11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;;
-11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;;
-11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;;
-11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
-11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
-11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;;
-11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
-11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
-11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;;
-11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
-11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
-11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
-11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
-11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
-11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
-11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;
-11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
-11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
-11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
-11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
-11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;
-11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;
-11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
-11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
-11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
-11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
-11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
-11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;
-11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
-11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
-11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
-11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
-11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
-11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
-11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;
-11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;
-11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
-11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;
-11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
-11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;
-11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
-11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
-11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;
-11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;
-11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;
-11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
-11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
-11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;
-11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
-11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
-11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
-11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
-11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
-11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
-11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
-11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
-11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
-11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
-11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
-11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;
-11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
-11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;
-11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
-11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
-11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
-11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;
-11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;
-11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;
-11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;
-11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
-1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;
-1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;
-1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;
-1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;
-1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
-1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;
-1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;
-1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;
-1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;
-120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;
-120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;
-120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
-120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;
-120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;
-120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;
-1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;
-1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;
-1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;
-1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;
-1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;
-1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;
-1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;
-1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;
-1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;
-1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;
-121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;
-121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;
-121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
-121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;
-121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;
-121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
-1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;
-1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;
-1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;
-1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;
-1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;
-1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;
-1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;
-1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;
-1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;
-1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;
-122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;
-122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;
-122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;
-122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;
-122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;
-122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
-1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;
-1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;
-1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;
-1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;
-1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
-1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;
-1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;
-1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
-1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
-1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
-123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
-123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;
-123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
-123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
-123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
-123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;
-1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;
-1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;
-1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;
-1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;
-1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;
-1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;
-1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;
-1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;
-124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;
-124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;
-124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;
-124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;
-1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;
-1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;
-1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;
-1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;
-1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;
-1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;
-1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;
-1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;
-125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;
-125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;
-125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;
-125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;
-1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;
-1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;
-1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;
-1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;
-1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
-1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;
-1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;
-1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
-1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;
-1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;
-126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;
-126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;
-126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
-126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;
-126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;
-126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;
-1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;
-1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;
-1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;
-1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;
-1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
-1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;
-1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;
-1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
-1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;
-1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;
-127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;
-127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;
-127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
-127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;
-127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;
-127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
-1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;
-1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;
-1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;
-1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;
-1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;
-1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;
-1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;
-1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;
-128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;
-128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;
-128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;
-128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;
-1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;
-1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;
-1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;
-1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;
-1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
-1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;
-1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;
-1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
-1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
-1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
-129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
-129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;
-129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
-129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
-129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
-129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;
-12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;
-12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;
-12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;
-12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;
-12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;
-12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;
-12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;
-12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;
-12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;
-12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;
-12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;
-12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;
-12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
-12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;
-12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;
-12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
-12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
-12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;
-12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;
-12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
-12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;
-12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;
-12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;
-12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;
-12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;
-12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;
-12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;
-12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;
-12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;
-12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;
-12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;
-12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;
-12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;
-12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;
-12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;
-12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;
-12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
-12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;
-12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;
-12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;
-12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;
-12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;
-12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;
-12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;
-12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;
-12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;
-12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
-12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
-12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
-12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;
-12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
-12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
-12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
-12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;
-12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
-12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
-12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
-12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;
-12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
-12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
-12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
-12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;
-12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;
-12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;
-12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;
-12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;
-12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
-12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;
-12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;
-12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;
-12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;
-12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;
-12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;
-12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
-12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;
-12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;
-12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
-12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
-12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
-12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
-12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;
-12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;
-12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
-12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
-12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
-1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;
-1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;
-1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;
-1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;
-1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
-1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;
-1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;
-1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
-1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;
-1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;
-130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;
-130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;
-130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
-130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;
-130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;
-1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
-1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
-1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;
-1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;
-1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
-1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
-1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
-131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
-131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;
-131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;
-131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
-131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
-1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;
-1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;
-1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;
-1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;
-1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
-1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;
-1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;
-1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;
-1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
-1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
-132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;
-132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;
-132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;
-132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
-132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
-132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;
-1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;
-1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;
-1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;
-1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;
-1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;
-1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;
-1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;
-1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;
-1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;
-1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;
-133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;
-133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;
-133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;
-133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;
-133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;
-133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;
-1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;
-1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;
-1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;
-1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;
-1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;
-1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;
-1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;
-1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;
-1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;
-134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;
-134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;
-134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
-134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;
-134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;
-134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;
-1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;
-1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;
-1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;
-1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;
-1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
-1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;
-1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;
-1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
-1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
-1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
-135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;
-1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;
-1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;
-1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;
-1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;
-1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;
-1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;
-1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;
-1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
-1369;ETHIOPIC DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-136A;ETHIOPIC DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-136B;ETHIOPIC DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-136E;ETHIOPIC DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-1371;ETHIOPIC DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;
-1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;
-1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;
-1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;
-1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;
-1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;
-1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
-1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
-137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;
-137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;
-137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
-13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
-13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
-13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
-13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
-13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
-13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
-13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
-13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
-13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
-13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
-13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
-13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
-13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
-13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
-13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
-13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
-13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
-13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
-13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
-13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
-13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
-13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
-13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
-13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
-13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
-13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
-13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
-13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
-13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
-13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
-13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
-13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
-13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
-13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
-13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
-13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
-13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
-13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
-13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
-13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
-13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
-13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
-13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
-13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
-13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
-13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
-13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
-13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
-13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
-13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
-13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
-13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
-13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
-13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
-13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
-13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
-13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
-13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
-13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
-13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
-13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
-13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
-13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
-13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
-13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
-13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
-13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
-13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
-13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
-13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
-13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
-13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
-13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
-13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
-13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
-13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
-13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
-13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
-13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
-13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
-13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
-13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
-13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
-13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
-13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
-1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
-1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
-1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
-1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
-1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
-1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
-1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
-1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
-1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
-140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
-140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
-140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
-140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
-140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
-140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
-1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
-1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
-1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
-1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
-1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
-1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
-1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
-1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
-1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
-1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
-141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
-141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
-141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
-141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
-141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
-141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
-1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
-1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
-1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
-1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
-1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
-1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
-1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
-1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
-1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
-1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
-142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
-142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
-142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
-142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
-142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
-142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
-1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
-1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
-1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
-1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
-1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
-1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
-1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
-1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
-1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
-1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
-143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
-143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
-143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
-143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
-143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
-143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
-1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
-1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
-1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
-1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
-1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
-1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
-1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
-1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
-1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
-1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
-144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
-144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
-144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
-144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
-144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
-144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
-1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
-1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
-1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
-1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
-1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
-1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
-1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
-1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
-1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
-1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
-145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
-145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
-145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
-145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
-145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
-145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
-1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
-1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
-1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
-1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
-1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
-1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
-1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
-1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
-1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
-1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
-146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
-146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
-146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
-146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
-146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
-146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
-1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
-1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
-1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
-1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
-1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
-1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
-1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
-1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
-1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
-1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
-147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
-147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
-147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
-147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
-147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
-147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
-1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
-1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
-1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
-1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
-1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
-1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
-1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
-1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
-1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
-1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
-148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
-148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
-148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
-148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
-148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
-148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
-1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
-1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
-1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
-1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
-1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
-1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
-1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
-1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
-1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
-1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
-149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
-149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
-149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
-149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
-149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
-149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
-14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
-14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
-14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
-14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
-14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
-14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
-14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
-14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
-14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
-14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
-14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
-14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
-14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
-14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
-14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
-14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
-14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
-14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
-14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
-14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
-14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
-14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
-14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
-14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
-14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
-14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
-14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
-14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
-14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
-14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
-14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
-14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
-14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
-14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
-14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
-14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
-14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
-14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
-14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
-14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
-14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
-14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
-14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
-14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
-14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
-14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
-14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
-14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
-14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
-14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
-14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
-14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
-14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
-14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
-14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
-14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
-14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
-14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
-14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
-14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
-14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
-14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
-14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
-14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
-14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
-14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
-14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
-14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
-14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
-14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
-14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
-14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
-14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
-14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
-14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
-14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
-14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
-14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
-14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
-14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
-14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
-14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
-14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
-14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
-14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
-14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
-14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
-14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
-14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
-14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
-14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
-14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
-14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
-14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
-14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
-14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
-1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
-1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
-1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
-1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
-1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
-1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
-1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
-1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
-1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
-1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
-150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
-150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
-150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
-150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
-150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
-150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
-1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
-1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
-1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
-1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
-1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
-1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
-1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
-1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
-1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
-1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
-151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
-151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
-151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
-151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
-151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
-151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
-1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
-1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
-1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
-1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
-1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
-1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
-1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
-1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
-1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
-1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
-152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
-152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
-152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
-152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
-152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
-152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
-1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
-1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
-1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
-1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
-1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
-1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
-1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
-1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
-1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
-1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
-153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
-153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
-153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
-153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
-153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
-153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
-1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
-1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
-1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
-1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
-1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
-1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
-1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
-1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
-1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
-1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
-154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
-154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
-154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
-154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
-154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
-154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
-1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
-1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
-1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
-1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
-1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
-1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
-1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
-1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
-1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
-1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
-155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
-155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
-155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
-155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
-155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
-155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
-1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
-1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
-1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
-1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
-1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
-1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
-1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
-1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
-1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
-1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
-156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
-156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
-156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
-156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
-156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
-156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
-1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
-1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
-1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
-1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
-1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
-1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
-1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
-1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
-1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
-1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
-157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
-157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
-157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
-157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
-157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
-157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
-1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
-1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
-1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
-1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
-1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
-1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
-1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
-1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
-1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
-1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
-158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
-158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
-158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
-158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
-158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
-158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
-1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
-1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
-1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
-1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
-1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
-1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
-1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
-1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
-1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
-1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
-159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
-159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
-159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
-159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
-159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
-159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
-15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
-15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
-15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
-15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
-15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
-15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
-15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
-15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
-15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
-15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
-15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
-15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
-15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
-15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
-15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
-15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
-15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
-15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
-15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
-15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
-15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
-15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
-15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
-15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
-15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
-15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
-15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
-15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
-15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
-15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
-15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
-15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
-15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
-15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
-15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
-15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
-15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
-15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
-15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
-15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
-15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
-15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
-15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
-15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
-15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
-15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
-15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
-15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
-15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
-15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
-15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
-15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
-15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
-15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
-15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
-15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
-15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
-15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
-15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
-15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
-15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
-15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
-15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
-15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
-15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
-15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
-15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
-15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
-15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
-15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
-15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
-15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
-15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
-15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
-15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
-15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
-15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
-15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
-15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
-15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
-15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
-15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
-15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
-15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
-15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
-15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
-15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
-15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
-15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
-15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
-15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
-15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
-15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
-15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
-15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
-15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
-1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
-1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
-1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
-1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
-1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
-1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
-1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
-1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
-1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
-1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
-160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
-160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
-160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
-160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
-160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
-160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
-1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
-1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
-1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
-1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
-1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
-1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
-1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
-1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
-1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
-1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
-161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
-161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
-161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
-161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
-161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
-161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
-1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
-1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
-1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
-1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
-1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
-1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
-1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
-1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
-1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
-1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
-162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
-162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
-162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
-162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
-162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
-162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
-1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
-1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
-1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
-1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
-1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
-1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
-1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
-1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
-1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
-1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
-163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
-163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
-163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
-163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
-163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
-163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
-1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
-1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
-1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
-1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
-1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
-1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
-1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
-1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
-1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
-1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
-164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
-164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
-164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
-164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
-164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
-164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
-1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
-1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
-1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
-1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
-1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
-1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
-1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
-1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
-1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
-1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
-165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
-165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
-165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
-165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
-165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
-165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
-1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
-1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
-1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
-1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
-1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
-1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
-1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
-1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
-1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
-1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
-166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
-166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
-166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
-166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
-166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
-166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
-1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
-1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
-1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
-1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
-1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
-1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
-1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
-1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
-1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
-1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
-1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
-1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
-1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
-1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
-1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
-1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
-1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
-168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
-168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
-168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
-168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
-168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
-168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
-1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
-1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
-1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
-1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
-1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
-1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
-1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
-1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
-1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
-1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
-169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
-169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;N;;;;;
-169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;;
-16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
-16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
-16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
-16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
-16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
-16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
-16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
-16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
-16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
-16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
-16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
-16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
-16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
-16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
-16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
-16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
-16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
-16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
-16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
-16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
-16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
-16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
-16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
-16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
-16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
-16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
-16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
-16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
-16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
-16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
-16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
-16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
-16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
-16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
-16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
-16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
-16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
-16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
-16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
-16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
-16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
-16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
-16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
-16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
-16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
-16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
-16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
-16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
-16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
-16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
-16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
-16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
-16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
-16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
-16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
-16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
-16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
-16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
-16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
-16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
-16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
-16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
-16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
-16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
-16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
-16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
-16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
-16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
-16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
-16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
-16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
-16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
-16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
-16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
-16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
-16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
-16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
-16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
-16EE;RUNIC ARLAUG SYMBOL;No;0;L;;;;17;N;;golden number 17;;;
-16EF;RUNIC TVIMADUR SYMBOL;No;0;L;;;;18;N;;golden number 18;;;
-16F0;RUNIC BELGTHOR SYMBOL;No;0;L;;;;19;N;;golden number 19;;;
-1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
-1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
-1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
-1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
-1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
-1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
-1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
-1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
-1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
-1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
-178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
-178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
-178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
-178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
-178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
-178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
-1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
-1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
-1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
-1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
-1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
-1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
-1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
-1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
-1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
-1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
-179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
-179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
-179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
-179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
-179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
-179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
-17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
-17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
-17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
-17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;;
-17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;;
-17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
-17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
-17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
-17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
-17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
-17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
-17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
-17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
-17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
-17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
-17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
-17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
-17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
-17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
-17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
-17B4;KHMER VOWEL INHERENT AQ;Mc;0;L;;;;;N;;;;;
-17B5;KHMER VOWEL INHERENT AA;Mc;0;L;;;;;N;;;;;
-17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
-17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
-17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
-17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
-17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
-17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
-17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
-17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
-17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
-17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
-17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
-17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
-17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
-17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
-17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
-17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
-17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
-17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
-17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
-17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
-17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
-17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
-17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;;
-17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
-17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
-17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
-17D7;KHMER SIGN LEK TOO;Po;0;L;;;;;N;;;;;
-17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;;
-17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
-17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
-17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
-17DC;KHMER SIGN AVAKRAHASANYA;Po;0;L;;;;;N;;;;;
-17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
-1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
-1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
-1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
-1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
-1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
-1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
-1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
-1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
-1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
-180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
-180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Cf;0;BN;;;;;N;;;;;
-180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Cf;0;BN;;;;;N;;;;;
-180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Cf;0;BN;;;;;N;;;;;
-180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;;
-1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;
-1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;
-1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;
-1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;
-1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;
-1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;
-1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;
-1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;
-1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;
-1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;
-182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;
-182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;
-182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;
-182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;
-182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;
-182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;
-1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;
-1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;
-1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;
-1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;
-1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;
-1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;
-1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;
-1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;
-1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;
-1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;
-183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;
-183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;
-183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;
-183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;
-183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;
-183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;
-1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;
-1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;
-1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;
-1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;
-1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;
-1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;
-1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;
-1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;
-1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;
-1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;
-184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;
-184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;
-184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;
-184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;
-184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;
-184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;
-1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;
-1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;
-1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;
-1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;
-1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;
-1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;
-1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;
-1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;
-1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;
-1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;
-185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;
-185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;
-185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;
-185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;
-185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;
-185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;
-1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;
-1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;
-1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;
-1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;
-1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;
-1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;
-1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;
-1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;
-1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;
-1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;
-186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;
-186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;
-186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;
-186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;
-186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;
-186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;
-1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;
-1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;
-1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;
-1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;
-1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;
-1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
-1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
-1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
-1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
-1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
-1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
-1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
-1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
-1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
-1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
-1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
-1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
-1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
-188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;
-188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;
-188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;
-188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;
-188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;
-188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;
-1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;
-1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;
-1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;
-1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;
-1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;
-1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
-1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;
-1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;
-1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;
-1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
-189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;
-189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;
-189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;
-189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;
-189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;
-189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;
-18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;
-18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;
-18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;
-18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;
-18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
-18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;
-18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;
-18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;
-18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;
-18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;
-1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
-1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
-1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
-1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
-1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
-1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
-1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
-1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
-1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
-1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
-1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
-1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
-1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
-1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
-1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
-1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
-1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
-1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
-1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
-1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
-1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
-1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
-1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
-1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
-1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
-1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
-1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
-1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
-1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;
-1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C
-1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
-1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
-1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
-1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
-1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
-1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
-1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
-1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
-1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
-1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
-1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
-1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
-1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
-1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
-1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
-1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
-1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
-1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
-1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
-1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
-1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
-1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
-1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
-1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
-1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
-1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
-1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
-1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
-1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
-1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
-1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
-1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
-1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
-1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
-1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
-1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
-1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
-1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
-1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
-1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
-1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
-1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
-1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
-1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
-1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
-1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
-1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
-1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
-1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
-1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
-1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
-1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
-1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
-1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
-1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
-1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
-1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
-1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
-1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
-1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
-1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
-1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
-1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
-1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
-1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
-1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
-1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
-1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
-1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
-1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
-1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
-1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
-1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
-1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
-1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
-1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
-1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
-1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
-1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
-1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
-1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
-1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
-1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
-1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
-1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
-1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
-1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
-1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
-1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
-1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
-1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
-1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
-1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
-1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
-1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
-1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
-1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
-1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
-1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
-1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
-1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
-1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
-1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
-1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
-1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
-1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
-1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
-1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
-1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
-1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
-1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
-1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
-1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
-1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
-1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
-1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
-1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
-1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
-1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
-1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
-1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
-1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
-1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
-1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
-1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
-1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
-1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
-1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
-1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
-1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
-1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
-1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
-1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
-1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
-1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
-1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
-1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
-1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
-1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;
-1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC
-1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
-1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
-1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
-1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
-1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
-1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
-1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
-1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
-1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;
-1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6
-1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
-1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
-1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
-1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
-1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
-1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
-1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
-1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
-1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
-1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
-1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
-1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
-1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
-1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
-1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;
-1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6
-1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
-1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
-1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
-1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
-1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
-1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
-1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
-1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
-1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
-1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
-1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
-1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
-1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
-1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
-1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
-1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
-1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;
-1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8
-1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
-1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
-1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
-1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
-1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
-1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
-1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
-1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
-1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
-1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
-1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
-1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
-1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
-1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
-1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
-1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
-1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
-1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
-1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
-1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
-1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
-1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
-1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
-1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
-1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
-1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
-1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
-1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
-1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
-1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
-1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
-1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
-1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
-1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
-1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
-1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
-1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
-1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
-1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
-1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
-1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
-1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
-1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
-1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
-1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
-1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
-1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
-1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
-1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
-1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
-1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
-1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
-1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
-1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
-1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
-1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
-1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
-1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
-1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
-1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
-1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
-1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
-1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
-1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
-1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
-1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
-1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
-1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
-1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
-1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
-1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
-1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
-1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
-1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
-1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
-1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
-1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
-1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
-1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
-1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
-1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
-1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
-1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
-1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
-1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
-1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
-1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
-1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
-1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
-1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
-1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
-1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
-1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
-1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
-1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
-1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
-1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
-1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
-1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
-1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
-1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
-1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
-1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
-1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
-1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
-1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
-1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
-1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
-1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
-1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
-1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
-1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
-1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
-1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
-1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
-1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
-1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
-1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
-1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
-1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
-1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
-1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
-1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
-1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
-1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
-1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
-1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
-1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
-1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
-1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
-1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
-1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
-1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
-1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
-1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
-1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
-1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
-1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
-1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
-1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
-1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
-1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
-1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
-1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
-1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
-1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
-1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
-1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
-1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
-1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
-1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
-1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
-1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
-1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
-1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;
-1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;
-1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;
-1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;
-1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;
-1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;
-1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;
-1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;
-1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
-1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
-1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
-1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
-1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
-1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
-1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
-1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
-1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;
-1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;
-1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;
-1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;
-1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;
-1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;
-1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;
-1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;
-1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
-1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
-1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
-1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
-1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
-1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
-1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
-1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
-1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;
-1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;
-1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;
-1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;
-1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;
-1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;
-1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;
-1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;
-1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
-1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
-1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
-1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
-1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
-1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
-1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
-1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
-1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
-1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
-1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
-1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;
-1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
-1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
-1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
-1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
-1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
-1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
-1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
-1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
-1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
-1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
-1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
-1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
-1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
-1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
-1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;
-1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
-1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
-1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
-1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
-1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
-1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
-1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
-1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
-1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
-1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
-1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
-1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
-1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
-1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
-1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
-1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
-1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
-1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
-1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
-1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
-1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
-1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
-1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
-1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
-1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
-1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
-1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
-1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
-1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
-1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
-1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
-1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
-1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
-1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
-1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
-1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
-1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
-1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
-1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
-1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
-1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
-1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;
-1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
-1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
-2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
-2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
-2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
-2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-200B;ZERO WIDTH SPACE;Zs;0;BN;;;;;N;;;;;
-200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
-200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
-200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
-200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
-2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
-2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
-2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
-2013;EN DASH;Pd;0;ON;;;;;N;;;;;
-2014;EM DASH;Pd;0;ON;;;;;N;;;;;
-2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
-2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
-2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
-2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
-2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
-201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
-201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
-201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
-201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
-201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
-201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
-2020;DAGGER;Po;0;ON;;;;;N;;;;;
-2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
-2022;BULLET;Po;0;ON;;;;;N;;;;;
-2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
-2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
-2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
-2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
-2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
-2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;
-2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
-202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;
-202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;
-202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;
-202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;
-202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;
-202F;NARROW NO-BREAK SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
-2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
-2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
-2032;PRIME;Po;0;ET;;;;;N;;;;;
-2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
-2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
-2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
-2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
-2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
-2038;CARET;Po;0;ON;;;;;N;;;;;
-2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
-203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
-203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
-203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
-203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
-203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
-203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
-2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
-2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
-2042;ASTERISM;Po;0;ON;;;;;N;;;;;
-2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
-2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;;
-2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
-2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
-2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
-2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
-204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
-204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
-204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
-204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
-206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
-206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
-206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
-206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
-206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
-206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
-2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
-2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
-2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
-2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
-2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
-2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
-2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
-207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
-207B;SUPERSCRIPT MINUS;Sm;0;ET;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
-207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
-207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
-207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
-207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
-2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;0;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
-2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
-2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
-2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
-2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
-2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
-2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
-2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
-2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
-2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
-208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
-208B;SUBSCRIPT MINUS;Sm;0;ET;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
-208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
-208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
-208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
-20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
-20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
-20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
-20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
-20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
-20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
-20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
-20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
-20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
-20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
-20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
-20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
-20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
-20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
-20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
-20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
-20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
-20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
-20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
-20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
-20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
-20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
-20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
-20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
-20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
-20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
-20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
-20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
-20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
-20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
-20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
-20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
-20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
-20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
-20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
-20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
-2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
-2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
-2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
-2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
-2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
-2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
-2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
-2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
-2108;SCRUPLE;So;0;ON;;;;;N;;;;;
-2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
-210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
-210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
-210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
-210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
-210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
-2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
-2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
-2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
-2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
-2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
-2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
-2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
-2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
-2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
-211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
-211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
-211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
-211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
-211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
-211F;RESPONSE;So;0;ON;;;;;N;;;;;
-2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
-2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
-2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
-2123;VERSICLE;So;0;ON;;;;;N;;;;;
-2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
-2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
-2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
-2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
-2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
-2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
-212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
-212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
-212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
-212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
-212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
-212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
-2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
-2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
-2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
-2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
-2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
-2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
-2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
-2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
-213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
-2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
-2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
-2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
-2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
-2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
-2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
-2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
-215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
-215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
-215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
-215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
-215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
-215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
-2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
-2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
-2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
-2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
-2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
-2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
-2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
-2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
-2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
-2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
-216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
-216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
-216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
-216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
-216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
-216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
-2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
-2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
-2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
-2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
-2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
-2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
-2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
-2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
-2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
-2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
-217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
-217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
-217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
-217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
-217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
-217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
-2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
-2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
-2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
-2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Nl;0;L;;;;;N;;;;;
-2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
-2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
-2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
-2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
-2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
-2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
-2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
-2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
-2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
-2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
-219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;
-219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;
-219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
-219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
-219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
-219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
-21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
-21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
-21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
-21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
-21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
-21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
-21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
-21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
-21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
-21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
-21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
-21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
-21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
-21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
-21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;
-21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
-21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
-21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
-21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
-21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
-21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
-21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
-21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
-21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
-21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
-21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
-21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
-21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
-21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
-21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
-21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
-21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
-21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
-21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
-21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
-21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
-21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
-21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
-21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
-21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
-21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
-21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
-21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
-21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
-21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
-21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
-21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;
-21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
-21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
-21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
-21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
-21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
-21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
-21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
-21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
-21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
-21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
-21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
-21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
-21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
-21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
-21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
-21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
-21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
-21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
-21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
-21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
-21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
-21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
-21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
-21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
-21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
-21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
-21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
-21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
-21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
-21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
-21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;
-21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;
-21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
-21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;
-21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
-21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
-21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;
-2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
-2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
-2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
-2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
-2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
-2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
-2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
-2207;NABLA;Sm;0;ON;;;;;N;;;;;
-2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
-2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
-220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
-220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
-220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
-220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
-220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
-220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
-2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
-2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
-2212;MINUS SIGN;Sm;0;ET;;;;;N;;;;;
-2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
-2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
-2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
-2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
-2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
-2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
-2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
-221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
-221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
-221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
-221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
-221E;INFINITY;Sm;0;ON;;;;;N;;;;;
-221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
-2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
-2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
-2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
-2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
-2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
-2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
-2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
-2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
-222A;UNION;Sm;0;ON;;;;;N;;;;;
-222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
-222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
-222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
-2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
-2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
-2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
-2236;RATIO;Sm;0;ON;;;;;N;;;;;
-2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
-2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
-2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
-223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
-223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
-223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
-223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;;
-223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
-223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
-2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
-2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
-2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
-2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
-2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
-2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
-224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
-224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
-224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
-224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
-2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
-2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
-2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
-2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
-2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
-2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
-225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
-225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
-225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
-225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
-225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
-225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
-2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
-2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
-2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
-2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
-2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
-2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
-2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
-2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
-2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
-226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
-226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
-226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
-226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
-226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
-226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
-2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
-2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
-2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
-2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
-2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
-2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
-2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
-2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
-2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
-2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
-227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
-227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
-227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
-2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
-2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
-2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
-2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
-2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
-2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
-2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
-228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
-228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
-228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
-228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
-228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
-228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
-2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
-2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
-2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
-2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
-2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
-2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
-2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
-2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
-229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
-229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
-229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
-229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
-229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
-229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
-22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
-22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
-22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
-22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
-22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
-22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
-22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
-22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
-22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
-22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
-22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
-22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
-22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
-22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
-22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
-22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
-22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
-22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
-22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
-22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
-22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
-22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
-22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
-22BB;XOR;Sm;0;ON;;;;;N;;;;;
-22BC;NAND;Sm;0;ON;;;;;N;;;;;
-22BD;NOR;Sm;0;ON;;;;;N;;;;;
-22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
-22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
-22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
-22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
-22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
-22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
-22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
-22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
-22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
-22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
-22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
-22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
-22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
-22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
-22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
-22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
-22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
-22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
-22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
-22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
-22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
-22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
-22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
-22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
-22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
-22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
-22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
-22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
-22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
-22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
-22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
-22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
-22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
-22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
-22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
-22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
-22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
-22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
-22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
-22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
-2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
-2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
-2302;HOUSE;So;0;ON;;;;;N;;;;;
-2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
-2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
-2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
-2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
-2307;WAVY LINE;So;0;ON;;;;;N;;;;;
-2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
-2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
-230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
-230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
-230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
-230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
-230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
-230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
-2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
-2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
-2312;ARC;So;0;ON;;;;;N;;;;;
-2313;SEGMENT;So;0;ON;;;;;N;;;;;
-2314;SECTOR;So;0;ON;;;;;N;;;;;
-2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
-2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
-2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
-2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
-2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
-231A;WATCH;So;0;ON;;;;;N;;;;;
-231B;HOURGLASS;So;0;ON;;;;;N;;;;;
-231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
-231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
-231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
-231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
-2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2322;FROWN;So;0;ON;;;;;N;;;;;
-2323;SMILE;So;0;ON;;;;;N;;;;;
-2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
-2325;OPTION KEY;So;0;ON;;;;;N;;;;;
-2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
-2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
-2328;KEYBOARD;So;0;ON;;;;;N;;;;;
-2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
-232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
-232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
-232C;BENZENE RING;So;0;ON;;;;;N;;;;;
-232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
-232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
-232F;SYMMETRY;So;0;ON;;;;;N;;;;;
-2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
-2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
-2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
-2333;SLOPE;So;0;ON;;;;;N;;;;;
-2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
-2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
-2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
-2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
-2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
-2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
-233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
-233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
-233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
-233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
-233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
-233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
-2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
-2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
-2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
-2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
-2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
-2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
-2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
-2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
-2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
-2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
-234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;;
-234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
-234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
-234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
-234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;;
-234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
-2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
-2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;;
-2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
-2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
-2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
-2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;;
-2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
-2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
-2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
-2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
-235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
-235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
-235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
-235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
-235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
-235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
-2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
-2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;;
-2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
-2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
-2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
-2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
-2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
-2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
-2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
-2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
-236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
-236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
-236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
-236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
-236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
-236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
-2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
-2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
-2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
-2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
-2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
-2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
-2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
-2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
-2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
-2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
-237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
-237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
-237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
-237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
-237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
-2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
-2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
-2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
-2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
-2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
-2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
-2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
-2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
-2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
-2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;;
-238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;;
-238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;;
-238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
-238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
-238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
-238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
-2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
-2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
-2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
-2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
-2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
-2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
-2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
-2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
-2398;NEXT PAGE;So;0;ON;;;;;N;;;;;
-2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
-239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
-2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
-2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
-2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
-2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
-2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
-2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
-2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
-2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
-2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
-2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
-240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
-240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
-240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
-240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
-240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
-240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
-2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
-2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
-2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
-2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
-2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
-2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
-2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
-2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
-2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
-2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
-241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
-241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
-241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
-241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
-241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
-241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
-2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
-2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
-2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
-2423;OPEN BOX;So;0;ON;;;;;N;;;;;
-2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
-2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
-2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
-2440;OCR HOOK;So;0;ON;;;;;N;;;;;
-2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
-2442;OCR FORK;So;0;ON;;;;;N;;;;;
-2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
-2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
-2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
-2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
-2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
-2448;OCR DASH;So;0;ON;;;;;N;;;;;
-2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
-244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
-2460;CIRCLED DIGIT ONE;No;0;EN;<circle> 0031;;1;1;N;;;;;
-2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
-2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
-2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
-2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
-2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
-2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
-2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
-2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
-2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
-246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
-246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
-246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
-246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
-246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
-246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
-2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
-2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
-2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
-2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
-2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
-2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
-2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
-2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
-2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
-2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
-247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
-247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
-247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
-247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
-247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
-247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
-2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
-2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
-2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
-2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
-2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
-2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
-2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
-2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<compat> 0028 0032 0030 0029;;;20;N;;;;;
-2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
-2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
-248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
-248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
-248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
-248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
-248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
-248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
-2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
-2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
-2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
-2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
-2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
-2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
-2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
-2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
-2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
-2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
-249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
-249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
-249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
-249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
-249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
-249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
-24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
-24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
-24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
-24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
-24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
-24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
-24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
-24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
-24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
-24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
-24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
-24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
-24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
-24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
-24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
-24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
-24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
-24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
-24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
-24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
-24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
-24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
-24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
-24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
-24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
-24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
-24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
-24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
-24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
-24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
-24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
-24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
-24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
-24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
-24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
-24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
-24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
-24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
-24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
-24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
-24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
-24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
-24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
-24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
-24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
-24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
-24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
-24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
-24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
-24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
-24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
-24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
-24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
-24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
-24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
-24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
-24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
-24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
-24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
-24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
-24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
-24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
-24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
-24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
-24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
-24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
-24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
-24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
-24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
-24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
-24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
-24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
-24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
-24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
-24EA;CIRCLED DIGIT ZERO;No;0;EN;<circle> 0030;;0;0;N;;;;;
-2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
-2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
-2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
-2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
-2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
-2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
-2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
-2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
-2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
-2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
-250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
-250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
-250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
-250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
-250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
-250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
-2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
-2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
-2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
-2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
-2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
-2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
-2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
-2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
-2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
-2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
-251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
-251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
-251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
-251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
-251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
-251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
-2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
-2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
-2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
-2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
-2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
-2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
-2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
-2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
-2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
-2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
-252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
-252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
-252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
-252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
-252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
-252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
-2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
-2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
-2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
-2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
-2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
-2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
-2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
-2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
-2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
-2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
-253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
-253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
-253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
-253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
-253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
-253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
-2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
-2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
-2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
-2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
-2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
-2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
-2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
-2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
-2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
-2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
-254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
-254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
-254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
-254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
-254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
-254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
-2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
-2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
-2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
-2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
-2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
-2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
-2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
-2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
-2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
-2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
-255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
-255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
-255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
-255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
-255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
-255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
-2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
-2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
-2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
-2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
-2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
-2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
-2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
-2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
-2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
-2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
-256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
-256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
-256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
-256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
-256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
-256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
-2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
-2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
-2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
-2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
-2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
-2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
-2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
-2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
-2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
-2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
-257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
-257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
-257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
-257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
-257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
-257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
-2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
-2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
-2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
-2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
-2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
-2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
-2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
-258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
-258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
-258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
-2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
-2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
-2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
-2593;DARK SHADE;So;0;ON;;;;;N;;;;;
-2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
-2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
-25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
-25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
-25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
-25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
-25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
-25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
-25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
-25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
-25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
-25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
-25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
-25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
-25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
-25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
-25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
-25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
-25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
-25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
-25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
-25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
-25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
-25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
-25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
-25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
-25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
-25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
-25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
-25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
-25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
-25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
-25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
-25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
-25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
-25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
-25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
-25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
-25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
-25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
-25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
-25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
-25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
-25C9;FISHEYE;So;0;ON;;;;;N;;;;;
-25CA;LOZENGE;So;0;ON;;;;;N;;;;;
-25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
-25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
-25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
-25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
-25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
-25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
-25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
-25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
-25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
-25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
-25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
-25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
-25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
-25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
-25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
-25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
-25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
-25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
-25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
-25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
-25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
-25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
-25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
-25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
-25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
-25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
-2601;CLOUD;So;0;ON;;;;;N;;;;;
-2602;UMBRELLA;So;0;ON;;;;;N;;;;;
-2603;SNOWMAN;So;0;ON;;;;;N;;;;;
-2604;COMET;So;0;ON;;;;;N;;;;;
-2605;BLACK STAR;So;0;ON;;;;;N;;;;;
-2606;WHITE STAR;So;0;ON;;;;;N;;;;;
-2607;LIGHTNING;So;0;ON;;;;;N;;;;;
-2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
-2609;SUN;So;0;ON;;;;;N;;;;;
-260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
-260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
-260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
-260D;OPPOSITION;So;0;ON;;;;;N;;;;;
-260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
-260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
-2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
-2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
-2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
-2613;SALTIRE;So;0;ON;;;;;N;;;;;
-2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
-261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
-261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
-2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
-2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
-2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
-2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
-2624;CADUCEUS;So;0;ON;;;;;N;;;;;
-2625;ANKH;So;0;ON;;;;;N;;;;;
-2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
-2627;CHI RHO;So;0;ON;;;;;N;;;;;
-2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
-2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
-262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
-262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
-262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
-262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
-262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
-262F;YIN YANG;So;0;ON;;;;;N;;;;;
-2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
-2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
-2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
-2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
-2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
-2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
-2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
-2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
-2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
-2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
-263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
-263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
-263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
-263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
-263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
-263F;MERCURY;So;0;ON;;;;;N;;;;;
-2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
-2641;EARTH;So;0;ON;;;;;N;;;;;
-2642;MALE SIGN;So;0;ON;;;;;N;;;;;
-2643;JUPITER;So;0;ON;;;;;N;;;;;
-2644;SATURN;So;0;ON;;;;;N;;;;;
-2645;URANUS;So;0;ON;;;;;N;;;;;
-2646;NEPTUNE;So;0;ON;;;;;N;;;;;
-2647;PLUTO;So;0;ON;;;;;N;;;;;
-2648;ARIES;So;0;ON;;;;;N;;;;;
-2649;TAURUS;So;0;ON;;;;;N;;;;;
-264A;GEMINI;So;0;ON;;;;;N;;;;;
-264B;CANCER;So;0;ON;;;;;N;;;;;
-264C;LEO;So;0;ON;;;;;N;;;;;
-264D;VIRGO;So;0;ON;;;;;N;;;;;
-264E;LIBRA;So;0;ON;;;;;N;;;;;
-264F;SCORPIUS;So;0;ON;;;;;N;;;;;
-2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
-2651;CAPRICORN;So;0;ON;;;;;N;;;;;
-2652;AQUARIUS;So;0;ON;;;;;N;;;;;
-2653;PISCES;So;0;ON;;;;;N;;;;;
-2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
-2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
-2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
-2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
-2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
-2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
-265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
-265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
-265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
-265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
-265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
-265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
-2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
-2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
-2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
-2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
-2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
-2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
-2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
-2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
-2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
-2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
-266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
-266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
-266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
-266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
-266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
-266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
-2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
-2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
-2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
-2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
-2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
-2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
-2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
-2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
-2708;AIRPLANE;So;0;ON;;;;;N;;;;;
-2709;ENVELOPE;So;0;ON;;;;;N;;;;;
-270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
-270D;WRITING HAND;So;0;ON;;;;;N;;;;;
-270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
-270F;PENCIL;So;0;ON;;;;;N;;;;;
-2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
-2711;WHITE NIB;So;0;ON;;;;;N;;;;;
-2712;BLACK NIB;So;0;ON;;;;;N;;;;;
-2713;CHECK MARK;So;0;ON;;;;;N;;;;;
-2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
-2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
-2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
-2717;BALLOT X;So;0;ON;;;;;N;;;;;
-2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
-2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
-271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
-271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
-271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
-271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
-271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
-271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
-2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
-2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
-2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
-2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
-2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
-272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
-272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
-272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
-272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
-272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
-272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
-2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
-2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
-2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
-2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
-2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
-2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
-2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
-273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
-273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
-273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
-2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
-2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
-2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
-2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
-2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
-2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
-2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
-2747;SPARKLE;So;0;ON;;;;;N;;;;;
-2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
-2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
-274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
-274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
-2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
-2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
-275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
-275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
-2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
-2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
-2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
-2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
-2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
-2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
-2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
-2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
-277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
-277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
-277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
-277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
-277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
-277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
-2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
-2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
-2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
-2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
-2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
-2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
-2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
-2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
-2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
-2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
-278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
-278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
-278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
-278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
-278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
-278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
-2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
-2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
-2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
-2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
-2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
-2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
-2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
-279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
-279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
-279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
-279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
-279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
-279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
-27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
-27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
-27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
-27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
-27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
-27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
-27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
-27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
-27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
-27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
-27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
-27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
-27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
-27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
-27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
-27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
-27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
-27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
-27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
-27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
-27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
-27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
-27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
-27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
-27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
-27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
-2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;;
-2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;;
-2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;;
-2803;BRAILLE PATTERN DOTS-12;So;0;ON;;;;;N;;;;;
-2804;BRAILLE PATTERN DOTS-3;So;0;ON;;;;;N;;;;;
-2805;BRAILLE PATTERN DOTS-13;So;0;ON;;;;;N;;;;;
-2806;BRAILLE PATTERN DOTS-23;So;0;ON;;;;;N;;;;;
-2807;BRAILLE PATTERN DOTS-123;So;0;ON;;;;;N;;;;;
-2808;BRAILLE PATTERN DOTS-4;So;0;ON;;;;;N;;;;;
-2809;BRAILLE PATTERN DOTS-14;So;0;ON;;;;;N;;;;;
-280A;BRAILLE PATTERN DOTS-24;So;0;ON;;;;;N;;;;;
-280B;BRAILLE PATTERN DOTS-124;So;0;ON;;;;;N;;;;;
-280C;BRAILLE PATTERN DOTS-34;So;0;ON;;;;;N;;;;;
-280D;BRAILLE PATTERN DOTS-134;So;0;ON;;;;;N;;;;;
-280E;BRAILLE PATTERN DOTS-234;So;0;ON;;;;;N;;;;;
-280F;BRAILLE PATTERN DOTS-1234;So;0;ON;;;;;N;;;;;
-2810;BRAILLE PATTERN DOTS-5;So;0;ON;;;;;N;;;;;
-2811;BRAILLE PATTERN DOTS-15;So;0;ON;;;;;N;;;;;
-2812;BRAILLE PATTERN DOTS-25;So;0;ON;;;;;N;;;;;
-2813;BRAILLE PATTERN DOTS-125;So;0;ON;;;;;N;;;;;
-2814;BRAILLE PATTERN DOTS-35;So;0;ON;;;;;N;;;;;
-2815;BRAILLE PATTERN DOTS-135;So;0;ON;;;;;N;;;;;
-2816;BRAILLE PATTERN DOTS-235;So;0;ON;;;;;N;;;;;
-2817;BRAILLE PATTERN DOTS-1235;So;0;ON;;;;;N;;;;;
-2818;BRAILLE PATTERN DOTS-45;So;0;ON;;;;;N;;;;;
-2819;BRAILLE PATTERN DOTS-145;So;0;ON;;;;;N;;;;;
-281A;BRAILLE PATTERN DOTS-245;So;0;ON;;;;;N;;;;;
-281B;BRAILLE PATTERN DOTS-1245;So;0;ON;;;;;N;;;;;
-281C;BRAILLE PATTERN DOTS-345;So;0;ON;;;;;N;;;;;
-281D;BRAILLE PATTERN DOTS-1345;So;0;ON;;;;;N;;;;;
-281E;BRAILLE PATTERN DOTS-2345;So;0;ON;;;;;N;;;;;
-281F;BRAILLE PATTERN DOTS-12345;So;0;ON;;;;;N;;;;;
-2820;BRAILLE PATTERN DOTS-6;So;0;ON;;;;;N;;;;;
-2821;BRAILLE PATTERN DOTS-16;So;0;ON;;;;;N;;;;;
-2822;BRAILLE PATTERN DOTS-26;So;0;ON;;;;;N;;;;;
-2823;BRAILLE PATTERN DOTS-126;So;0;ON;;;;;N;;;;;
-2824;BRAILLE PATTERN DOTS-36;So;0;ON;;;;;N;;;;;
-2825;BRAILLE PATTERN DOTS-136;So;0;ON;;;;;N;;;;;
-2826;BRAILLE PATTERN DOTS-236;So;0;ON;;;;;N;;;;;
-2827;BRAILLE PATTERN DOTS-1236;So;0;ON;;;;;N;;;;;
-2828;BRAILLE PATTERN DOTS-46;So;0;ON;;;;;N;;;;;
-2829;BRAILLE PATTERN DOTS-146;So;0;ON;;;;;N;;;;;
-282A;BRAILLE PATTERN DOTS-246;So;0;ON;;;;;N;;;;;
-282B;BRAILLE PATTERN DOTS-1246;So;0;ON;;;;;N;;;;;
-282C;BRAILLE PATTERN DOTS-346;So;0;ON;;;;;N;;;;;
-282D;BRAILLE PATTERN DOTS-1346;So;0;ON;;;;;N;;;;;
-282E;BRAILLE PATTERN DOTS-2346;So;0;ON;;;;;N;;;;;
-282F;BRAILLE PATTERN DOTS-12346;So;0;ON;;;;;N;;;;;
-2830;BRAILLE PATTERN DOTS-56;So;0;ON;;;;;N;;;;;
-2831;BRAILLE PATTERN DOTS-156;So;0;ON;;;;;N;;;;;
-2832;BRAILLE PATTERN DOTS-256;So;0;ON;;;;;N;;;;;
-2833;BRAILLE PATTERN DOTS-1256;So;0;ON;;;;;N;;;;;
-2834;BRAILLE PATTERN DOTS-356;So;0;ON;;;;;N;;;;;
-2835;BRAILLE PATTERN DOTS-1356;So;0;ON;;;;;N;;;;;
-2836;BRAILLE PATTERN DOTS-2356;So;0;ON;;;;;N;;;;;
-2837;BRAILLE PATTERN DOTS-12356;So;0;ON;;;;;N;;;;;
-2838;BRAILLE PATTERN DOTS-456;So;0;ON;;;;;N;;;;;
-2839;BRAILLE PATTERN DOTS-1456;So;0;ON;;;;;N;;;;;
-283A;BRAILLE PATTERN DOTS-2456;So;0;ON;;;;;N;;;;;
-283B;BRAILLE PATTERN DOTS-12456;So;0;ON;;;;;N;;;;;
-283C;BRAILLE PATTERN DOTS-3456;So;0;ON;;;;;N;;;;;
-283D;BRAILLE PATTERN DOTS-13456;So;0;ON;;;;;N;;;;;
-283E;BRAILLE PATTERN DOTS-23456;So;0;ON;;;;;N;;;;;
-283F;BRAILLE PATTERN DOTS-123456;So;0;ON;;;;;N;;;;;
-2840;BRAILLE PATTERN DOTS-7;So;0;ON;;;;;N;;;;;
-2841;BRAILLE PATTERN DOTS-17;So;0;ON;;;;;N;;;;;
-2842;BRAILLE PATTERN DOTS-27;So;0;ON;;;;;N;;;;;
-2843;BRAILLE PATTERN DOTS-127;So;0;ON;;;;;N;;;;;
-2844;BRAILLE PATTERN DOTS-37;So;0;ON;;;;;N;;;;;
-2845;BRAILLE PATTERN DOTS-137;So;0;ON;;;;;N;;;;;
-2846;BRAILLE PATTERN DOTS-237;So;0;ON;;;;;N;;;;;
-2847;BRAILLE PATTERN DOTS-1237;So;0;ON;;;;;N;;;;;
-2848;BRAILLE PATTERN DOTS-47;So;0;ON;;;;;N;;;;;
-2849;BRAILLE PATTERN DOTS-147;So;0;ON;;;;;N;;;;;
-284A;BRAILLE PATTERN DOTS-247;So;0;ON;;;;;N;;;;;
-284B;BRAILLE PATTERN DOTS-1247;So;0;ON;;;;;N;;;;;
-284C;BRAILLE PATTERN DOTS-347;So;0;ON;;;;;N;;;;;
-284D;BRAILLE PATTERN DOTS-1347;So;0;ON;;;;;N;;;;;
-284E;BRAILLE PATTERN DOTS-2347;So;0;ON;;;;;N;;;;;
-284F;BRAILLE PATTERN DOTS-12347;So;0;ON;;;;;N;;;;;
-2850;BRAILLE PATTERN DOTS-57;So;0;ON;;;;;N;;;;;
-2851;BRAILLE PATTERN DOTS-157;So;0;ON;;;;;N;;;;;
-2852;BRAILLE PATTERN DOTS-257;So;0;ON;;;;;N;;;;;
-2853;BRAILLE PATTERN DOTS-1257;So;0;ON;;;;;N;;;;;
-2854;BRAILLE PATTERN DOTS-357;So;0;ON;;;;;N;;;;;
-2855;BRAILLE PATTERN DOTS-1357;So;0;ON;;;;;N;;;;;
-2856;BRAILLE PATTERN DOTS-2357;So;0;ON;;;;;N;;;;;
-2857;BRAILLE PATTERN DOTS-12357;So;0;ON;;;;;N;;;;;
-2858;BRAILLE PATTERN DOTS-457;So;0;ON;;;;;N;;;;;
-2859;BRAILLE PATTERN DOTS-1457;So;0;ON;;;;;N;;;;;
-285A;BRAILLE PATTERN DOTS-2457;So;0;ON;;;;;N;;;;;
-285B;BRAILLE PATTERN DOTS-12457;So;0;ON;;;;;N;;;;;
-285C;BRAILLE PATTERN DOTS-3457;So;0;ON;;;;;N;;;;;
-285D;BRAILLE PATTERN DOTS-13457;So;0;ON;;;;;N;;;;;
-285E;BRAILLE PATTERN DOTS-23457;So;0;ON;;;;;N;;;;;
-285F;BRAILLE PATTERN DOTS-123457;So;0;ON;;;;;N;;;;;
-2860;BRAILLE PATTERN DOTS-67;So;0;ON;;;;;N;;;;;
-2861;BRAILLE PATTERN DOTS-167;So;0;ON;;;;;N;;;;;
-2862;BRAILLE PATTERN DOTS-267;So;0;ON;;;;;N;;;;;
-2863;BRAILLE PATTERN DOTS-1267;So;0;ON;;;;;N;;;;;
-2864;BRAILLE PATTERN DOTS-367;So;0;ON;;;;;N;;;;;
-2865;BRAILLE PATTERN DOTS-1367;So;0;ON;;;;;N;;;;;
-2866;BRAILLE PATTERN DOTS-2367;So;0;ON;;;;;N;;;;;
-2867;BRAILLE PATTERN DOTS-12367;So;0;ON;;;;;N;;;;;
-2868;BRAILLE PATTERN DOTS-467;So;0;ON;;;;;N;;;;;
-2869;BRAILLE PATTERN DOTS-1467;So;0;ON;;;;;N;;;;;
-286A;BRAILLE PATTERN DOTS-2467;So;0;ON;;;;;N;;;;;
-286B;BRAILLE PATTERN DOTS-12467;So;0;ON;;;;;N;;;;;
-286C;BRAILLE PATTERN DOTS-3467;So;0;ON;;;;;N;;;;;
-286D;BRAILLE PATTERN DOTS-13467;So;0;ON;;;;;N;;;;;
-286E;BRAILLE PATTERN DOTS-23467;So;0;ON;;;;;N;;;;;
-286F;BRAILLE PATTERN DOTS-123467;So;0;ON;;;;;N;;;;;
-2870;BRAILLE PATTERN DOTS-567;So;0;ON;;;;;N;;;;;
-2871;BRAILLE PATTERN DOTS-1567;So;0;ON;;;;;N;;;;;
-2872;BRAILLE PATTERN DOTS-2567;So;0;ON;;;;;N;;;;;
-2873;BRAILLE PATTERN DOTS-12567;So;0;ON;;;;;N;;;;;
-2874;BRAILLE PATTERN DOTS-3567;So;0;ON;;;;;N;;;;;
-2875;BRAILLE PATTERN DOTS-13567;So;0;ON;;;;;N;;;;;
-2876;BRAILLE PATTERN DOTS-23567;So;0;ON;;;;;N;;;;;
-2877;BRAILLE PATTERN DOTS-123567;So;0;ON;;;;;N;;;;;
-2878;BRAILLE PATTERN DOTS-4567;So;0;ON;;;;;N;;;;;
-2879;BRAILLE PATTERN DOTS-14567;So;0;ON;;;;;N;;;;;
-287A;BRAILLE PATTERN DOTS-24567;So;0;ON;;;;;N;;;;;
-287B;BRAILLE PATTERN DOTS-124567;So;0;ON;;;;;N;;;;;
-287C;BRAILLE PATTERN DOTS-34567;So;0;ON;;;;;N;;;;;
-287D;BRAILLE PATTERN DOTS-134567;So;0;ON;;;;;N;;;;;
-287E;BRAILLE PATTERN DOTS-234567;So;0;ON;;;;;N;;;;;
-287F;BRAILLE PATTERN DOTS-1234567;So;0;ON;;;;;N;;;;;
-2880;BRAILLE PATTERN DOTS-8;So;0;ON;;;;;N;;;;;
-2881;BRAILLE PATTERN DOTS-18;So;0;ON;;;;;N;;;;;
-2882;BRAILLE PATTERN DOTS-28;So;0;ON;;;;;N;;;;;
-2883;BRAILLE PATTERN DOTS-128;So;0;ON;;;;;N;;;;;
-2884;BRAILLE PATTERN DOTS-38;So;0;ON;;;;;N;;;;;
-2885;BRAILLE PATTERN DOTS-138;So;0;ON;;;;;N;;;;;
-2886;BRAILLE PATTERN DOTS-238;So;0;ON;;;;;N;;;;;
-2887;BRAILLE PATTERN DOTS-1238;So;0;ON;;;;;N;;;;;
-2888;BRAILLE PATTERN DOTS-48;So;0;ON;;;;;N;;;;;
-2889;BRAILLE PATTERN DOTS-148;So;0;ON;;;;;N;;;;;
-288A;BRAILLE PATTERN DOTS-248;So;0;ON;;;;;N;;;;;
-288B;BRAILLE PATTERN DOTS-1248;So;0;ON;;;;;N;;;;;
-288C;BRAILLE PATTERN DOTS-348;So;0;ON;;;;;N;;;;;
-288D;BRAILLE PATTERN DOTS-1348;So;0;ON;;;;;N;;;;;
-288E;BRAILLE PATTERN DOTS-2348;So;0;ON;;;;;N;;;;;
-288F;BRAILLE PATTERN DOTS-12348;So;0;ON;;;;;N;;;;;
-2890;BRAILLE PATTERN DOTS-58;So;0;ON;;;;;N;;;;;
-2891;BRAILLE PATTERN DOTS-158;So;0;ON;;;;;N;;;;;
-2892;BRAILLE PATTERN DOTS-258;So;0;ON;;;;;N;;;;;
-2893;BRAILLE PATTERN DOTS-1258;So;0;ON;;;;;N;;;;;
-2894;BRAILLE PATTERN DOTS-358;So;0;ON;;;;;N;;;;;
-2895;BRAILLE PATTERN DOTS-1358;So;0;ON;;;;;N;;;;;
-2896;BRAILLE PATTERN DOTS-2358;So;0;ON;;;;;N;;;;;
-2897;BRAILLE PATTERN DOTS-12358;So;0;ON;;;;;N;;;;;
-2898;BRAILLE PATTERN DOTS-458;So;0;ON;;;;;N;;;;;
-2899;BRAILLE PATTERN DOTS-1458;So;0;ON;;;;;N;;;;;
-289A;BRAILLE PATTERN DOTS-2458;So;0;ON;;;;;N;;;;;
-289B;BRAILLE PATTERN DOTS-12458;So;0;ON;;;;;N;;;;;
-289C;BRAILLE PATTERN DOTS-3458;So;0;ON;;;;;N;;;;;
-289D;BRAILLE PATTERN DOTS-13458;So;0;ON;;;;;N;;;;;
-289E;BRAILLE PATTERN DOTS-23458;So;0;ON;;;;;N;;;;;
-289F;BRAILLE PATTERN DOTS-123458;So;0;ON;;;;;N;;;;;
-28A0;BRAILLE PATTERN DOTS-68;So;0;ON;;;;;N;;;;;
-28A1;BRAILLE PATTERN DOTS-168;So;0;ON;;;;;N;;;;;
-28A2;BRAILLE PATTERN DOTS-268;So;0;ON;;;;;N;;;;;
-28A3;BRAILLE PATTERN DOTS-1268;So;0;ON;;;;;N;;;;;
-28A4;BRAILLE PATTERN DOTS-368;So;0;ON;;;;;N;;;;;
-28A5;BRAILLE PATTERN DOTS-1368;So;0;ON;;;;;N;;;;;
-28A6;BRAILLE PATTERN DOTS-2368;So;0;ON;;;;;N;;;;;
-28A7;BRAILLE PATTERN DOTS-12368;So;0;ON;;;;;N;;;;;
-28A8;BRAILLE PATTERN DOTS-468;So;0;ON;;;;;N;;;;;
-28A9;BRAILLE PATTERN DOTS-1468;So;0;ON;;;;;N;;;;;
-28AA;BRAILLE PATTERN DOTS-2468;So;0;ON;;;;;N;;;;;
-28AB;BRAILLE PATTERN DOTS-12468;So;0;ON;;;;;N;;;;;
-28AC;BRAILLE PATTERN DOTS-3468;So;0;ON;;;;;N;;;;;
-28AD;BRAILLE PATTERN DOTS-13468;So;0;ON;;;;;N;;;;;
-28AE;BRAILLE PATTERN DOTS-23468;So;0;ON;;;;;N;;;;;
-28AF;BRAILLE PATTERN DOTS-123468;So;0;ON;;;;;N;;;;;
-28B0;BRAILLE PATTERN DOTS-568;So;0;ON;;;;;N;;;;;
-28B1;BRAILLE PATTERN DOTS-1568;So;0;ON;;;;;N;;;;;
-28B2;BRAILLE PATTERN DOTS-2568;So;0;ON;;;;;N;;;;;
-28B3;BRAILLE PATTERN DOTS-12568;So;0;ON;;;;;N;;;;;
-28B4;BRAILLE PATTERN DOTS-3568;So;0;ON;;;;;N;;;;;
-28B5;BRAILLE PATTERN DOTS-13568;So;0;ON;;;;;N;;;;;
-28B6;BRAILLE PATTERN DOTS-23568;So;0;ON;;;;;N;;;;;
-28B7;BRAILLE PATTERN DOTS-123568;So;0;ON;;;;;N;;;;;
-28B8;BRAILLE PATTERN DOTS-4568;So;0;ON;;;;;N;;;;;
-28B9;BRAILLE PATTERN DOTS-14568;So;0;ON;;;;;N;;;;;
-28BA;BRAILLE PATTERN DOTS-24568;So;0;ON;;;;;N;;;;;
-28BB;BRAILLE PATTERN DOTS-124568;So;0;ON;;;;;N;;;;;
-28BC;BRAILLE PATTERN DOTS-34568;So;0;ON;;;;;N;;;;;
-28BD;BRAILLE PATTERN DOTS-134568;So;0;ON;;;;;N;;;;;
-28BE;BRAILLE PATTERN DOTS-234568;So;0;ON;;;;;N;;;;;
-28BF;BRAILLE PATTERN DOTS-1234568;So;0;ON;;;;;N;;;;;
-28C0;BRAILLE PATTERN DOTS-78;So;0;ON;;;;;N;;;;;
-28C1;BRAILLE PATTERN DOTS-178;So;0;ON;;;;;N;;;;;
-28C2;BRAILLE PATTERN DOTS-278;So;0;ON;;;;;N;;;;;
-28C3;BRAILLE PATTERN DOTS-1278;So;0;ON;;;;;N;;;;;
-28C4;BRAILLE PATTERN DOTS-378;So;0;ON;;;;;N;;;;;
-28C5;BRAILLE PATTERN DOTS-1378;So;0;ON;;;;;N;;;;;
-28C6;BRAILLE PATTERN DOTS-2378;So;0;ON;;;;;N;;;;;
-28C7;BRAILLE PATTERN DOTS-12378;So;0;ON;;;;;N;;;;;
-28C8;BRAILLE PATTERN DOTS-478;So;0;ON;;;;;N;;;;;
-28C9;BRAILLE PATTERN DOTS-1478;So;0;ON;;;;;N;;;;;
-28CA;BRAILLE PATTERN DOTS-2478;So;0;ON;;;;;N;;;;;
-28CB;BRAILLE PATTERN DOTS-12478;So;0;ON;;;;;N;;;;;
-28CC;BRAILLE PATTERN DOTS-3478;So;0;ON;;;;;N;;;;;
-28CD;BRAILLE PATTERN DOTS-13478;So;0;ON;;;;;N;;;;;
-28CE;BRAILLE PATTERN DOTS-23478;So;0;ON;;;;;N;;;;;
-28CF;BRAILLE PATTERN DOTS-123478;So;0;ON;;;;;N;;;;;
-28D0;BRAILLE PATTERN DOTS-578;So;0;ON;;;;;N;;;;;
-28D1;BRAILLE PATTERN DOTS-1578;So;0;ON;;;;;N;;;;;
-28D2;BRAILLE PATTERN DOTS-2578;So;0;ON;;;;;N;;;;;
-28D3;BRAILLE PATTERN DOTS-12578;So;0;ON;;;;;N;;;;;
-28D4;BRAILLE PATTERN DOTS-3578;So;0;ON;;;;;N;;;;;
-28D5;BRAILLE PATTERN DOTS-13578;So;0;ON;;;;;N;;;;;
-28D6;BRAILLE PATTERN DOTS-23578;So;0;ON;;;;;N;;;;;
-28D7;BRAILLE PATTERN DOTS-123578;So;0;ON;;;;;N;;;;;
-28D8;BRAILLE PATTERN DOTS-4578;So;0;ON;;;;;N;;;;;
-28D9;BRAILLE PATTERN DOTS-14578;So;0;ON;;;;;N;;;;;
-28DA;BRAILLE PATTERN DOTS-24578;So;0;ON;;;;;N;;;;;
-28DB;BRAILLE PATTERN DOTS-124578;So;0;ON;;;;;N;;;;;
-28DC;BRAILLE PATTERN DOTS-34578;So;0;ON;;;;;N;;;;;
-28DD;BRAILLE PATTERN DOTS-134578;So;0;ON;;;;;N;;;;;
-28DE;BRAILLE PATTERN DOTS-234578;So;0;ON;;;;;N;;;;;
-28DF;BRAILLE PATTERN DOTS-1234578;So;0;ON;;;;;N;;;;;
-28E0;BRAILLE PATTERN DOTS-678;So;0;ON;;;;;N;;;;;
-28E1;BRAILLE PATTERN DOTS-1678;So;0;ON;;;;;N;;;;;
-28E2;BRAILLE PATTERN DOTS-2678;So;0;ON;;;;;N;;;;;
-28E3;BRAILLE PATTERN DOTS-12678;So;0;ON;;;;;N;;;;;
-28E4;BRAILLE PATTERN DOTS-3678;So;0;ON;;;;;N;;;;;
-28E5;BRAILLE PATTERN DOTS-13678;So;0;ON;;;;;N;;;;;
-28E6;BRAILLE PATTERN DOTS-23678;So;0;ON;;;;;N;;;;;
-28E7;BRAILLE PATTERN DOTS-123678;So;0;ON;;;;;N;;;;;
-28E8;BRAILLE PATTERN DOTS-4678;So;0;ON;;;;;N;;;;;
-28E9;BRAILLE PATTERN DOTS-14678;So;0;ON;;;;;N;;;;;
-28EA;BRAILLE PATTERN DOTS-24678;So;0;ON;;;;;N;;;;;
-28EB;BRAILLE PATTERN DOTS-124678;So;0;ON;;;;;N;;;;;
-28EC;BRAILLE PATTERN DOTS-34678;So;0;ON;;;;;N;;;;;
-28ED;BRAILLE PATTERN DOTS-134678;So;0;ON;;;;;N;;;;;
-28EE;BRAILLE PATTERN DOTS-234678;So;0;ON;;;;;N;;;;;
-28EF;BRAILLE PATTERN DOTS-1234678;So;0;ON;;;;;N;;;;;
-28F0;BRAILLE PATTERN DOTS-5678;So;0;ON;;;;;N;;;;;
-28F1;BRAILLE PATTERN DOTS-15678;So;0;ON;;;;;N;;;;;
-28F2;BRAILLE PATTERN DOTS-25678;So;0;ON;;;;;N;;;;;
-28F3;BRAILLE PATTERN DOTS-125678;So;0;ON;;;;;N;;;;;
-28F4;BRAILLE PATTERN DOTS-35678;So;0;ON;;;;;N;;;;;
-28F5;BRAILLE PATTERN DOTS-135678;So;0;ON;;;;;N;;;;;
-28F6;BRAILLE PATTERN DOTS-235678;So;0;ON;;;;;N;;;;;
-28F7;BRAILLE PATTERN DOTS-1235678;So;0;ON;;;;;N;;;;;
-28F8;BRAILLE PATTERN DOTS-45678;So;0;ON;;;;;N;;;;;
-28F9;BRAILLE PATTERN DOTS-145678;So;0;ON;;;;;N;;;;;
-28FA;BRAILLE PATTERN DOTS-245678;So;0;ON;;;;;N;;;;;
-28FB;BRAILLE PATTERN DOTS-1245678;So;0;ON;;;;;N;;;;;
-28FC;BRAILLE PATTERN DOTS-345678;So;0;ON;;;;;N;;;;;
-28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;;
-28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;;
-28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;;
-2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
-2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
-2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
-2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
-2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
-2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
-2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
-2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
-2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
-2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
-2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
-2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
-2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
-2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
-2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
-2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
-2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
-2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
-2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
-2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
-2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
-2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
-2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
-2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
-2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
-2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
-2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
-2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
-2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
-2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
-2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
-2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
-2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
-2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
-2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
-2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
-2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
-2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
-2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
-2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
-2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
-2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
-2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
-2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
-2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
-2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
-2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
-2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
-2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
-2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
-2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
-2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
-2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
-2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
-2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
-2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
-2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
-2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
-2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
-2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
-2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
-2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
-2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
-2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
-2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
-2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
-2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
-2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
-2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
-2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
-2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
-2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
-2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
-2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
-2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
-2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
-2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
-2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
-2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
-2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
-2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
-2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
-2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
-2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
-2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
-2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
-2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
-2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
-2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
-2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
-2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
-2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
-2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
-2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
-2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
-2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
-2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
-2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
-2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
-2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
-2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
-2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
-2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
-2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
-2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
-2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
-2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
-2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
-2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
-2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
-2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
-2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
-2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
-2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
-2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
-2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
-2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
-2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
-2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
-2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
-2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
-2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
-2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
-2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
-2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
-2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
-2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
-2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
-2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
-2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
-2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
-2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
-2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
-2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
-2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
-2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
-2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
-2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
-2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
-2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
-2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
-2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
-2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
-2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
-2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
-2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
-2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
-2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
-2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
-2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
-2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
-2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
-2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
-2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
-2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
-2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
-2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
-2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
-2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
-2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
-2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
-2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
-2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
-2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
-2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
-2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
-2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
-2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
-2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
-2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
-2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
-2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
-2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
-2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
-2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
-2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
-2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
-2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
-2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
-2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
-2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
-2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
-2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
-2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
-2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
-2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
-2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
-2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
-2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
-2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
-2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
-2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
-2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
-2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
-2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
-2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
-2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
-2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
-2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
-2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
-2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
-2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
-2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
-2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
-2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
-2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
-2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
-2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
-2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
-2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
-2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
-2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
-2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
-2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
-2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
-2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
-2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
-2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
-2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
-2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
-2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
-2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
-2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
-2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
-2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
-2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
-2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
-2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
-2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
-2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
-2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
-2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
-2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
-2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
-2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
-2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
-2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
-2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
-2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
-2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
-2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
-2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
-2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
-2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
-2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
-2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
-2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
-2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
-2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
-2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
-2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
-2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
-2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
-2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
-2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
-2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
-2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
-2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
-2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
-2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
-2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
-2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
-2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
-2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
-2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
-2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
-2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
-2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
-2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
-2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
-2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
-2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
-2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
-2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
-2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
-2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
-2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
-2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
-2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
-2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
-2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
-2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
-2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
-2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
-2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
-2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
-2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
-2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
-2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
-2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
-2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
-2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
-2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
-2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
-2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
-2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
-2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
-2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
-2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
-2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
-2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
-2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
-2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
-2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
-2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
-2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
-2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
-2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
-2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
-2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
-2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
-2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
-2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
-2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
-2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
-2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
-2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
-2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
-2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
-2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
-2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
-2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
-2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
-2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
-2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
-2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
-2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
-2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
-2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
-2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
-2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
-2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
-2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
-2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
-2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
-2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
-2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
-2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
-2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
-2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
-2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
-3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
-3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
-3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
-3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
-3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
-3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
-3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
-3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
-3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
-3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
-300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
-300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
-300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
-300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
-300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
-300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
-3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
-3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
-3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
-3013;GETA MARK;So;0;ON;;;;;N;;;;;
-3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
-3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
-3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
-3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
-3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
-3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
-301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
-301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
-301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
-301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
-301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
-301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
-3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
-3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
-3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
-3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
-3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
-3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
-3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
-3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
-3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
-3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
-302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
-302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
-302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
-302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
-302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
-302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
-3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
-3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
-3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
-3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
-3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
-3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
-3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
-3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
-3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
-3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
-303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
-303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
-303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
-3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
-3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
-3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
-3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
-3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
-3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
-3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
-3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
-3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
-304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
-304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
-304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
-304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
-304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
-304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
-3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
-3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
-3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
-3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
-3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
-3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
-3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
-3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
-3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
-3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
-305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
-305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
-305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
-305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
-305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
-305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
-3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
-3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
-3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
-3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
-3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
-3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
-3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
-3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
-3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
-3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
-306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
-306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
-306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
-306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
-306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
-306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
-3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
-3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
-3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
-3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
-3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
-3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
-3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
-3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
-3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
-3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
-307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
-307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
-307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
-307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
-307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
-307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
-3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
-3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
-3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
-3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
-3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
-3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
-3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
-3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
-3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
-3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
-308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
-308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
-308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
-308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
-308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
-308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
-3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
-3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
-3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
-3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
-3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
-3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
-309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
-309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
-309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
-309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
-309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
-30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
-30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
-30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
-30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
-30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
-30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
-30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
-30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
-30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
-30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
-30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
-30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
-30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
-30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
-30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
-30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
-30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
-30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
-30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
-30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
-30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
-30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
-30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
-30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
-30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
-30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
-30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
-30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
-30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
-30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
-30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
-30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
-30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
-30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
-30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
-30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
-30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
-30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
-30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
-30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
-30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
-30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
-30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
-30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
-30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
-30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
-30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
-30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
-30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
-30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
-30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
-30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
-30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
-30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
-30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
-30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
-30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
-30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
-30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
-30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
-30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
-30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
-30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
-30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
-30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
-30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
-30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
-30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
-30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
-30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
-30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
-30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
-30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
-30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
-30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
-30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
-30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
-30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
-30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
-30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
-30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
-30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
-30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
-30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
-30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
-30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
-30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
-30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
-30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
-30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
-30FB;KATAKANA MIDDLE DOT;Pc;0;ON;;;;;N;;;;;
-30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
-30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
-30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
-3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
-3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
-3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
-3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
-3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
-310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
-310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
-310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
-310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
-310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
-310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
-3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
-3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
-3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
-3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
-3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
-3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
-3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
-3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
-3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
-3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
-311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
-311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
-311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
-311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
-311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
-311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
-3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
-3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
-3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
-3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
-3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
-3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
-3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
-3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
-3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
-3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
-312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
-312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
-312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
-3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
-3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
-3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
-3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
-3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
-3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
-3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
-3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
-3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
-313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
-313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
-313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
-313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
-313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
-313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
-3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
-3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
-3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
-3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
-3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
-3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
-3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
-3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
-3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
-3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
-314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
-314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
-314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
-314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
-314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
-314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
-3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
-3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
-3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
-3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
-3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
-3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
-3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
-3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
-3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
-3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
-315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
-315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
-315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
-315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
-315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
-315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
-3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
-3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
-3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
-3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
-3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
-3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
-3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
-3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
-3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
-3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
-316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
-316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
-316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
-316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
-316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
-316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
-3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
-3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
-3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
-3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
-3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
-3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
-3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
-3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
-3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
-3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
-317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
-317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
-317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
-317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
-317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
-317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
-3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
-3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
-3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
-3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
-3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
-3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
-3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
-3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
-3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
-3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
-318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
-318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
-318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
-318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
-318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
-3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
-3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
-3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;;N;KAERITEN ITI;Kaeriten;;;
-3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;;N;KAERITEN NI;Kaeriten;;;
-3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;;N;KAERITEN SAN;Kaeriten;;;
-3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;;N;KAERITEN SI;Kaeriten;;;
-3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
-3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
-3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
-3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
-319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
-319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
-319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
-319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
-319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
-319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
-31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
-31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
-31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
-31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
-31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
-31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
-31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
-31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
-31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
-31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
-31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
-31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
-31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
-31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
-31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
-31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
-31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
-31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
-31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
-31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
-31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
-31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
-31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
-31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
-3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
-3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
-3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
-3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
-3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
-3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
-3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
-3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
-3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
-3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
-320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
-320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
-320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
-320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
-320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
-320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
-3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
-3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
-3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
-3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
-3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
-3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
-3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
-3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
-3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
-3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
-321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
-321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
-321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
-3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;;N;;;;;
-3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;;N;;;;;
-3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;;N;;;;;
-3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;;N;;;;;
-3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;;N;;;;;
-3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;;N;;;;;
-3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;;N;;;;;
-3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;;N;;;;;
-3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;;N;;;;;
-3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;;N;;;;;
-322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
-322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
-322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
-322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
-322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
-322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
-3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
-3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
-3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
-3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
-3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
-3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
-3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
-3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
-3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
-3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
-323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
-323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
-323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
-323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
-323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
-323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
-3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
-3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
-3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
-3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
-3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
-3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
-3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
-3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
-3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
-3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
-3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
-3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
-3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
-3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
-326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
-326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
-326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
-326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
-326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
-326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
-3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
-3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
-3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
-3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
-3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
-3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
-3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
-3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
-3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
-3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
-327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
-327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
-327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
-3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
-3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
-3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
-3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
-3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
-3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
-3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
-3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
-3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
-3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
-328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
-328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
-328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
-328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
-328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
-328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
-3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
-3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
-3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
-3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
-3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
-3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
-3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
-3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
-3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
-3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
-329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
-329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
-329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
-329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
-329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
-329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
-32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
-32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
-32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
-32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
-32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
-32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
-32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
-32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
-32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
-32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
-32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
-32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
-32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
-32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
-32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
-32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
-32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
-32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
-32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
-32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
-32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
-32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
-32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
-32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
-32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
-32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
-32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
-32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
-32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
-32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
-32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
-32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
-32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
-32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
-32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
-32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
-32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
-32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
-32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
-32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
-32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
-32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
-32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
-32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
-32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
-32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
-32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
-32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
-32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
-32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
-32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
-32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
-32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
-32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
-32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
-32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
-32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
-32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
-32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
-32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
-32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
-32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
-32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
-32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
-32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
-32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
-32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
-32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
-32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
-32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
-32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
-32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
-32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
-32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
-32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
-32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
-3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
-3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
-3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
-3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
-3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
-3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
-3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
-3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
-3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
-3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
-330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
-330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
-330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
-330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
-330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
-330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
-3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
-3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
-3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
-3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
-3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
-3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
-3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
-3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
-3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
-3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
-331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
-331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
-331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
-331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
-331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
-331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
-3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
-3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
-3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
-3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
-3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
-3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
-3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
-3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
-3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
-3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
-332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
-332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
-332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
-332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
-332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
-332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
-3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
-3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
-3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
-3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
-3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
-3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
-3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
-3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
-3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
-3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
-333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
-333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
-333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
-333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
-333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
-333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
-3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
-3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
-3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
-3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
-3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
-3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
-3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
-3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
-3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
-3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
-334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
-334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
-334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
-334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
-334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
-334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
-3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
-3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
-3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
-3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
-3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
-3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
-3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
-3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
-3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
-3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
-335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
-335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
-335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
-335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
-335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
-335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
-3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
-3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
-3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
-3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
-3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
-3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
-3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
-3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
-3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
-3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
-336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
-336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
-336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
-336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
-336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
-336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
-3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
-3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
-3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
-3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
-3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
-3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
-3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
-337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
-337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
-337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
-337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
-337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
-3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
-3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
-3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
-3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
-3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
-3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
-3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
-3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
-3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
-3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
-338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
-338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
-338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
-338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
-338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
-338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
-3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
-3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
-3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
-3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
-3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
-3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
-3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
-3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
-3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
-3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
-339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
-339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
-339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
-339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
-339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
-339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
-33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
-33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
-33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
-33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
-33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
-33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
-33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
-33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
-33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
-33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
-33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
-33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
-33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
-33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
-33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
-33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
-33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
-33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
-33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
-33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
-33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
-33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
-33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
-33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
-33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
-33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
-33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
-33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
-33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
-33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
-33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
-33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
-33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
-33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
-33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
-33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
-33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
-33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
-33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
-33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
-33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
-33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
-33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
-33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
-33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
-33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
-33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
-33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
-33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
-33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
-33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
-33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
-33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
-33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
-33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
-33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
-33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
-33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
-33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
-33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
-33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
-33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
-33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
-33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
-33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
-33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
-33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
-33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
-33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
-33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
-33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
-33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
-33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
-33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
-33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
-33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
-33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
-33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
-33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
-33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
-33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
-33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
-33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
-33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
-33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
-33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
-33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
-33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
-33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
-33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
-33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
-33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
-33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
-3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
-4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
-4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
-9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
-A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
-A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
-A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
-A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;
-A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;
-A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;
-A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;
-A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;
-A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;
-A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;
-A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;
-A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;
-A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;
-A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;
-A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;
-A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;
-A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;
-A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;
-A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;
-A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;
-A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;
-A015;YI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
-A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
-A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
-A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
-A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
-A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
-A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
-A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
-A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
-A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
-A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
-A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
-A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
-A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
-A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
-A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
-A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
-A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
-A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
-A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
-A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
-A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
-A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
-A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
-A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
-A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
-A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
-A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
-A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
-A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
-A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
-A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
-A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
-A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
-A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
-A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
-A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
-A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
-A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
-A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
-A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
-A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
-A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
-A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
-A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
-A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
-A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
-A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
-A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
-A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
-A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
-A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
-A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
-A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
-A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
-A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
-A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
-A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
-A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
-A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
-A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
-A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
-A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
-A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
-A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
-A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
-A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
-A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
-A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
-A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
-A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
-A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
-A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
-A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
-A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
-A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
-A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
-A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
-A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
-A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
-A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
-A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
-A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
-A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
-A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
-A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
-A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
-A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
-A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
-A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
-A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
-A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
-A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
-A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
-A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
-A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
-A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
-A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
-A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
-A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
-A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
-A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
-A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
-A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
-A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
-A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
-A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
-A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
-A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
-A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
-A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
-A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
-A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
-A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
-A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
-A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
-A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
-A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
-A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
-A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
-A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
-A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
-A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
-A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
-A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
-A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
-A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
-A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
-A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
-A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
-A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
-A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
-A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
-A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
-A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
-A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
-A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
-A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
-A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
-A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
-A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
-A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
-A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
-A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
-A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
-A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
-A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
-A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
-A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
-A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
-A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
-A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
-A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
-A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
-A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
-A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
-A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
-A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
-A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
-A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
-A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
-A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
-A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
-A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
-A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
-A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
-A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
-A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
-A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
-A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
-A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
-A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
-A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
-A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
-A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
-A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
-A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
-A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
-A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
-A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
-A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
-A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
-A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
-A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
-A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
-A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
-A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
-A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
-A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
-A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
-A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
-A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
-A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
-A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
-A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
-A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
-A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
-A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
-A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
-A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
-A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
-A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
-A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
-A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
-A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
-A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
-A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
-A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
-A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
-A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
-A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
-A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
-A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
-A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
-A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
-A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
-A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
-A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
-A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
-A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
-A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
-A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
-A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
-A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
-A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
-A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
-A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
-A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
-A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
-A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
-A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
-A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
-A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
-A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
-A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
-A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
-A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
-A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
-A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
-A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
-A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
-A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
-A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
-A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
-A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
-A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
-A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
-A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
-A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
-A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
-A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
-A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
-A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
-A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
-A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
-A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
-A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
-A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
-A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
-A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
-A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
-A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
-A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
-A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
-A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
-A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
-A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
-A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
-A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
-A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
-A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
-A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
-A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
-A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
-A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
-A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
-A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
-A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
-A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
-A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
-A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
-A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
-A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
-A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
-A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
-A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
-A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
-A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
-A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
-A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
-A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
-A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
-A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
-A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
-A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
-A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
-A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
-A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
-A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
-A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
-A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
-A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
-A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
-A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
-A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
-A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
-A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
-A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
-A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
-A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
-A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
-A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
-A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
-A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
-A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
-A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
-A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
-A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
-A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
-A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
-A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
-A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
-A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
-A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
-A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
-A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
-A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
-A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
-A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
-A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
-A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
-A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
-A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
-A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
-A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
-A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
-A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
-A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
-A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
-A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
-A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
-A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
-A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
-A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
-A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
-A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
-A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
-A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
-A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
-A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
-A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
-A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
-A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
-A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
-A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
-A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
-A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
-A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
-A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
-A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
-A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
-A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
-A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
-A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
-A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
-A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
-A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
-A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
-A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
-A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
-A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
-A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
-A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
-A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
-A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
-A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
-A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
-A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
-A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
-A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
-A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
-A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
-A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
-A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
-A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
-A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
-A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
-A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
-A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
-A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
-A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
-A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
-A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
-A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
-A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
-A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
-A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
-A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
-A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
-A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
-A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
-A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
-A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
-A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
-A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
-A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
-A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
-A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
-A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
-A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
-A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
-A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
-A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
-A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
-A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
-A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
-A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
-A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
-A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
-A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
-A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
-A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
-A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
-A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
-A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
-A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
-A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
-A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
-A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
-A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
-A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
-A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
-A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
-A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
-A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
-A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
-A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
-A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
-A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
-A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
-A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
-A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
-A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
-A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
-A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
-A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
-A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
-A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
-A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
-A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
-A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
-A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
-A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
-A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
-A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
-A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
-A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
-A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
-A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
-A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
-A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
-A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
-A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
-A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
-A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
-A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
-A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
-A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
-A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
-A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
-A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
-A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
-A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
-A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
-A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
-A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
-A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
-A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
-A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
-A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
-A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
-A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
-A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
-A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
-A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
-A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
-A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
-A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
-A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
-A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
-A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
-A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
-A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
-A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
-A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
-A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
-A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
-A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
-A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
-A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
-A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
-A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
-A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
-A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
-A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
-A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
-A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
-A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
-A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
-A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
-A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
-A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
-A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
-A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
-A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
-A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
-A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
-A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
-A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
-A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
-A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
-A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
-A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
-A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
-A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
-A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
-A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
-A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
-A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
-A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
-A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
-A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
-A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
-A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
-A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
-A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
-A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
-A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
-A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
-A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
-A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
-A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
-A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
-A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
-A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
-A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
-A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
-A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
-A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
-A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
-A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
-A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
-A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
-A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
-A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
-A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
-A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
-A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
-A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
-A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
-A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
-A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
-A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
-A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
-A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
-A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
-A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
-A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
-A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
-A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
-A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
-A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
-A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
-A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
-A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
-A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
-A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
-A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
-A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
-A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
-A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
-A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
-A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
-A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
-A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
-A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
-A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
-A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
-A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
-A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
-A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
-A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
-A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
-A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
-A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
-A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
-A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
-A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
-A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
-A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
-A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
-A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
-A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
-A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
-A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
-A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
-A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
-A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
-A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
-A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
-A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
-A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
-A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
-A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
-A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
-A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
-A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
-A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
-A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
-A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
-A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
-A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
-A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
-A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
-A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
-A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
-A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
-A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
-A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
-A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
-A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
-A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
-A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
-A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
-A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
-A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
-A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
-A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
-A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
-A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
-A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
-A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
-A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
-A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
-A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
-A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
-A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
-A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
-A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
-A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
-A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
-A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
-A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
-A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
-A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
-A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
-A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
-A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
-A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
-A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
-A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
-A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
-A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
-A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
-A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
-A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
-A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
-A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
-A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
-A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
-A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
-A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
-A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
-A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
-A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
-A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
-A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
-A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
-A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
-A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
-A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
-A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
-A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
-A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
-A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
-A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
-A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
-A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
-A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
-A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
-A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
-A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
-A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
-A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
-A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
-A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
-A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
-A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
-A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
-A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
-A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
-A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
-A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
-A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
-A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
-A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
-A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
-A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
-A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
-A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
-A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
-A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
-A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
-A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
-A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
-A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
-A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
-A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
-A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
-A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
-A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
-A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
-A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
-A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
-A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
-A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
-A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
-A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
-A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
-A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
-A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
-A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
-A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
-A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
-A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
-A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
-A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
-A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
-A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
-A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
-A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
-A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
-A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
-A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
-A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
-A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
-A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
-A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
-A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
-A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
-A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
-A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
-A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
-A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
-A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
-A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
-A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
-A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
-A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
-A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
-A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
-A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
-A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
-A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
-A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
-A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
-A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
-A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
-A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
-A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
-A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
-A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
-A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
-A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
-A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
-A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
-A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
-A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
-A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
-A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
-A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
-A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
-A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
-A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
-A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
-A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
-A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
-A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
-A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
-A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
-A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
-A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
-A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
-A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
-A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
-A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
-A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
-A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
-A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
-A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
-A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
-A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
-A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
-A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
-A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
-A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
-A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
-A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
-A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
-A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
-A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
-A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
-A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
-A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
-A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
-A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
-A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
-A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
-A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
-A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
-A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
-A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
-A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
-A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
-A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
-A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
-A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
-A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
-A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
-A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
-A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
-A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
-A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
-A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
-A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
-A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
-A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
-A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
-A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
-A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
-A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
-A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
-A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
-A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
-A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
-A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
-A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
-A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
-A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
-A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
-A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
-A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
-A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
-A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
-A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
-A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
-A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
-A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
-A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
-A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
-A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
-A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
-A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
-A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
-A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
-A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
-A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
-A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
-A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
-A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
-A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
-A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
-A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
-A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
-A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
-A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
-A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
-A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
-A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
-A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
-A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
-A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
-A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
-A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
-A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
-A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
-A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
-A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
-A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
-A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
-A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
-A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
-A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
-A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
-A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
-A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
-A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
-A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
-A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
-A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
-A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
-A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
-A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
-A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
-A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
-A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
-A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
-A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
-A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
-A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
-A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
-A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
-A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
-A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
-A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
-A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
-A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
-A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
-A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
-A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
-A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
-A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
-A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
-A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
-A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
-A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
-A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
-A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
-A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
-A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
-A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
-A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
-A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
-A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
-A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
-A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
-A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
-A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
-A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
-A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
-A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
-A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
-A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
-A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
-A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
-A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
-A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
-A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
-A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
-A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
-A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
-A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
-A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
-A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
-A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
-A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
-A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
-A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
-A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
-A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
-A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
-A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
-A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
-A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
-A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
-A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
-A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
-A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
-A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
-A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
-A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
-A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
-A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
-A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
-A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
-A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
-A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
-A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
-A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
-A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
-A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
-A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
-A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
-A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
-A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
-A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
-A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
-A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
-A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
-A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
-A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
-A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
-A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
-A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
-A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
-A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
-A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
-A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
-A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
-A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
-A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
-A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
-A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
-A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
-A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
-A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
-A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
-A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
-A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
-A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
-A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
-A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
-A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
-A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
-A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
-A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
-A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
-A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
-A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
-A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
-A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
-A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
-A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
-A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
-A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
-A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
-A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
-A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
-A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
-A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
-A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
-A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
-A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
-A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
-A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
-A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
-A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
-A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
-A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
-A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
-A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
-A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
-A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
-A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
-A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
-A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
-A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
-A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
-A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
-A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
-A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
-A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
-A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
-A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
-A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
-A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
-A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
-A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
-A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
-A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
-A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
-A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
-A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
-A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
-A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
-A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
-A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
-A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
-A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
-A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
-A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
-A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
-A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
-A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
-A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
-A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
-A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
-A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
-A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
-A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
-A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
-A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
-A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
-A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
-A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
-A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
-A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
-A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
-A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
-A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
-A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
-A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
-A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
-A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
-A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
-A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
-A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
-A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
-A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
-A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
-A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
-A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
-A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
-A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
-A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
-A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
-A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
-A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
-A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
-A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
-A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
-A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
-A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
-A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
-A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
-A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
-A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
-A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
-A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
-A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
-A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
-A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
-A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
-A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
-A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
-A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
-A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
-A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
-A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
-A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
-A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
-A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
-A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
-A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
-A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
-A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
-A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
-A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
-A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
-A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
-A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
-A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
-A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
-A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
-A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
-A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
-A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
-A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
-A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
-A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
-A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
-A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
-A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
-A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
-A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
-A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
-A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
-A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
-A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
-A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
-A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
-A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
-A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
-A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
-A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
-A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
-A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
-A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
-A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
-A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
-A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
-A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
-A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
-A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
-A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
-A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
-A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
-A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
-A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
-A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
-A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
-A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
-A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
-A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
-A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
-A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
-A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
-A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
-A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
-A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
-A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
-A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
-A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
-A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
-AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
-D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
-D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
-DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
-DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
-DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
-DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
-DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
-E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
-F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
-F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
-F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
-F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
-F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
-F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
-F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
-F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
-F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
-F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
-F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
-F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
-F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
-F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
-F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
-F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
-F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
-F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
-F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
-F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
-F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
-F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
-F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
-F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
-F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
-F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
-F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
-F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
-F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
-F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
-F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
-F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
-F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
-F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
-F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
-F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
-F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
-F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
-F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
-F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
-F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
-F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
-F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
-F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
-F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
-F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
-F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
-F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
-F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
-F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
-F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
-F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
-F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
-F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
-F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
-F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
-F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
-F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
-F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
-F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
-F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
-F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
-F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
-F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
-F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
-F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
-F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
-F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
-F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
-F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
-F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
-F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
-F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
-F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
-F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
-F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
-F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
-F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
-F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
-F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
-F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
-F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
-F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;96FB;;;;N;;;;;
-F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
-F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
-F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
-F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
-F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
-F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
-F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
-F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
-F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
-F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
-F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
-F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
-F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
-F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
-F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
-F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
-F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
-F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
-F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
-F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
-F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
-F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
-F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
-F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
-F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
-F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;;
-F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
-F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
-F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
-F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
-F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
-F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
-F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
-F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;;
-F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
-F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
-F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
-F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
-F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;;
-F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
-F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
-F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
-F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
-F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
-F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
-F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
-F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
-F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
-F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
-F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
-F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
-F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
-F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
-F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
-F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
-F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
-F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
-F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
-F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
-F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
-F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
-F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
-F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
-F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
-F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
-F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
-F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
-F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
-F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
-F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
-F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
-F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
-F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
-F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
-F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
-F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
-F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
-F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
-F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
-F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
-F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
-F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
-F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
-F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
-F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
-F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
-F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
-F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
-F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
-F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
-F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
-F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
-F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
-F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
-F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
-F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
-F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;;
-F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
-F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
-F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
-F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
-F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
-F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
-F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
-F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
-F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
-F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
-F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
-F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
-F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
-F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
-F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
-F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
-F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
-F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
-F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
-F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
-F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
-F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
-F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
-F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
-F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
-F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
-F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
-F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
-F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
-F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
-F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;;
-F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
-F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;;
-F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
-F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
-F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
-F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
-F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
-F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
-F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
-F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
-F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
-F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
-F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
-F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
-F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
-F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
-F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
-F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
-F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
-F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
-F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
-F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
-F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
-F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
-F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
-F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
-F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
-F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
-F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
-F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
-F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
-F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
-F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
-F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
-F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
-F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
-F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
-F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
-F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
-F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
-F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
-F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
-F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
-F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;;
-F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
-F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
-FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
-FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
-FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
-FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
-FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
-FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
-FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
-FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
-FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
-FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
-FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
-FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
-FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
-FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
-FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
-FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
-FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
-FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
-FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
-FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
-FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
-FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
-FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
-FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
-FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
-FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
-FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
-FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
-FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
-FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
-FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
-FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;;
-FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
-FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
-FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
-FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;;
-FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
-FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
-FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
-FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
-FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
-FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
-FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
-FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
-FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
-FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
-FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
-FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
-FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
-FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
-FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
-FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
-FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
-FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
-FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
-FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
-FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
-FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
-FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;
-FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;
-FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
-FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
-FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
-FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
-FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
-FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
-FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
-FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
-FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
-FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
-FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ET;<font> 002B;;;;N;;;;;
-FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
-FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
-FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
-FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
-FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
-FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
-FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
-FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
-FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
-FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
-FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
-FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
-FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
-FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
-FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
-FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
-FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
-FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
-FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
-FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
-FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
-FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
-FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
-FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
-FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
-FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
-FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
-FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
-FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
-FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
-FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
-FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
-FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
-FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
-FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
-FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
-FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
-FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
-FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
-FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
-FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
-FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
-FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
-FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
-FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
-FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
-FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
-FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
-FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
-FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
-FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
-FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
-FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
-FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
-FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
-FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
-FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
-FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
-FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
-FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
-FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
-FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
-FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
-FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
-FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
-FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
-FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
-FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
-FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
-FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
-FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
-FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
-FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
-FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
-FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
-FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
-FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
-FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
-FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
-FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
-FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
-FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
-FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
-FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
-FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
-FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
-FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
-FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
-FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
-FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
-FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
-FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
-FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
-FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
-FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
-FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
-FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
-FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
-FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
-FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
-FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
-FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
-FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
-FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
-FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
-FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
-FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
-FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
-FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
-FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
-FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
-FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
-FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
-FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
-FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
-FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
-FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
-FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
-FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
-FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
-FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
-FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
-FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
-FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
-FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
-FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
-FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
-FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
-FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
-FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
-FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
-FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
-FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
-FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
-FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
-FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
-FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
-FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
-FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
-FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
-FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
-FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
-FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
-FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
-FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
-FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
-FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
-FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
-FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
-FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
-FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
-FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
-FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
-FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
-FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
-FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
-FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
-FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
-FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
-FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
-FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
-FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
-FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
-FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
-FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
-FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
-FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
-FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
-FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
-FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
-FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
-FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
-FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
-FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
-FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
-FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
-FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
-FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
-FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
-FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
-FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
-FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
-FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
-FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
-FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
-FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
-FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
-FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
-FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
-FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
-FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
-FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
-FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
-FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
-FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
-FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
-FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
-FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
-FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
-FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
-FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
-FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
-FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
-FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
-FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
-FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
-FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
-FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
-FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
-FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
-FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
-FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
-FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
-FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
-FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
-FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
-FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
-FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
-FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
-FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
-FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
-FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
-FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
-FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
-FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
-FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
-FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
-FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
-FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
-FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
-FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
-FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
-FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
-FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
-FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
-FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
-FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
-FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
-FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
-FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
-FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
-FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
-FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
-FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
-FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
-FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
-FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
-FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
-FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
-FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
-FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
-FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
-FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
-FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
-FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
-FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
-FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
-FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
-FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
-FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
-FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
-FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
-FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
-FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
-FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
-FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
-FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
-FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
-FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
-FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
-FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
-FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
-FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
-FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
-FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
-FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
-FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
-FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
-FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
-FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
-FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
-FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
-FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
-FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
-FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
-FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
-FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
-FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
-FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
-FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
-FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
-FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
-FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
-FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
-FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
-FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
-FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
-FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
-FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
-FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
-FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
-FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
-FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
-FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
-FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
-FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
-FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
-FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
-FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
-FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
-FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
-FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
-FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
-FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
-FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
-FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
-FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
-FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
-FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
-FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
-FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
-FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
-FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
-FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
-FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
-FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
-FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
-FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
-FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
-FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
-FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
-FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
-FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
-FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
-FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
-FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
-FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
-FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
-FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
-FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
-FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
-FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
-FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
-FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
-FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
-FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
-FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
-FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
-FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
-FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
-FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
-FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
-FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
-FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
-FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
-FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
-FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
-FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
-FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
-FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
-FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
-FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
-FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
-FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
-FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
-FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
-FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
-FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
-FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
-FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
-FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
-FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
-FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
-FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
-FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
-FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
-FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
-FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
-FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
-FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
-FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
-FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
-FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
-FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
-FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
-FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
-FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
-FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
-FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
-FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
-FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
-FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
-FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
-FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
-FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
-FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
-FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
-FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
-FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
-FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
-FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
-FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
-FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
-FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
-FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
-FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
-FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
-FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
-FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
-FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
-FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
-FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
-FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
-FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
-FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
-FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
-FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
-FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
-FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
-FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
-FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
-FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
-FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
-FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
-FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
-FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
-FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
-FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
-FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
-FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
-FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
-FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
-FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
-FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
-FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
-FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
-FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
-FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
-FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
-FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
-FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
-FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
-FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
-FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
-FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
-FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
-FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
-FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
-FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
-FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
-FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
-FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
-FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
-FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
-FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
-FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
-FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
-FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
-FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
-FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
-FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
-FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
-FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
-FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
-FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
-FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
-FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
-FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
-FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
-FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
-FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
-FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
-FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
-FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
-FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
-FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
-FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
-FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
-FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
-FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
-FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
-FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
-FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
-FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
-FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
-FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
-FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
-FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
-FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
-FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
-FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
-FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
-FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
-FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
-FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
-FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
-FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
-FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
-FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
-FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
-FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
-FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
-FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
-FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
-FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
-FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
-FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
-FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
-FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
-FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
-FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
-FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
-FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
-FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
-FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
-FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
-FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
-FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
-FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
-FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
-FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
-FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
-FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
-FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
-FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
-FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
-FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
-FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
-FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
-FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
-FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
-FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
-FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
-FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
-FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
-FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
-FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
-FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
-FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
-FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
-FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
-FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
-FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
-FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
-FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
-FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
-FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
-FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
-FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
-FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
-FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
-FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
-FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
-FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
-FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
-FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
-FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
-FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
-FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
-FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
-FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
-FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
-FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
-FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
-FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
-FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
-FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
-FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
-FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
-FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
-FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
-FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
-FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
-FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
-FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
-FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
-FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
-FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
-FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
-FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
-FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
-FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
-FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
-FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
-FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
-FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
-FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
-FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
-FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
-FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
-FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
-FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
-FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
-FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
-FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
-FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
-FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
-FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
-FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
-FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
-FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
-FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
-FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
-FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
-FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
-FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
-FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
-FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
-FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
-FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
-FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
-FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
-FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
-FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
-FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
-FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
-FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
-FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
-FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
-FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
-FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
-FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
-FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
-FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
-FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
-FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
-FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
-FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
-FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
-FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
-FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
-FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
-FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
-FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
-FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
-FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
-FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
-FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
-FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
-FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
-FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
-FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
-FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
-FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
-FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
-FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
-FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
-FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
-FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
-FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
-FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
-FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
-FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
-FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
-FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
-FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
-FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
-FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
-FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
-FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
-FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
-FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
-FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
-FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
-FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
-FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
-FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;;
-FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
-FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
-FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
-FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
-FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
-FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
-FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
-FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
-FE62;SMALL PLUS SIGN;Sm;0;ET;<small> 002B;;;;N;;;;;
-FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
-FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
-FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
-FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
-FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
-FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
-FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
-FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
-FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
-FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
-FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
-FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
-FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
-FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
-FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
-FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
-FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
-FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
-FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
-FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
-FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
-FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
-FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
-FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
-FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
-FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
-FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
-FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
-FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
-FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
-FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
-FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
-FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
-FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
-FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
-FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
-FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
-FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
-FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
-FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
-FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
-FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
-FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
-FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
-FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
-FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
-FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
-FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
-FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
-FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
-FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
-FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
-FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
-FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
-FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
-FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
-FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
-FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
-FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
-FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
-FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
-FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
-FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
-FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
-FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
-FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
-FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
-FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
-FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
-FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
-FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
-FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
-FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
-FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
-FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
-FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
-FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
-FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
-FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
-FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
-FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
-FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
-FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
-FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
-FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
-FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
-FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
-FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
-FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
-FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
-FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
-FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
-FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
-FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
-FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
-FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
-FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
-FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
-FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
-FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
-FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
-FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
-FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
-FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
-FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
-FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
-FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
-FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
-FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
-FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
-FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
-FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
-FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
-FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
-FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
-FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
-FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
-FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
-FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
-FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
-FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
-FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
-FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
-FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
-FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
-FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
-FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
-FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
-FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
-FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
-FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
-FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
-FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
-FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
-FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
-FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
-FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
-FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
-FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
-FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
-FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
-FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
-FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
-FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
-FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
-FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
-FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
-FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
-FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
-FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
-FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
-FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
-FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
-FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
-FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
-FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;N;FULLWIDTH OPENING PARENTHESIS;;;;
-FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;;
-FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
-FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
-FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
-FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
-FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
-FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
-FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
-FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
-FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
-FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
-FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
-FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
-FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
-FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
-FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
-FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
-FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
-FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
-FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;N;;;;;
-FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
-FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;;
-FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
-FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
-FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
-FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
-FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
-FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
-FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
-FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
-FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
-FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
-FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
-FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
-FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
-FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
-FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
-FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
-FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
-FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
-FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
-FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
-FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
-FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
-FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
-FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
-FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
-FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
-FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
-FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
-FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;N;FULLWIDTH OPENING SQUARE BRACKET;;;;
-FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
-FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;N;FULLWIDTH CLOSING SQUARE BRACKET;;;;
-FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
-FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
-FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
-FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
-FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
-FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
-FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
-FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
-FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
-FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
-FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
-FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
-FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
-FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
-FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
-FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
-FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
-FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
-FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
-FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
-FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
-FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
-FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
-FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
-FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
-FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
-FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
-FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
-FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
-FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;N;FULLWIDTH OPENING CURLY BRACKET;;;;
-FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
-FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;;
-FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
-FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
-FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;;
-FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;;
-FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
-FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;ON;<narrow> 30FB;;;;N;;;;;
-FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
-FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
-FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
-FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
-FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
-FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
-FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
-FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
-FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
-FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
-FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
-FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
-FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
-FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
-FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
-FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
-FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
-FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
-FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
-FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
-FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
-FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
-FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
-FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
-FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
-FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
-FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
-FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
-FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
-FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
-FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
-FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
-FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
-FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
-FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
-FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
-FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
-FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
-FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
-FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
-FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
-FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
-FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
-FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
-FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
-FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
-FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
-FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
-FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
-FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
-FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
-FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
-FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
-FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
-FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
-FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
-FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;;
-FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;;
-FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
-FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
-FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
-FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
-FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
-FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
-FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
-FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
-FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
-FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
-FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
-FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
-FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
-FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
-FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
-FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
-FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
-FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
-FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
-FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
-FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
-FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
-FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
-FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
-FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
-FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
-FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
-FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
-FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
-FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
-FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
-FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
-FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
-FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
-FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
-FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
-FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
-FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
-FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
-FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
-FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
-FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
-FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
-FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
-FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
-FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
-FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
-FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
-FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
-FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
-FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
-FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
-FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
-FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
-FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
-FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;;
-FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
-FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
-FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
-FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
-FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
-FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
-FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
-FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
-FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
-FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
-FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;BN;;;;;N;;;;;
-FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;BN;;;;;N;;;;;
-FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;BN;;;;;N;;;;;
-FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
-FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
diff --git a/libjava/gnu/gcj/runtime/FinalizerThread.java b/libjava/gnu/gcj/runtime/FinalizerThread.java
index e333d7a41c7..c9a917cd264 100644
--- a/libjava/gnu/gcj/runtime/FinalizerThread.java
+++ b/libjava/gnu/gcj/runtime/FinalizerThread.java
@@ -1,6 +1,6 @@
// FinalizerThread.java -- Thread in which finalizers are run.
-/* Copyright (C) 2001 Free Software Foundation
+/* Copyright (C) 2001, 2004 Free Software Foundation
This file is part of libgcj.
@@ -16,58 +16,17 @@ package gnu.gcj.runtime;
*/
public final class FinalizerThread extends Thread
{
- // Finalizers must be run in a thread with no Java-visible locks
- // held. This qualifies because we don't make the lock visible.
- private static final Object lock = new Object ();
-
- // This is true if the finalizer thread started successfully. It
- // might be false if, for instance, there are no threads on the
- // current platform. In this situation we run finalizers in the
- // caller's thread.
- private static boolean thread_started = false;
+ private static boolean finalizer_ready;
public FinalizerThread ()
{
super ("LibgcjInternalFinalizerThread");
setDaemon (true);
+ finalizer_ready = false;
+ init();
}
- // This is called by the runtime when a finalizer is ready to be
- // run. It simply wakes up the finalizer thread.
- public static void finalizerReady ()
- {
- synchronized (lock)
- {
- if (! thread_started)
- runFinalizers ();
- else
- lock.notify ();
- }
- }
-
- // Actually run the finalizers.
- private static native void runFinalizers ();
-
- public void run ()
- {
- // Wait on a lock. Whenever we wake up, try to invoke the
- // finalizers.
- synchronized (lock)
- {
- thread_started = true;
- while (true)
- {
- try
- {
- lock.wait ();
- }
- catch (InterruptedException _)
- {
- // Just ignore it. It doesn't hurt to run finalizers
- // when none are pending.
- }
- runFinalizers ();
- }
- }
- }
+ private native void init();
+ static native void finalizerReady();
+ public native void run();
}
diff --git a/libjava/gnu/gcj/runtime/FirstThread.java b/libjava/gnu/gcj/runtime/FirstThread.java
deleted file mode 100644
index 9d4b435bba2..00000000000
--- a/libjava/gnu/gcj/runtime/FirstThread.java
+++ /dev/null
@@ -1,98 +0,0 @@
-// FirstThread.java - Implementation of very first thread.
-
-/* Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
-package gnu.gcj.runtime;
-
-import java.util.jar.*;
-
-/**
- * @author Tom Tromey <tromey@cygnus.com>
- * @date August 24, 1998
- */
-
-final class FirstThread extends Thread
-{
- public FirstThread (Class k, String[] args)
- {
- super (null, null, "main");
- klass = k;
- this.args = args;
- }
-
- public FirstThread (String class_name, String[] args, boolean is_jar)
- {
- super (null, null, "main");
- klass_name = class_name;
- this.args = args;
- this.is_jar = is_jar;
- }
-
- public void run()
- {
- if (is_jar)
- klass_name = getMain(klass_name);
-
- if (klass == null)
- {
- try
- {
- klass = Class.forName(klass_name);
- }
- catch (ClassNotFoundException x)
- {
- throw new NoClassDefFoundError(klass_name);
- }
- }
-
- call_main();
- }
-
- private String getMain (String name)
- {
- String mainName = null;
- try
- {
- JarFile j = new JarFile(name);
- Attributes a = j.getManifest().getMainAttributes();
- mainName = a.getValue(Attributes.Name.MAIN_CLASS);
- }
- catch (Exception e)
- {
- // Ignore.
- }
-
- if (mainName == null)
- {
- System.err.println("Failed to load Main-Class manifest attribute from "
- + name);
- System.exit(1);
- }
- return mainName;
- }
-
- private native void call_main ();
-
- // Private data.
- private Class klass;
- private String klass_name;
- private Object args;
- private boolean is_jar;
-
- // If the user links statically then we need to ensure that these
- // classes are linked in. Otherwise bootstrapping fails. These
- // classes are only referred to via Class.forName(), so we add an
- // explicit mention of them here.
- static final Class Kcert = java.security.cert.Certificate.class;
- static final Class Kfile = gnu.java.net.protocol.file.Handler.class;
- static final Class Khttp = gnu.java.net.protocol.http.Handler.class;
- static final Class Kjar = gnu.java.net.protocol.jar.Handler.class;
- static final Class Klocale = gnu.java.locale.LocaleInformation.class;
- static final Class Kcalendar = gnu.java.locale.Calendar.class;
-}
diff --git a/libjava/gnu/gcj/runtime/VMClassLoader.java b/libjava/gnu/gcj/runtime/VMClassLoader.java
index 5e7f4c8ea90..1fc7081bb78 100644
--- a/libjava/gnu/gcj/runtime/VMClassLoader.java
+++ b/libjava/gnu/gcj/runtime/VMClassLoader.java
@@ -47,58 +47,58 @@ public final class VMClassLoader extends java.net.URLClassLoader
String e = st.nextToken ();
try
{
- if (!e.endsWith (File.separator) && new File (e).isDirectory ())
+ File path = new File(e);
+ // Ignore invalid paths.
+ if (!path.exists())
+ continue;
+ if (!e.endsWith (File.separator) && path.isDirectory ())
addURL(new URL("file", "", -1, e + File.separator));
else
addURL(new URL("file", "", -1, e));
}
catch (java.net.MalformedURLException x)
{
- /* Ignore this path element */
+ // This should never happen.
+ throw new RuntimeException(x);
}
}
// Add the contents of the extensions directories.
st = new StringTokenizer (System.getProperty ("java.ext.dirs"),
System.getProperty ("path.separator", ":"));
- while (st.hasMoreElements ())
+
+ try
{
- String dirname = st.nextToken ();
- try
+ while (st.hasMoreElements ())
{
+ String dirname = st.nextToken ();
File dir = new File (dirname);
if (dir.exists ())
{
if (! dirname.endsWith (File.separator))
- dirname = dirname + File.separator;
+ dirname = dirname + File.separator;
String files[]
- = dir.list (new FilenameFilter ()
+ = dir.list (new FilenameFilter ()
{
public boolean accept (File dir, String name)
{
- return (name.endsWith (".jar")
- || name.endsWith (".zip"));
+ return (name.endsWith (".jar")
+ || name.endsWith (".zip"));
}
});
for (int i = files.length - 1; i >= 0; i--)
- addURL(new URL("file", "", -1, dirname + files[i]));
+ addURL(new URL("file", "", -1, dirname + files[i]));
}
}
- catch (Exception x)
- {
- // Just ignore any badness.
- }
- }
- // Add core:/ to the end of the java.class.path so any resources
- // compiled into this executable may be found.
- try
- {
+ // Add core:/ to the end of the java.class.path so any resources
+ // compiled into this executable may be found.
addURL(new URL("core", "", -1, "/"));
}
catch (java.net.MalformedURLException x)
{
// This should never happen.
+ throw new RuntimeException(x);
}
}
diff --git a/libjava/gnu/gcj/runtime/natFinalizerThread.cc b/libjava/gnu/gcj/runtime/natFinalizerThread.cc
index d296bc40551..ec1846baf6a 100644
--- a/libjava/gnu/gcj/runtime/natFinalizerThread.cc
+++ b/libjava/gnu/gcj/runtime/natFinalizerThread.cc
@@ -1,6 +1,6 @@
// natFinalizerThread.cc - Implementation of FinalizerThread native methods.
-/* Copyright (C) 2001 Free Software Foundation
+/* Copyright (C) 2001, 2004 Free Software Foundation
This file is part of libgcj.
@@ -15,8 +15,48 @@ details. */
#include <gnu/gcj/runtime/FinalizerThread.h>
+#include <java-threads.h>
+
+static _Jv_Mutex_t mutex;
+static _Jv_ConditionVariable_t condition;
+
+// Initialize lock & condition variable.
+void
+gnu::gcj::runtime::FinalizerThread::init ()
+{
+ _Jv_MutexInit (&mutex);
+ _Jv_CondInit (&condition);
+}
+
+// This is called by the GC when a finalizer is ready to be
+// run. It sets a flag and wakes up the finalizer thread. Note
+// that this MUST NOT aquire any Java lock, as this could result in
+// the hash synchronization code being re-entered: the synchronization
+// code itself might need to allocate. See PR 16478.
void
-gnu::gcj::runtime::FinalizerThread::runFinalizers ()
+gnu::gcj::runtime::FinalizerThread::finalizerReady ()
{
+#ifdef __JV_NO_THREADS__
_Jv_RunFinalizers ();
+#else
+ _Jv_MutexLock (&mutex);
+ finalizer_ready = true;
+ _Jv_CondNotify (&condition, &mutex);
+ _Jv_MutexUnlock (&mutex);
+#endif
+}
+
+// Main loop for the finalizer thread.
+void
+gnu::gcj::runtime::FinalizerThread::run ()
+{
+ while (true)
+ {
+ _Jv_MutexLock (&mutex);
+ if (! finalizer_ready)
+ _Jv_CondWait (&condition, &mutex, 0, 0);
+ finalizer_ready = false;
+ _Jv_MutexUnlock (&mutex);
+ _Jv_RunFinalizers ();
+ }
}
diff --git a/libjava/gnu/gcj/runtime/natFirstThread.cc b/libjava/gnu/gcj/runtime/natFirstThread.cc
deleted file mode 100644
index e3100c53fc0..00000000000
--- a/libjava/gnu/gcj/runtime/natFirstThread.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-// natFirstThread.cc - Implementation of FirstThread native methods.
-
-/* Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
-#include <config.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <gcj/cni.h>
-#include <jvm.h>
-
-#include <gnu/gcj/runtime/FirstThread.h>
-
-typedef void main_func (jobject);
-
-void
-gnu::gcj::runtime::FirstThread::call_main (void)
-{
- Utf8Const* main_signature = _Jv_makeUtf8Const ("([Ljava.lang.String;)V", 22);
- Utf8Const* main_name = _Jv_makeUtf8Const ("main", 4);
-
- _Jv_Method *meth = _Jv_LookupDeclaredMethod (klass, main_name,
- main_signature);
-
- // Some checks from Java Spec section 12.1.4.
- const char *msg = NULL;
- if (meth == NULL)
- msg = "no suitable method `main' in class";
- else if (! java::lang::reflect::Modifier::isStatic(meth->accflags))
- msg = "`main' must be static";
- else if (! java::lang::reflect::Modifier::isPublic(meth->accflags))
- msg = "`main' must be public";
- if (msg != NULL)
- {
- fprintf (stderr, "%s\n", msg);
- ::exit(1);
- }
-
- main_func *real_main = (main_func *) meth->ncode;
- (*real_main) (args);
-}
diff --git a/libjava/gnu/gcj/xlib/GC.java b/libjava/gnu/gcj/xlib/GC.java
index da427c9ab9d..1a47cf66da9 100644
--- a/libjava/gnu/gcj/xlib/GC.java
+++ b/libjava/gnu/gcj/xlib/GC.java
@@ -132,6 +132,11 @@ public class GC implements Cloneable
public native void clearArea(int x, int y, int w, int h,
boolean exposures);
+ /** Draw a point using the current foreground color
+ * @param x The x coordinate at which to draw
+ * @param t The y coordinate at which to draw
+ */
+ public native void drawPoint (int x, int y);
public native void putImage(XImage image,
int srcX, int srcY,
diff --git a/libjava/gnu/gcj/xlib/natGC.cc b/libjava/gnu/gcj/xlib/natGC.cc
index 3819da45005..4529ebb609f 100644
--- a/libjava/gnu/gcj/xlib/natGC.cc
+++ b/libjava/gnu/gcj/xlib/natGC.cc
@@ -117,6 +117,15 @@ void gnu::gcj::xlib::GC::drawString(jstring text, jint x, jint y)
XDrawString16(dpy, drawableXID, gc, x, y, xwchars, length);
}
+void gnu::gcj::xlib::GC::drawPoint(jint x, jint y)
+{
+ Display* display = target->getDisplay();
+ ::Display* dpy = (::Display*) (display->display);
+ ::Drawable drawableXID = target->getXID();
+ ::GC gc = (::GC) structure;
+ XDrawPoint (dpy, drawableXID, gc, x, y);
+}
+
void gnu::gcj::xlib::GC::drawLine(jint x1, jint y1, jint x2, jint y2)
{
Display* display = target->getDisplay();
diff --git a/libjava/gnu/java/awt/ClasspathToolkit.java b/libjava/gnu/java/awt/ClasspathToolkit.java
index 91401f4d5a2..92934593d39 100644
--- a/libjava/gnu/java/awt/ClasspathToolkit.java
+++ b/libjava/gnu/java/awt/ClasspathToolkit.java
@@ -48,6 +48,7 @@ import java.awt.GraphicsEnvironment;
import java.awt.HeadlessException;
import java.awt.Toolkit;
import java.awt.image.ColorModel;
+import java.awt.image.ImageProducer;
import java.io.File;
import java.io.InputStream;
import java.io.IOException;
@@ -331,4 +332,17 @@ public abstract class ClasspathToolkit
.initCause(muex);
}
}
+
+ /**
+ * Creates an ImageProducer from the specified URL. The image is assumed
+ * to be in a recognised format. If the toolkit does not implement the
+ * image format or the image format is not recognised, null is returned.
+ * This default implementation is overriden by the Toolkit implementations.
+ *
+ * @param url URL to read image data from.
+ */
+ public ImageProducer createImageProducer(URL url)
+ {
+ return null;
+ }
}
diff --git a/libjava/gnu/java/awt/ComponentDataBlitOp.java b/libjava/gnu/java/awt/ComponentDataBlitOp.java
index 3b2fa7f2ee0..aabfb7e78e8 100644
--- a/libjava/gnu/java/awt/ComponentDataBlitOp.java
+++ b/libjava/gnu/java/awt/ComponentDataBlitOp.java
@@ -36,9 +36,14 @@ exception statement from your version. */
package gnu.java.awt;
-import java.awt.geom.*;
-import java.awt.image.*;
import java.awt.RenderingHints;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.Raster;
+import java.awt.image.RasterOp;
+import java.awt.image.WritableRaster;
/**
* This raster copy operation assumes that both source and destination
diff --git a/libjava/gnu/java/awt/EmbeddedWindow.java b/libjava/gnu/java/awt/EmbeddedWindow.java
index ba0184a6307..08bc02755ea 100644
--- a/libjava/gnu/java/awt/EmbeddedWindow.java
+++ b/libjava/gnu/java/awt/EmbeddedWindow.java
@@ -1,5 +1,5 @@
/* EmbeddedWindow.java --
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -38,15 +38,21 @@ exception statement from your version. */
package gnu.java.awt;
+import gnu.classpath.Configuration;
import gnu.java.awt.peer.EmbeddedWindowPeer;
+import gnu.java.security.action.SetAccessibleAction;
+
+import java.awt.Component;
import java.awt.Frame;
import java.awt.Toolkit;
+import java.lang.reflect.Field;
+import java.security.AccessController;
/**
* Represents an AWT window that can be embedded into another
* application.
*
- * @author Michael Koch <konqueror@gmx.de>
+ * @author Michael Koch (konqueror@gmx.de)
*/
public class EmbeddedWindow extends Frame
{
@@ -84,16 +90,29 @@ public class EmbeddedWindow extends Frame
if (! (tk instanceof EmbeddedWindowSupport))
throw new UnsupportedOperationException
- ("Embedded windows are not supported by the current peers: " + tk.getClass());
+ ("Embedded windows are not supported by the current peers: "
+ + tk.getClass());
+
+ // Circumvent the package-privateness of the AWT internal
+ // java.awt.Component.peer member variable.
+ try
+ {
+ Field peerField = Component.class.getDeclaredField("peer");
+ AccessController.doPrivileged(new SetAccessibleAction(peerField));
+ peerField.set(this, ((EmbeddedWindowSupport) tk).createEmbeddedWindow (this));
+ }
+ catch (IllegalAccessException e)
+ {
+ // This should never happen.
+ }
+ catch (NoSuchFieldException e)
+ {
+ // This should never happen.
+ }
- setWindowPeer (((EmbeddedWindowSupport) tk).createEmbeddedWindow (this));
super.addNotify();
}
- // This method is only made native to circumvent the package-privateness of
- // an AWT internal java.awt.Component.peer member variable.
- native void setWindowPeer (EmbeddedWindowPeer peer);
-
/**
* If the native peer for this embedded window has been created,
* then setHandle will embed the window. If not, setHandle tells
diff --git a/libjava/gnu/java/awt/image/ImageDecoder.java b/libjava/gnu/java/awt/image/ImageDecoder.java
index ce7163d5601..233dfb1b28d 100644
--- a/libjava/gnu/java/awt/image/ImageDecoder.java
+++ b/libjava/gnu/java/awt/image/ImageDecoder.java
@@ -98,7 +98,9 @@ public abstract class ImageDecoder implements ImageProducer
public void startProduction (ImageConsumer ic)
{
+ if (!isConsumer(ic))
addConsumer (ic);
+
Vector list = (Vector) consumers.clone ();
try
{
diff --git a/libjava/gnu/java/awt/natEmbeddedWindow.cc b/libjava/gnu/java/awt/natEmbeddedWindow.cc
deleted file mode 100644
index 79cdd6797e0..00000000000
--- a/libjava/gnu/java/awt/natEmbeddedWindow.cc
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright (C) 2003 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
-#include <gnu/java/awt/EmbeddedWindow.h>
-#include <gnu/java/awt/peer/EmbeddedWindowPeer.h>
-#include <java/awt/peer/ComponentPeer.h>
-
-void
-gnu::java::awt::EmbeddedWindow::setWindowPeer (gnu::java::awt::peer::EmbeddedWindowPeer* w)
-{
- if (!peer)
- peer = reinterpret_cast< ::java::awt::peer::ComponentPeer *> (w);
-}
diff --git a/libjava/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java b/libjava/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
index 32c69871711..5c7fd96003b 100644
--- a/libjava/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
+++ b/libjava/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
@@ -77,19 +77,16 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder
public GdkPixbufDecoder (String filename)
{
super (filename);
- initState ();
}
public GdkPixbufDecoder (URL url)
{
super (url);
- initState ();
}
public GdkPixbufDecoder (byte[] imagedata, int imageoffset, int imagelength)
{
super (imagedata, imageoffset, imagelength);
- initState ();
}
// called back by native side
@@ -135,6 +132,7 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder
byte bytes[] = new byte[4096];
int len = 0;
+ initState();
while ((len = is.read (bytes)) != -1)
pumpBytes (bytes, len);
diff --git a/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java
index 48e63f3d19a..15e73d9c3f7 100644
--- a/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java
+++ b/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java
@@ -115,8 +115,6 @@ public class GtkComponentPeer extends GtkGenericPeer
this.awtComponent = awtComponent;
insets = new Insets (0, 0, 0, 0);
- /* temporary try/catch block until all peers use this creation method */
- try {
create ();
GtkArgList args = new GtkArgList ();
@@ -147,7 +145,7 @@ public class GtkComponentPeer extends GtkGenericPeer
Rectangle bounds = awtComponent.getBounds ();
setBounds (bounds.x, bounds.y, bounds.width, bounds.height);
- } catch (RuntimeException ex) { ; }
+ setVisible (awtComponent.isVisible ());
}
public int checkImage (Image image, int width, int height,
@@ -449,18 +447,14 @@ public class GtkComponentPeer extends GtkGenericPeer
public void setVisible (boolean b)
{
- set ("visible", b);
- }
-
- public void hide ()
- {
- setVisible (false);
+ if (b)
+ show ();
+ else
+ hide ();
}
- public void show ()
- {
- setVisible (true);
- }
+ public native void hide ();
+ public native void show ();
protected void postMouseEvent(int id, long when, int mods, int x, int y,
int clickCount, boolean popupTrigger)
@@ -514,7 +508,6 @@ public class GtkComponentPeer extends GtkGenericPeer
public void getArgs (Component component, GtkArgList args)
{
- args.add ("visible", component.isVisible ());
args.add ("sensitive", component.isEnabled ());
ComponentPeer p;
diff --git a/libjava/gnu/java/awt/peer/gtk/GtkContainerPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkContainerPeer.java
index 8ac927cbae6..040499724fd 100644
--- a/libjava/gnu/java/awt/peer/gtk/GtkContainerPeer.java
+++ b/libjava/gnu/java/awt/peer/gtk/GtkContainerPeer.java
@@ -90,7 +90,6 @@ public class GtkContainerPeer extends GtkComponentPeer
public void setBounds (int x, int y, int width, int height)
{
super.setBounds (x, y, width, height);
- awtComponent.validate ();
}
public void setFont(Font f)
diff --git a/libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
index 0e36439d16c..712247c4a85 100644
--- a/libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
+++ b/libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
@@ -45,6 +45,7 @@ import java.awt.Graphics;
import java.awt.event.WindowEvent;
import java.awt.peer.FileDialogPeer;
import java.io.FilenameFilter;
+import java.io.File;
public class GtkFileDialogPeer extends GtkDialogPeer implements FileDialogPeer
{
@@ -52,18 +53,34 @@ public class GtkFileDialogPeer extends GtkDialogPeer implements FileDialogPeer
private String currentFile = null;
private String currentDirectory = null;
+ private FilenameFilter filter;
- native void create ();
+ native void create (GtkContainerPeer parent);
+ native void connectJObject ();
+ native void connectSignals ();
+ native void nativeSetFile (String file);
+ native public String nativeGetDirectory();
+ native public void nativeSetDirectory(String directory);
+ native void nativeSetFilenameFilter (FilenameFilter filter);
+
+ public void create() {
+ create((GtkContainerPeer) awtComponent.getParent().getPeer());
+
+ FileDialog fd = (FileDialog) awtComponent;
+
+ setDirectory(fd.getDirectory());
+ setFile(fd.getFile());
+
+ FilenameFilter filter = fd.getFilenameFilter();
+ if (filter != null)
+ setFilenameFilter(filter);
+ }
public GtkFileDialogPeer (FileDialog fd)
{
super (fd);
}
- native void connectJObject ();
- native void connectSignals ();
- native void nativeSetFile (String file);
-
public void setFile (String fileName)
{
/* If nothing changed do nothing. This usually happens because
@@ -80,26 +97,16 @@ public class GtkFileDialogPeer extends GtkDialogPeer implements FileDialogPeer
return;
}
- // Remove any directory path from the filename
- int sepIndex = fileName.lastIndexOf (FS);
- if (sepIndex < 0)
- {
+ // GtkFileChooser requires absolute filenames. If the given filename
+ // is not absolute, let's construct it based on current directory.
currentFile = fileName;
+ if (fileName.indexOf(FS) == 0)
+ {
nativeSetFile (fileName);
}
else
{
- if (fileName.length() > (sepIndex + 1))
- {
- String fn = fileName.substring (sepIndex + 1);
- currentFile = fn;
- nativeSetFile (fn);
- }
- else
- {
- currentFile = "";
- nativeSetFile ("");
- }
+ nativeSetFile (nativeGetDirectory() + FS + fileName);
}
}
@@ -120,20 +127,25 @@ public class GtkFileDialogPeer extends GtkDialogPeer implements FileDialogPeer
}
currentDirectory = directory;
-
- // Gtk expects the directory to end with a file separator
- if (directory.substring (directory.length () - 1).equals (FS))
- nativeSetFile (directory);
- else
- nativeSetFile (directory + FS);
+ nativeSetDirectory (directory);
}
public void setFilenameFilter (FilenameFilter filter)
{
- /* GTK has no filter callbacks yet. It works by setting a pattern
- * (see gtk_file_selection_complete), which we can't convert
- * to the callback paradigm. With GTK-2.4 there will be a
- * gtk_file_filter_add_custom function that we can use. */
+ this.filter = filter;
+ nativeSetFilenameFilter(filter);
+ }
+
+ /* This method interacts with the native callback function of the
+ same name. The native function will extract the filename from the
+ GtkFileFilterInfo object and send it to this method, which will
+ in turn call the filter's accept() method and give back the return
+ value. */
+ boolean filenameFilterCallback (String fullname) {
+ String filename = fullname.substring(fullname.lastIndexOf(FS) + 1);
+ String dirname = fullname.substring(0, fullname.lastIndexOf(FS));
+ File dir = new File(dirname);
+ return filter.accept(dir, filename);
}
public Graphics getGraphics ()
diff --git a/libjava/gnu/java/awt/peer/gtk/GtkImage.java b/libjava/gnu/java/awt/peer/gtk/GtkImage.java
index 57c3d45c697..27d3d6a0655 100644
--- a/libjava/gnu/java/awt/peer/gtk/GtkImage.java
+++ b/libjava/gnu/java/awt/peer/gtk/GtkImage.java
@@ -202,7 +202,7 @@ public class GtkImage extends Image implements ImageConsumer
public synchronized void
setColorModel (ColorModel model)
{
- if (this.model == null || this.model == model)
+ if (this.model == null || this.model.equals(model))
this.model = model;
else
isCacheable = false;
@@ -235,7 +235,7 @@ public class GtkImage extends Image implements ImageConsumer
if (!isCacheable)
return;
- if (cm != model || pixelCache == null)
+ if (!cm.equals(model) || pixelCache == null)
{
isCacheable = false;
return;
diff --git a/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java b/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java
index 16f36d303f3..d15cb4a4acf 100644
--- a/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java
+++ b/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java
@@ -246,5 +246,6 @@ public class GtkImagePainter implements Runnable, ImageConsumer
public void
imageComplete (int status)
{
+ image.imageComplete(status);
}
}
diff --git a/libjava/gnu/java/awt/peer/gtk/GtkPanelPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkPanelPeer.java
index 70aab2ca59d..0b5d0af4342 100644
--- a/libjava/gnu/java/awt/peer/gtk/GtkPanelPeer.java
+++ b/libjava/gnu/java/awt/peer/gtk/GtkPanelPeer.java
@@ -38,7 +38,9 @@ exception statement from your version. */
package gnu.java.awt.peer.gtk;
+import java.awt.AWTEvent;
import java.awt.Panel;
+import java.awt.event.MouseEvent;
import java.awt.peer.PanelPeer;
public class GtkPanelPeer extends GtkContainerPeer
@@ -51,4 +53,17 @@ public class GtkPanelPeer extends GtkContainerPeer
{
super (p);
}
+
+ public void handleEvent (AWTEvent event)
+ {
+ int id = event.getID();
+
+ switch (id)
+ {
+ case MouseEvent.MOUSE_PRESSED:
+ awtComponent.requestFocusInWindow ();
+ break;
+ }
+ super.handleEvent (event);
+ }
}
diff --git a/libjava/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java b/libjava/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java
index e4f5e8f312c..d0cbde034e2 100644
--- a/libjava/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java
+++ b/libjava/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java
@@ -39,6 +39,7 @@ exception statement from your version. */
package gnu.java.awt.peer.gtk;
import java.awt.Adjustable;
+import java.awt.Dimension;
import java.awt.ScrollPane;
import java.awt.peer.ComponentPeer;
import java.awt.peer.ScrollPanePeer;
@@ -87,10 +88,10 @@ public class GtkScrollPanePeer extends GtkContainerPeer
native public int getVScrollbarWidth ();
native public void setScrollPosition (int x, int y);
-// public Dimension getPreferredSize ()
-// {
-// return new Dimension (60, 60);
-// }
+ public Dimension getPreferredSize ()
+ {
+ return awtComponent.getSize();
+ }
public void setUnitIncrement (Adjustable adj, int u)
{
diff --git a/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java b/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java
index c55001591c4..3f82159c3ab 100644
--- a/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java
+++ b/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java
@@ -44,13 +44,17 @@ import java.awt.dnd.DragGestureEvent;
import java.awt.dnd.peer.DragSourceContextPeer;
import java.awt.font.TextAttribute;
import java.awt.im.InputMethodHighlight;
+import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.ImageObserver;
+import java.awt.image.ImageConsumer;
import java.awt.image.ImageProducer;
import java.awt.GraphicsEnvironment;
import java.awt.peer.*;
import java.net.URL;
+import java.util.HashSet;
import java.util.Hashtable;
+import java.util.Iterator;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.Properties;
@@ -127,10 +131,102 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
return status;
}
+ /**
+ * A helper class to return to clients in cases where a BufferedImage is
+ * desired but its construction fails.
+ */
+ private class GtkErrorImage extends Image
+ {
+ public GtkErrorImage()
+ {
+ }
+
+ public int getWidth(ImageObserver observer)
+ {
+ return -1;
+ }
+
+ public int getHeight(ImageObserver observer)
+ {
+ return -1;
+ }
+
+ public ImageProducer getSource()
+ {
+
+ return new ImageProducer()
+ {
+ HashSet consumers = new HashSet();
+ public void addConsumer(ImageConsumer ic)
+ {
+ consumers.add(ic);
+ }
+
+ public boolean isConsumer(ImageConsumer ic)
+ {
+ return consumers.contains(ic);
+ }
+
+ public void removeConsumer(ImageConsumer ic)
+ {
+ consumers.remove(ic);
+ }
+
+ public void startProduction(ImageConsumer ic)
+ {
+ consumers.add(ic);
+ Iterator i = consumers.iterator();
+ while(i.hasNext())
+ {
+ ImageConsumer c = (ImageConsumer) i.next();
+ c.imageComplete(ImageConsumer.IMAGEERROR);
+ }
+ }
+ public void requestTopDownLeftRightResend(ImageConsumer ic)
+ {
+ startProduction(ic);
+ }
+ };
+ }
+
+ public Graphics getGraphics()
+ {
+ return null;
+ }
+
+ public Object getProperty(String name, ImageObserver observer)
+ {
+ return null;
+ }
+ public Image getScaledInstance(int width, int height, int flags)
+ {
+ return new GtkErrorImage();
+ }
+
+ public void flush()
+ {
+ }
+ }
+
+
+ /**
+ * Helper to return either a BufferedImage -- the argument -- or a
+ * GtkErrorImage if the argument is null.
+ */
+
+ private Image bufferedImageOrError(BufferedImage b)
+ {
+ if (b == null)
+ return new GtkErrorImage();
+ else
+ return b;
+ }
+
+
public Image createImage (String filename)
{
if (useGraphics2D())
- return GdkPixbufDecoder.createBufferedImage (filename);
+ return bufferedImageOrError(GdkPixbufDecoder.createBufferedImage (filename));
else
{
GdkPixbufDecoder d = new GdkPixbufDecoder (filename);
@@ -143,7 +239,7 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
public Image createImage (URL url)
{
if (useGraphics2D())
- return GdkPixbufDecoder.createBufferedImage (url);
+ return bufferedImageOrError(GdkPixbufDecoder.createBufferedImage (url));
else
{
GdkPixbufDecoder d = new GdkPixbufDecoder (url);
@@ -156,7 +252,7 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
public Image createImage (ImageProducer producer)
{
if (useGraphics2D())
- return GdkPixbufDecoder.createBufferedImage (producer);
+ return bufferedImageOrError(GdkPixbufDecoder.createBufferedImage (producer));
else
{
GtkImage image = new GtkImage (producer, null);
@@ -169,9 +265,9 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
int imagelength)
{
if (useGraphics2D())
- return GdkPixbufDecoder.createBufferedImage (imagedata,
+ return bufferedImageOrError(GdkPixbufDecoder.createBufferedImage (imagedata,
imageoffset,
- imagelength);
+ imagelength));
else
{
GdkPixbufDecoder d = new GdkPixbufDecoder (imagedata,
@@ -182,6 +278,17 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
return image;
}
}
+
+ /**
+ * Creates an ImageProducer from the specified URL. The image is assumed
+ * to be in a recognised format.
+ *
+ * @param url URL to read image data from.
+ */
+ public ImageProducer createImageProducer(URL url)
+ {
+ return new GdkPixbufDecoder(url);
+ }
public ColorModel getColorModel ()
{
diff --git a/libjava/gnu/java/beans/ExplicitBeanInfo.java b/libjava/gnu/java/beans/ExplicitBeanInfo.java
index 0618c71d5df..410be70cd2c 100644
--- a/libjava/gnu/java/beans/ExplicitBeanInfo.java
+++ b/libjava/gnu/java/beans/ExplicitBeanInfo.java
@@ -38,7 +38,11 @@ exception statement from your version. */
package gnu.java.beans;
-import java.beans.*;
+import java.beans.BeanDescriptor;
+import java.beans.BeanInfo;
+import java.beans.EventSetDescriptor;
+import java.beans.MethodDescriptor;
+import java.beans.PropertyDescriptor;
/**
** ExplicitBeanInfo lets you specify in the constructor
diff --git a/libjava/gnu/java/beans/IntrospectionIncubator.java b/libjava/gnu/java/beans/IntrospectionIncubator.java
index 1b853971aa4..b17fc97bedd 100644
--- a/libjava/gnu/java/beans/IntrospectionIncubator.java
+++ b/libjava/gnu/java/beans/IntrospectionIncubator.java
@@ -38,10 +38,22 @@ exception statement from your version. */
package gnu.java.beans;
-import java.beans.*;
-import java.util.*;
-import java.lang.reflect.*;
-import gnu.java.lang.*;
+import gnu.java.lang.ArrayHelper;
+import gnu.java.lang.ClassHelper;
+
+import java.beans.BeanInfo;
+import java.beans.EventSetDescriptor;
+import java.beans.IndexedPropertyDescriptor;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.MethodDescriptor;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Array;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Vector;
/**
** IntrospectionIncubator takes in a bunch of Methods, and
diff --git a/libjava/gnu/java/beans/editors/ColorEditor.java b/libjava/gnu/java/beans/editors/ColorEditor.java
index 2b607cdcf66..8536335726f 100644
--- a/libjava/gnu/java/beans/editors/ColorEditor.java
+++ b/libjava/gnu/java/beans/editors/ColorEditor.java
@@ -38,8 +38,8 @@ exception statement from your version. */
package gnu.java.beans.editors;
-import java.beans.*;
import java.awt.Color;
+import java.beans.PropertyEditorSupport;
/**
** NativeByteEditor is a property editor for the
diff --git a/libjava/gnu/java/beans/editors/FontEditor.java b/libjava/gnu/java/beans/editors/FontEditor.java
index 762fef9fbe8..d634dac1541 100644
--- a/libjava/gnu/java/beans/editors/FontEditor.java
+++ b/libjava/gnu/java/beans/editors/FontEditor.java
@@ -38,8 +38,8 @@ exception statement from your version. */
package gnu.java.beans.editors;
-import java.beans.*;
import java.awt.Font;
+import java.beans.PropertyEditorSupport;
/**
** FontEditor is a property editor for java.awt.Font.
diff --git a/libjava/gnu/java/beans/editors/NativeBooleanEditor.java b/libjava/gnu/java/beans/editors/NativeBooleanEditor.java
index 9fb14381bb5..84ffdb9e320 100644
--- a/libjava/gnu/java/beans/editors/NativeBooleanEditor.java
+++ b/libjava/gnu/java/beans/editors/NativeBooleanEditor.java
@@ -38,7 +38,7 @@ exception statement from your version. */
package gnu.java.beans.editors;
-import java.beans.*;
+import java.beans.PropertyEditorSupport;
/**
** NativeBooleanEditor is a property editor for the
diff --git a/libjava/gnu/java/beans/editors/NativeByteEditor.java b/libjava/gnu/java/beans/editors/NativeByteEditor.java
index 7ff9a925e1c..2d41f29e3f8 100644
--- a/libjava/gnu/java/beans/editors/NativeByteEditor.java
+++ b/libjava/gnu/java/beans/editors/NativeByteEditor.java
@@ -38,7 +38,7 @@ exception statement from your version. */
package gnu.java.beans.editors;
-import java.beans.*;
+import java.beans.PropertyEditorSupport;
/**
** NativeByteEditor is a property editor for the
diff --git a/libjava/gnu/java/beans/editors/NativeDoubleEditor.java b/libjava/gnu/java/beans/editors/NativeDoubleEditor.java
index 7b384b63be0..a06b5e08f7e 100644
--- a/libjava/gnu/java/beans/editors/NativeDoubleEditor.java
+++ b/libjava/gnu/java/beans/editors/NativeDoubleEditor.java
@@ -38,7 +38,7 @@ exception statement from your version. */
package gnu.java.beans.editors;
-import java.beans.*;
+import java.beans.PropertyEditorSupport;
/**
** NativeDoubleEditor is a property editor for the
diff --git a/libjava/gnu/java/beans/editors/NativeFloatEditor.java b/libjava/gnu/java/beans/editors/NativeFloatEditor.java
index 8cb9313f0b6..b76a9625524 100644
--- a/libjava/gnu/java/beans/editors/NativeFloatEditor.java
+++ b/libjava/gnu/java/beans/editors/NativeFloatEditor.java
@@ -38,7 +38,7 @@ exception statement from your version. */
package gnu.java.beans.editors;
-import java.beans.*;
+import java.beans.PropertyEditorSupport;
/**
** NativeFloatEditor is a property editor for the
diff --git a/libjava/gnu/java/beans/editors/NativeIntEditor.java b/libjava/gnu/java/beans/editors/NativeIntEditor.java
index ae47f145740..fcb42965207 100644
--- a/libjava/gnu/java/beans/editors/NativeIntEditor.java
+++ b/libjava/gnu/java/beans/editors/NativeIntEditor.java
@@ -38,7 +38,7 @@ exception statement from your version. */
package gnu.java.beans.editors;
-import java.beans.*;
+import java.beans.PropertyEditorSupport;
/**
** NativeIntEditor is a property editor for the
diff --git a/libjava/gnu/java/beans/editors/NativeLongEditor.java b/libjava/gnu/java/beans/editors/NativeLongEditor.java
index 22d57c49dde..4facba97ba3 100644
--- a/libjava/gnu/java/beans/editors/NativeLongEditor.java
+++ b/libjava/gnu/java/beans/editors/NativeLongEditor.java
@@ -38,7 +38,7 @@ exception statement from your version. */
package gnu.java.beans.editors;
-import java.beans.*;
+import java.beans.PropertyEditorSupport;
/**
** NativeLongEditor is a property editor for the
diff --git a/libjava/gnu/java/beans/editors/NativeShortEditor.java b/libjava/gnu/java/beans/editors/NativeShortEditor.java
index 27dc8ae0b29..326a517928e 100644
--- a/libjava/gnu/java/beans/editors/NativeShortEditor.java
+++ b/libjava/gnu/java/beans/editors/NativeShortEditor.java
@@ -38,7 +38,7 @@ exception statement from your version. */
package gnu.java.beans.editors;
-import java.beans.*;
+import java.beans.PropertyEditorSupport;
/**
** NativeShortEditor is a property editor for the
diff --git a/libjava/gnu/java/beans/editors/StringEditor.java b/libjava/gnu/java/beans/editors/StringEditor.java
index d47dadde315..3e7fe778869 100644
--- a/libjava/gnu/java/beans/editors/StringEditor.java
+++ b/libjava/gnu/java/beans/editors/StringEditor.java
@@ -38,7 +38,7 @@ exception statement from your version. */
package gnu.java.beans.editors;
-import java.beans.*;
+import java.beans.PropertyEditorSupport;
/**
** NativeByteEditor is a property editor for the
diff --git a/libjava/gnu/java/io/ClassLoaderObjectInputStream.java b/libjava/gnu/java/io/ClassLoaderObjectInputStream.java
index 2ae90b42e65..5368ec90e87 100644
--- a/libjava/gnu/java/io/ClassLoaderObjectInputStream.java
+++ b/libjava/gnu/java/io/ClassLoaderObjectInputStream.java
@@ -38,7 +38,10 @@ exception statement from your version. */
package gnu.java.io;
-import java.io.*;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.StreamCorruptedException;
/**
* ClassLoaderObjectInputStream is ObjectInputStream, with
diff --git a/libjava/gnu/java/lang/CharData.java b/libjava/gnu/java/lang/CharData.java
index 00eeb45a6be..a0a3d36a442 100644
--- a/libjava/gnu/java/lang/CharData.java
+++ b/libjava/gnu/java/lang/CharData.java
@@ -41,8 +41,9 @@ package gnu.java.lang;
/**
* This contains the info about the unicode characters, that
* java.lang.Character needs. It is generated automatically from
- * <code>gnu/gcj/convert/UnicodeData-3.0.0.txt</code>, by some
- * perl scripts. This Unicode definition file can be found on the
+ * <code>gnu/gcj/convert/UnicodeData-3.0.0.txt</code> and
+ * <code>gnu/gcj/convert/SpecialCasing-2.txt</code>, by some
+ * perl scripts. These Unicode definition files can be found on the
* <a href="http://www.unicode.org">http://www.unicode.org</a> website.
* JDK 1.4 uses Unicode version 3.0.0.
*
@@ -54,13 +55,18 @@ package gnu.java.lang;
* into the attribute tables <code>UPPER</code>, <code>LOWER</code>,
* <code>NUM_VALUE</code>, and <code>DIRECTION</code>. Notice that the
* attribute tables are much smaller than 0xffff entries; as many characters
- * in Unicode share common attributes. Finally, there is a listing for
- * <code>TITLE</code> exceptions (most characters just have the same
- * title case as upper case).
+ * in Unicode share common attributes. The DIRECTION table also contains
+ * a field for detecting characters with multi-character uppercase expansions.
+ * Next, there is a listing for <code>TITLE</code> exceptions (most characters
+ * just have the same title case as upper case). Finally, there are two
+ * tables for multi-character capitalization, <code>UPPER_SPECIAL</code>
+ * which lists the characters which are special cased, and
+ * <code>UPPER_EXPAND</code>, which lists their expansion.
*
* @author scripts/unicode-muncher.pl (written by Jochen Hoenicke,
* Eric Blake)
* @see Character
+ * @see String
*/
public interface CharData
{
@@ -82,193 +88,193 @@ public interface CharData
* character gives the actual index into <code>DATA</code>.
*/
String BLOCKS
- = "\u01c2\u01c2\u01c1\u012c\u012b\u01a0\u01f8\u027e\u0201\u0290\u01b7"
- + "\u02c9\u0157\u02a9\u023f\u01b8\u0101\u0257\u02f9\u02f9\u0370\u0363"
- + "\ufe8f\u033e\uff85\uff65\ufdb5\ufda1\uffbd\u02be\uffbe\uffe9\ufea8"
- + "\uff2e\u022f\ufea1\uff9d\ufe61\uffa9\ufb20\u00c3\u010d\u00fe\ufb61"
- + "\ufb5a\u0105\u0103\u00f8\ufe8b\u0223\u0258\u01c1\u01f6\u01d6\ufee1"
- + "\u0223\ufdaa\ufb55\u0163\ufe63\u00f6\u00fd\ufe03\ufde3\ufdc3\ufda3"
- + "\ufd83\ufd63\ufd43\ufd23\ufd03\ufce3_J\u00a5\u0133\ufe08"
- + "]\u014f\u01a2\uf669\u0123\u0122\uf8c1\ufe50\u0102\u0101\ufa43"
- + "\ufc88\ufea7\u00c0\ufca1\ufb8f\uf47d\u0099\ufb11\ufe1a\ufd22\ufb29"
- + "5\uf3b9\ufe51\ufcc8\uffb5\uf339\ufa92\uff85\uff35\ufa4e\uf766"
- + "\uff25\ufad1\ufb63\ufc34\ufedf\uf763\ufcaa\ufa82\ufdb9\uf6e3\ufe3f"
- + "\ufcc1\ufe49\uf7eb\uf70f\uf2e8\ufd99\uf5e3\uf964\ufbfc\ufd91\uf563"
- + "\uf543\uf43c\uf436\uef6b\uf864\uf844\ufc52\uf804\uf7e4\ufc09\uf7a4"
- + "\uee9c\ufb8a\uf744\uf7f4\uf704\uf7c4\uf78c\uf46b\uf4cc\uf72c\uf644"
- + "\uf3fb\uf647\uf243\uf5c4\uf5a4\ueca1\uf563\uf544\uf524\uf504\uf4e4"
- + "\uf4c4\uf4a4\uf484\uf464\uf444\uf424\uf404\uf3e4\uf3c4\uf3a4\uf384"
- + "\uf364\uf344\uf324\uf283\uf771\uf2c4\uf2a4\uf731\ueec3\ueea3\uee83"
- + "\uee63\uf1e4\uf49c\uf53f\ued49\uf2d1\uf144\ue8ed\ue81e\uf0e4\uf591"
- + "\ued03\uece3\uecc3\ueca3\uec83\uec63\uec43\uec23\uec03\uebe3\uebc3"
- + "\ueba3\ueb83\ueb63\ueb43\ueb23\ueb03\ueae3\ueac3\ueaa3\uea83\uea63"
- + "\uea43\uea23\uea03\ue9e3\ue9c3\ue9a3\ue983\ue963\ue943\ue923\ue903"
- + "\ue8e3\ue8c3\ue8a3\ue883\ue863\ue843\ue823\ue803\ue7e3\ue501\ue4e1"
- + "\ue4c1\ue4a1\uefd1\ue461\ue441\ue427\uef81\uef51\uef51\uef51\uef51"
- + "\uef41\ue1ad\uef40\uef40\uef40\ue1e0\ue37f\uef00\ue9d3\uebe5\ue4df"
- + "\ueece\uef5f\ue490\uef3f\ueee3\uef76\uee6e\uef6a\uef77\uef72\uee8b"
- + "\uefcd\uee77\uee1f\uee21\uef5f\uefd7\uee90\uefcd\uefdb\uef63\ue223"
- + "\ue203\ue1e3\ued25\ued37\ued13\uef16\uef02\ued41\ued37\ued2d\uec25"
- + "\uec05\uebe5\uebc5\uebc8\uea76\ueb63\ueb66\ue9b0\ueb05\ueae5\ue9e3"
- + "\udf43\udf23\udf03\udee3\ue90a\uea1d\ueb52\ueb49\ueb3f\ueadf\ude03"
- + "\udde3\ue925\ue905\ue8e5\ue8c5\ue8a5\ue885\ue865\ue845\udcc3\udca3"
- + "\udc83\udc63\udc43\udc23\udc03\udbe3\udbc3\udba3\udb83\udb63\udb43"
- + "\udb23\udb03\udae3\udac3\udaa3\uda83\uda63\uda43\uda23\uda03\ud9e3"
- + "\ud9c3\ud9a3\ud983\ud963\ud943\ud923\ud903\ud8e3\ud8c3\ud8a3\ud883"
- + "\ud863\ud843\ud823\ud803\ud7e3\ud7c3\ud7a3\ud783\ud763\ue2ab\ue285"
- + "\ue265\ue26a\ue225\ue205\ue1e5\ue1c5\ue1a5\ue185\ue188\udd89\ue3a2"
- + "\udfcd\ud923\ud904\ue342\ud8c3\ud8a4\udcd1\udcac\ud67b\ud824\ud804"
- + "\ue262\ucede\ud403\ud3e3\ue110\ue0e3\ue1c5\ue0b1\ue0b1\ue158\udf11"
- + "\ue02e\ue00d\udfed\udfcd\ude66\udf8d\udf6d\udf4f\udf2e\ud564\ud544"
- + "\ud524\ud504\ud4e4\ud4c4\ud4a4\ud484\ud464\ud444\ud424\ud404\ud3e4"
- + "\ud3c4\ud3a4\ud384\ud364\ud344\ud324\ud304\ud2e4\ud2c4\ud2a4\ud284"
- + "\ud264\ud244\ud224\ud204\ud1e4\ud1c4\ud1a4\ud184\ud164\ud144\ud124"
- + "\ud104\ud0e4\ud0c4\ud0a4\ud084\ud064\ud044\ud024\ud004\ucfe4\ucfc4"
- + "\ucfa4\ucf84\ucf64\ucf44\ucf24\ucf04\ucee4\ucec4\ucea4\uce84\uce64"
- + "\uce44\uce24\uce04\ucde4\ucdc4\ucda4\ucd84\ucd64\ucd44\ucd24\ucd04"
- + "\ucce4\uccc4\ucca4\ucc84\ucc64\ucc44\ucc24\ucc04\ucbe4\ucbc4\ucba4"
- + "\ucb84\ucb64\ucb44\ucb24\ucb04\ucae4\ucac4\ucaa4\uca84\uca64\uca44"
- + "\uca24\uca04\uc9e4\uc9c4\uc9a4\uc984\uc964\uc944\uc924\uc904\uc8e4"
- + "\uc8c4\uc8a4\uc884\uc864\uc844\uc824\uc804\uc7e4\uc7c4\uc7a4\uc784"
- + "\uc764\uc744\uc724\uc704\uc6e4\uc6c4\uc6a4\uc684\uc664\uc644\uc624"
- + "\uc604\uc5e4\uc5c4\uc5a4\uc584\uc564\uc544\uc524\uc504\uc4e4\uc4c4"
- + "\uc4a4\uc484\uc464\uc444\uc424\uc404\uc3e4\uc3c4\uc3a4\uc384\uc364"
- + "\uc344\uc324\uc304\uc2e4\uc2c4\uc2a4\uc284\uc264\uc244\uc224\uc204"
- + "\uc1e4\uc1c4\uc1a4\uc184\uc164\uc144\uc124\uc104\uc0e4\uc0c4\uc0a4"
- + "\uc084\uc064\uc044\uc024\uc004\ubfe4\ubfc4\ubfa4\ubf84\ubf64\ubf44"
- + "\ubf24\ubf04\ubee4\ubec4\ubea4\ube84\ube64\ube44\ube24\ube04\ubde4"
- + "\ubdc4\ubda4\ubd84\ubd64\ubd44\ubd24\ubd04\ubce4\ubcc4\ubca4\ubc84"
- + "\ubc64\ubc44\ubc24\ubc04\ubbe4\ub2e0\ub803\ub7e3\ubb64\ubb44\ubb24"
- + "\ubb04\ubae4\ubac4\ubaa4\uba84\uba64\uba44\uba24\uba04\ub9e4\ub9c4"
- + "\ub9a4\ub984\ub964\ub944\ub924\ub904\ub8e4\ub8c4\ub8a4\ub884\ub864"
- + "\ub844\ub824\ub804\ub7e4\ub7c4\ub7a4\ub784\ub764\ub744\ub724\ub704"
- + "\ub6e4\ub6c4\ub6a4\ub684\ub664\ub644\ub624\ub604\ub5e4\ub5c4\ub5a4"
- + "\ub584\ub564\ub544\ub524\ub504\ub4e4\ub4c4\ub4a4\ub484\ub464\ub444"
- + "\ub424\ub404\ub3e4\ub3c4\ub3a4\ub384\ub364\ub344\ub324\ub304\ub2e4"
- + "\ub2c4\ub2a4\ub284\ub264\ub244\ub224\ub204\ub1e4\ub1c4\ub1a4\ub184"
- + "\ub164\ub144\ub124\ub104\ub0e4\ub0c4\ub0a4\ub084\ub064\ub044\ub024"
- + "\ub004\uafe4\uafc4\uafa4\uaf84\uaf64\uaf44\uaf24\uaf04\uaee4\uaec4"
- + "\uaea4\uae84\uae64\uae44\uae24\uae04\uade4\uadc4\uada4\uad84\uad64"
- + "\uad44\uad24\uad04\uace4\uacc4\uaca4\uac84\uac64\uac44\uac24\uac04"
- + "\uabe4\uabc4\uaba4\uab84\uab64\uab44\uab24\uab04\uaae4\uaac4\uaaa4"
- + "\uaa84\uaa64\uaa44\uaa24\uaa04\ua9e4\ua9c4\ua9a4\ua984\ua964\ua944"
- + "\ua924\ua904\ua8e4\ua8c4\ua8a4\ua884\ua864\ua844\ua824\ua804\ua7e4"
- + "\ua7c4\ua7a4\ua784\ua764\ua744\ua724\ua704\ua6e4\ua6c4\ua6a4\ua684"
- + "\ua664\ua644\ua624\ua604\ua5e4\ua5c4\ua5a4\ua584\ua564\ua544\ua524"
- + "\ua504\ua4e4\ua4c4\ua4a4\ua484\ua464\ua444\ua424\ua404\ua3e4\ua3c4"
- + "\ua3a4\ua384\ua364\ua344\ua324\ua304\ua2e4\ua2c4\ua2a4\ua284\ua264"
- + "\ua244\ua224\ua204\ua1e4\ua1c4\ua1a4\ua184\ua164\ua144\ua124\ua104"
- + "\ua0e4\ua0c4\ua0a4\ua084\ua064\ua044\ua024\ua004\u9fe4\u9fc4\u9fa4"
- + "\u9f84\u9f64\u9f44\u9f24\u9f04\u9ee4\u9ec4\u9ea4\u9e84\u9e64\u9e44"
- + "\u9e24\u9e04\u9de4\u9dc4\u9da4\u9d84\u9d64\u9d44\u9d24\u9d04\u9ce4"
- + "\u9cc4\u9ca4\u9c84\u9c64\u9c44\u9c24\u9c04\u9be4\u9bc4\u9ba4\u9b84"
- + "\u9b64\u9b44\u9b24\u9b04\u9ae4\u9ac4\u9aa4\u9a84\u9a64\u9a44\u9a24"
- + "\u9a04\u99e4\u99c4\u99a4\u9984\u9964\u9944\u9924\u9904\u98e4\u98c4"
- + "\u98a4\u9884\u9864\u9844\u9824\u9804\u97e4\u97c4\u97a4\u9784\u9764"
- + "\u9744\u9724\u9704\u96e4\u96c4\u96a4\u9684\u9664\u9644\u9624\u9604"
- + "\u95e4\u95c4\u95a4\u9584\u9564\u9544\u9524\u9504\u94e4\u94c4\u94a4"
- + "\u9484\u9464\u9444\u9424\u9404\u93e4\u93c4\u93a4\u9384\u9364\u9344"
- + "\u9324\u9304\u92e4\u92c4\u92a4\u9284\u9264\u9244\u9224\u9204\u91e4"
- + "\u91c4\u91a4\u9184\u9164\u9144\u9124\u9104\u90e4\u90c4\u90a4\u9084"
- + "\u9064\u9044\u9024\u9004\u8fe4\u8fc4\u8fa4\u8f84\u8f64\u8f44\u8f24"
- + "\u8f04\u8ee4\u8ec4\u8ea4\u8e84\u8e64\u8e44\u8e24\u8e04\u8de4\u8dc4"
- + "\u8da4\u8d84\u8d64\u8d44\u8d24\u8d04\u8ce4\u8cc4\u8ca4\u8c84\u8c64"
- + "\u8c44\u8c24\u8c04\u8be4\u8bc4\u8ba4\u8b84\u8b64\u8b44\u8b24\u8b04"
- + "\u8ae4\u8ac4\u8aa4\u8a84\u8a64\u8a44\u8a24\u8a04\u89e4\u89c4\u89a4"
- + "\u8984\u8964\u8944\u8924\u8904\u88e4\u88c4\u88a4\u8884\u8864\u8844"
- + "\u8824\u8804\u87e4\u87c4\u87a4\u8784\u8764\u8744\u8724\u8704\u86e4"
- + "\u86c4\u86a4\u8684\u8664\u8644\u8624\u8604\u85e4\u85c4\u85a4\u8584"
- + "\u8564\u8544\u8524\u8504\u84e4\u84c4\u84a4\u8484\u8464\u8444\u8424"
- + "\u8404\u83e4\u83c4\u83a4\u8384\u8364\u8344\u8324\u8304\u82e4\u82c4"
- + "\u82a4\u8284\u8264\u8244\u8224\u8204\u81e4\u81c4\u81a4\u8184\u8164"
- + "\u8144\u8124\u8104\u80e4\u80c4\u80a4\u8084\u8064\u8044\u8024\u8004"
- + "\u7fe4\u7fc4\u7fa4\u7f84\u7f64\u7f44\u7f24\u7f04\u7ee4\u7ec4\u7ea4"
- + "\u7e84\u7e64\u7e44\u7e24\u7e04\u7de4\u7dc4\u7da4\u7d84\u7d64\u7d44"
- + "\u7d24\u7d04\u7ce4\u7cc4\u7ca4\u7c84\u7c64\u7c44\u7c24\u7c04\u7be4"
- + "\u7bc4\u7ba4\u7b84\u7b64\u7b44\u7b24\u7b04\u7ae4\u7ac4\u7aa4\u7a84"
- + "\u7a64\u7a44\u7a24\u7a04\u79e4\u79c4\u79a4\u7984\u7964\u7944\u7924"
- + "\u7904\u78e4\u78c4\u78a4\u7884\u7864\u7844\u7824\u7804\u77e4\u77c4"
- + "\u77a4\u7784\u7764\u7744\u7724\u7704\u76e4\u76c4\u76a4\u7684\u7664"
- + "\u7644\u7624\u7604\u75e4\u75c4\u75a4\u7584\u7564\u7544\u7524\u7504"
- + "\u74e4\u74c4\u74a4\u7484\u7464\u7444\u7424\u7404\u73e4\u73c4\u73a4"
- + "\u7384\u7364\u7344\u7324\u7304\u72e4\u72c4\u72a4\u7284\u7264\u7244"
- + "\u7224\u7204\u71e4\u71c4\u71a4\u7184\u7164\u7144\u7124\u7104\u70e4"
- + "\u70c4\u70a4\u7084\u7064\u7044\u7024\u7004\u6fe4\u6fc4\u6fa4\u6f84"
- + "\u6f64\u6f44\u6f24\u6f04\u6ee4\u6ec4\u6ea4\u6e84\u6e64\u6e44\u6e24"
- + "\u6e04\u6de4\u6dc4\u6da4\u6d84\u6d64\u6d44\u6d24\u6d04\u6ce4\u6cc4"
- + "\u6ca4\u6c84\u6c64\u6c44\u6c24\u6c04\u6be4\u6bc4\u6ba4\u6b84\u6b64"
- + "\u6b44\u6b24\u6b04\u6ae4\u6ac4\u6aa4\u6a84\u6a64\u6a44\u6a24\u6a04"
- + "\u69e4\u60f0\u6603\u65e3\u6964\u6944\u6924\u6904\u68e4\u68c4\u68a4"
- + "\u6884\u6864\u6844\u6824\u6804\u67e4\u67c4\u67a4\u6784\u6764\u6744"
- + "\u6724\u6704\u66e4\u66c4\u66a4\u6684\u6664\u6644\u6624\u6604\u65e4"
- + "\u65c4\u65a4\u6584\u6564\u6544\u6524\u6504\u6b20\u6ddb\u6e96\u60e3"
- + "\u60c3\u60a3\u6083\u6063\u6043\u6023\u6003\u5fe3\u5fc3\u5fa3\u5f83"
- + "\u5f63\u5f43\u5f23\u5f03\u5ee3\u5ec3\u5ea3\u5e83\u5e63\u5e43\u5e23"
- + "\u5e03\u5de3\u5dc3\u5da3\u5d83\u5d63\u5d43\u5d23\u5d03\u5ce3\u5cc3"
- + "\u5ca3\u5c83\u5c63\u5c43\u5c23\u5c03\u5be3\u5bc3\u5ba3\u5b83\u5b63"
- + "\u5b43\u5b23\u5b03\u5ae3\u5ac3\u5aa3\u5a83\u5a63\u5a43\u5a23\u5a03"
- + "\u59e3\u5d64\u5d44\u5d24\u5d04\u5ce4\u5cc4\u5ca4\u5c84\u5c64\u5c44"
- + "\u5c24\u5c04\u5be4\u5bc4\u5ba4\u5b84\u5b64\u5b44\u5b24\u5b04\u5ae4"
- + "\u5ac4\u5aa4\u5a84\u5a64\u5a44\u5a24\u5a04\u59e4\u59c4\u59a4\u5984"
- + "\u5964\u5944\u5924\u5904\u58e4\u58c4\u58a4\u5884\u5864\u5844\u5824"
- + "\u5804\u57e4\u57c4\u57a4\u5784\u5764\u5744\u5724\u5704\u56e4\u56c4"
- + "\u56a4\u5684\u5664\u5644\u5624\u5604\u55e4\u55c4\u55a4\u5584\u5564"
- + "\u5544\u5524\u5504\u54e4\u54c4\u54a4\u5484\u5464\u5444\u5424\u5404"
- + "\u53e4\u53c4\u53a4\u5384\u5364\u5344\u5324\u5304\u52e4\u52c4\u52a4"
- + "\u5284\u5264\u5244\u5224\u5204\u51e4\u51c4\u51a4\u5184\u5164\u5144"
- + "\u5124\u5104\u50e4\u50c4\u50a4\u5084\u5064\u5044\u5024\u5004\u4fe4"
- + "\u4fc4\u4fa4\u4f84\u4f64\u4f44\u4f24\u4f04\u4ee4\u4ec4\u4ea4\u4e84"
- + "\u4e64\u4e44\u4e24\u4e04\u4de4\u4dc4\u4da4\u4d84\u4d64\u4d44\u4d24"
- + "\u4d04\u4ce4\u4cc4\u4ca4\u4c84\u4c64\u4c44\u4c24\u4c04\u4be4\u4bc4"
- + "\u4ba4\u4b84\u4b64\u4b44\u4b24\u4b04\u4ae4\u4ac4\u4aa4\u4a84\u4a64"
- + "\u4a44\u4a24\u4a04\u49e4\u49c4\u49a4\u4984\u4964\u4944\u4924\u4904"
- + "\u48e4\u48c4\u48a4\u4884\u4864\u4844\u4824\u4804\u47e4\u47c4\u47a4"
- + "\u4784\u4764\u4744\u4724\u4704\u46e4\u46c4\u46a4\u4684\u4664\u4644"
- + "\u4624\u4604\u45e4\u45c4\u45a4\u4584\u4564\u4544\u4524\u4504\u44e4"
- + "\u44c4\u44a4\u4484\u4464\u4444\u4424\u4404\u43e4\u43c4\u43a4\u4384"
- + "\u4364\u4344\u4324\u4304\u42e4\u42c4\u42a4\u4284\u4264\u4244\u4224"
- + "\u4204\u41e4\u41c4\u41a4\u4184\u4164\u4144\u4124\u4104\u40e4\u40c4"
- + "\u40a4\u4084\u4064\u4044\u4024\u4004\u3fe4\u3fc4\u3fa4\u3f84\u3f64"
- + "\u3f44\u3f24\u3f04\u3ee4\u3ec4\u3ea4\u3e84\u3e64\u3e44\u3e24\u3e04"
- + "\u3de4\u3dc4\u3da4\u3d84\u3d64\u3d44\u3d24\u3d04\u3ce4\u3cc4\u3ca4"
- + "\u3c84\u3c64\u3c44\u3c24\u3c04\u3be4\u3bc4\u3ba4\u3b84\u3b64\u3b44"
- + "\u3b24\u3b04\u3ae4\u3ac4\u3aa4\u3a84\u3a64\u3a44\u3a24\u3a04\u39e4"
- + "\u39c4\u39a4\u3984\u3964\u3944\u3924\u3904\u38e4\u38c4\u38a4\u3884"
- + "\u3864\u3844\u3824\u3804\u37e4\u37c4\u37a4\u3784\u3764\u3744\u3724"
- + "\u3704\u36e4\u36c4\u36a4\u3684\u3664\u3644\u3624\u3604\u35e4\u35c4"
- + "\u35a4\u3584\u3564\u3544\u3524\u3504\u34e4\u34c4\u34a4\u3484\u3464"
- + "\u3444\u3424\u3404\u33e4\u33c4\u33a4\u3384\u3364\u3344\u3324\u3304"
- + "\u32e4\u32c4\u32a4\u3284\u3264\u3244\u3224\u3204\u31e4\u28f2\u2e03"
- + "\u2de3\u3c25\u3c05\u3be5\u3bc5\u3ba5\u3b85\u3b65\u3b45\u3b25\u3b05"
- + "\u3ae5\u3ac5\u3aa5\u3a85\u3a65\u3a45\u3a25\u3a05\u39e5\u39c5\u39a5"
- + "\u3985\u3965\u3945\u3925\u3905\u38e5\u38c5\u38a5\u3885\u3865\u3845"
- + "\u3825\u3805\u37e5\u37c5\u37a5\u3785\u3765\u3745\u3725\u3705\u36e5"
- + "\u36c5\u36a5\u3685\u3665\u3645\u3625\u3605\u35e5\u35c5\u35a5\u3585"
- + "\u3565\u3545\u3525\u3505\u34e5\u34c5\u34a5\u3485\u3465\u3445\u3445"
- + "\u3425\u3405\u33e5\u33c5\u33a5\u3385\u3365\u3345\u3325\u3305\u32e5"
- + "\u32c5\u32a5\u3285\u3265\u3245\u3225\u3205\u31e5\u31c5\u31a5\u3185"
- + "\u3165\u3145\u3125\u3105\u30e5\u30c5\u30a5\u3085\u3065\u3045\u3025"
- + "\u3005\u2fe5\u2fc5\u2fa5\u2f85\u2f65\u2f45\u2f25\u2f05\u2ee5\u2ec5"
- + "\u2ea5\u2e85\u2e65\u2e45\u2e25\u2e05\u2de5\u2dc5\u2da5\u2d85\u2d65"
- + "\u2d45\u2d25\u2d05\u2ce5\u2cc5\u2ca5\u2c85\u2c65\u2c45\u2c25\u2c05"
- + "\u2be5\u2bc5\u2ba5\u2b85\u2b65\u2b45\u2b25\u2b05\u2ae5\u2ac5\u2aa5"
- + "\u2a85\u2a65\u2a45\u2a25\u2a05\u29e5\u29c5\u29a5\u2985\u2965\u2945"
- + "\u2925\u2905\u28e5\u28c5\u28a5\u2885\u2865\u2845\u2825\u2805\u27e5"
- + "\u27c5\u27a5\u2785\u2765\u2745\u2725\u2705\u26e5\u26c5\u26a5\u2685"
- + "\u2665\u2645\u2625\u2605\u25e5\u25c5\u25a5\u2585\u2565\u2545\u2525"
- + "\u2505\u24e5\u24c5\u24a5\u2485\u2465\u2445\u2425\u2405\u23e5\u23c5"
- + "\u23a5\u2385\u2365\u2345\u2325\u2305\u22e5\u22c5\u22a5\u2285\u2265"
- + "\u2245\u2225\u2205\u21e5\u21c5\u21a5\u2185\u2165\u2145\u2125\u2105"
- + "\u20e5\u20c5\u20a5\u2085\u2065\u2045\u2025\u2005\u1fe5\u1fc5\u1fa5"
- + "\u1f85\u1f65\u1f45\u1f25\u1f05\u1ee5\u1ec5\u1ea5\u1e85\u1e65\u1e45"
- + "\u1e25\u1e05\u1de5\u1dc5\u1da5\u1d85\u1d65\u1d45\u1d25\u1d05\u1ce5"
- + "\u1cc5\u1ca5\u1c85\u1c65\u1c45\u1c25\u1c05\u1be5\u1bc5\u1ba5\u1b85"
- + "\u1b65\u1064\u1044\u1024\u1004\u0fe4\u0fc4\u0fa4\u0f84\u0f64\u0668"
- + "\u0b83\u0b63\u0b43\u0b23\u0b03\u0ae3\u0a72\u1945\u0a51\u0d16\u0cf6"
- + "\u0cac\u0ca3\u0c96\u0c76\u0c56\u0c36\u0c16\u0bf6\u0bd6\u0bb6\u0b96"
- + "\u0b76\u0b58\u0b26\u0b16\u0ab2\u0ad6\u0a96\u02c2\u07c3\u1665\u1661"
- + "\u03ff\u09f6\u09d6\u09b6\u05dc\u0bb2\u15a1\u0fc0\u01c0\u01b1\u09c5"
- + "\u0826\u127f";
+ = "\u01c2\u01c2\u01c1\u012c\u012b\u01a0\u01f8\u02dc\u025f\u02ee\u0215"
+ + "\u0346\u02dc\u0326\u02bc\u0216\u015f\u02d4\u0376\u0376\u0376\u0369"
+ + "\ufe8f\u0344\uff85\uff65\ufdb5\ufda1\033\u02c4\034G\ufea8"
+ + "\uff8c\u0235\ufeff\032\ufebf&\ufb20\ufe28\u0113\u0104\ufb61"
+ + "\ufb5a\u010b\u0109\u00fe\uff08\u0229\u025e\u01c7\u01fc\u01dc\ufc46"
+ + "\u0229\ufe27\ufb55\u0169\ufbc8\u00fc\u0103\ufb68\ufb48\ufb28\ufb08"
+ + "\ufae8\ufac8\ufaa8\ufa88\ufa68\ufa48eP\u00ab\u0139\ufe0e"
+ + "c\u0155\u01a8\uf669\u0129\u0128\uf91f\ufe56\u0108\u0107\ufac0"
+ + "\ufc8e\ufead\u00c6\ufca7\ufb95\uf47d\u009f\ufb17\ufe20\ufd28\ufb2f"
+ + ";\uf3b9\ufe57\ufcce\uffbb\uf339\ufa98\uff8b\uff3b\ufa54\uf7e3"
+ + "\uff2b\ufad7\ufb69\ufc3a\ufee5\uf4c8\ufcb0\ufa88\ufdbf\uf448\ufe45"
+ + "\ufcc7\ufe4f\uf7f1\uf715\uf2e8\ufd9f\uf348\uf96a\ufc02\ufd97\uf2c8"
+ + "\uf2a8\uf4b9\uf4b3\uef6b\uf86a\uf84a\ufc58\uf80a\uf7ea\ufc0f\uf7aa"
+ + "\uee9c\ufb90\uf74a\uf7fa\uf70a\uf7ca\uf792\uf471\uf4d2\uf732\uf64a"
+ + "\uf401\uf64d\uefa8\uf5ca\uf5aa\ueca1\uf569\uf54a\uf52a\uf50a\uf4ea"
+ + "\uf4ca\uf4aa\uf48a\uf46a\uf44a\uf42a\uf40a\uf3ea\uf3ca\uf3aa\uf38a"
+ + "\uf36a\uf34a\uf32a\uf289\uf777\uf2ca\uf2aa\uf737\uec28\uec08\uebe8"
+ + "\uebc8\uf1ea\uf4a2\uf545\uedc6\uf2d7\uf14a\ue8ed\ue81e\uf0ea\uf597"
+ + "\uea68\uea48\uea28\uea08\ue9e8\ue9c8\ue9a8\ue988\ue968\ue948\ue928"
+ + "\ue908\ue8e8\ue8c8\ue8a8\ue888\ue868\ue848\ue828\ue808\ue7e8\ue7c8"
+ + "\ue7a8\ue788\ue768\ue748\ue728\ue708\ue6e8\ue6c8\ue6a8\ue688\ue668"
+ + "\ue648\ue628\ue608\ue5e8\ue5c8\ue5a8\ue588\ue568\ue548\ue55f\ue53f"
+ + "\ue51f\ue4ff\uefd7\ue4bf\ue49f\ue485\uef87\uef57\uef57\uef57\uef57"
+ + "\uef47\ue1ad\uef46\uef46\uef46\ue1e0\ue3dd\uef06\ue9d9\uebeb\ue244"
+ + "\ueed4\uef65\ue1f5\uef45\ueee9\uef7c\uee74\uef70\uef7d\uef78\uee91"
+ + "\uefd3\uee7d\uee25\uee27\uef65\uefdd\uee96\uefd3\uefe1\uef69\udf88"
+ + "\udf68\udf48\ued2b\ued3d\ued19\uef1c\uef08\ued47\ued3d\ued33\uec2b"
+ + "\uec0b\uebeb\uebcb\uebce\uea7c\ueb69\ueb6c\ue9b6\ueb0b\ueaeb\ue9e9"
+ + "\udca8\udc88\udc68\udc48\ue910\uea23\ueb58\ueb4f\ueb45\ueae5\udb68"
+ + "\udb48\ue92b\ue90b\ue8eb\ue8cb\ue8ab\ue88b\ue86b\ue84b\uda28\uda08"
+ + "\ud9e8\ud9c8\ud9a8\ud988\ud968\ud948\ud928\ud908\ud8e8\ud8c8\ud8a8"
+ + "\ud888\ud868\ud848\ud828\ud808\ud7e8\ud7c8\ud7a8\ud788\ud768\ud748"
+ + "\ud728\ud708\ud6e8\ud6c8\ud6a8\ud688\ud668\ud648\ud628\ud608\ud5e8"
+ + "\ud5c8\ud5a8\ud588\ud568\ud548\ud528\ud508\ud4e8\ud4c8\ue2b1\ue28b"
+ + "\ue26b\ue270\ue22b\ue20b\ue1eb\ue1cb\ue1ab\ue18b\ue18e\udd8f\ue3a8"
+ + "\udfd3\ud929\ud90a\ue348\ud8c9\ud8aa\udcd7\udcb2\ud681\ud82a\ud80a"
+ + "\ue268\ucede\ud168\ud148\ue116\ue0e9\ue1cb\ue0b7\ue0b7\ue15e\udf17"
+ + "\ue034\ue013\udff3\udfd3\ude6c\udf93\udf73\udf55\udf34\ud56a\ud54a"
+ + "\ud52a\ud50a\ud4ea\ud4ca\ud4aa\ud48a\ud46a\ud44a\ud42a\ud40a\ud3ea"
+ + "\ud3ca\ud3aa\ud38a\ud36a\ud34a\ud32a\ud30a\ud2ea\ud2ca\ud2aa\ud28a"
+ + "\ud26a\ud24a\ud22a\ud20a\ud1ea\ud1ca\ud1aa\ud18a\ud16a\ud14a\ud12a"
+ + "\ud10a\ud0ea\ud0ca\ud0aa\ud08a\ud06a\ud04a\ud02a\ud00a\ucfea\ucfca"
+ + "\ucfaa\ucf8a\ucf6a\ucf4a\ucf2a\ucf0a\uceea\uceca\uceaa\uce8a\uce6a"
+ + "\uce4a\uce2a\uce0a\ucdea\ucdca\ucdaa\ucd8a\ucd6a\ucd4a\ucd2a\ucd0a"
+ + "\uccea\uccca\uccaa\ucc8a\ucc6a\ucc4a\ucc2a\ucc0a\ucbea\ucbca\ucbaa"
+ + "\ucb8a\ucb6a\ucb4a\ucb2a\ucb0a\ucaea\ucaca\ucaaa\uca8a\uca6a\uca4a"
+ + "\uca2a\uca0a\uc9ea\uc9ca\uc9aa\uc98a\uc96a\uc94a\uc92a\uc90a\uc8ea"
+ + "\uc8ca\uc8aa\uc88a\uc86a\uc84a\uc82a\uc80a\uc7ea\uc7ca\uc7aa\uc78a"
+ + "\uc76a\uc74a\uc72a\uc70a\uc6ea\uc6ca\uc6aa\uc68a\uc66a\uc64a\uc62a"
+ + "\uc60a\uc5ea\uc5ca\uc5aa\uc58a\uc56a\uc54a\uc52a\uc50a\uc4ea\uc4ca"
+ + "\uc4aa\uc48a\uc46a\uc44a\uc42a\uc40a\uc3ea\uc3ca\uc3aa\uc38a\uc36a"
+ + "\uc34a\uc32a\uc30a\uc2ea\uc2ca\uc2aa\uc28a\uc26a\uc24a\uc22a\uc20a"
+ + "\uc1ea\uc1ca\uc1aa\uc18a\uc16a\uc14a\uc12a\uc10a\uc0ea\uc0ca\uc0aa"
+ + "\uc08a\uc06a\uc04a\uc02a\uc00a\ubfea\ubfca\ubfaa\ubf8a\ubf6a\ubf4a"
+ + "\ubf2a\ubf0a\ubeea\ubeca\ubeaa\ube8a\ube6a\ube4a\ube2a\ube0a\ubdea"
+ + "\ubdca\ubdaa\ubd8a\ubd6a\ubd4a\ubd2a\ubd0a\ubcea\ubcca\ubcaa\ubc8a"
+ + "\ubc6a\ubc4a\ubc2a\ubc0a\ubbea\ub2e0\ub568\ub548\ubb6a\ubb4a\ubb2a"
+ + "\ubb0a\ubaea\ubaca\ubaaa\uba8a\uba6a\uba4a\uba2a\uba0a\ub9ea\ub9ca"
+ + "\ub9aa\ub98a\ub96a\ub94a\ub92a\ub90a\ub8ea\ub8ca\ub8aa\ub88a\ub86a"
+ + "\ub84a\ub82a\ub80a\ub7ea\ub7ca\ub7aa\ub78a\ub76a\ub74a\ub72a\ub70a"
+ + "\ub6ea\ub6ca\ub6aa\ub68a\ub66a\ub64a\ub62a\ub60a\ub5ea\ub5ca\ub5aa"
+ + "\ub58a\ub56a\ub54a\ub52a\ub50a\ub4ea\ub4ca\ub4aa\ub48a\ub46a\ub44a"
+ + "\ub42a\ub40a\ub3ea\ub3ca\ub3aa\ub38a\ub36a\ub34a\ub32a\ub30a\ub2ea"
+ + "\ub2ca\ub2aa\ub28a\ub26a\ub24a\ub22a\ub20a\ub1ea\ub1ca\ub1aa\ub18a"
+ + "\ub16a\ub14a\ub12a\ub10a\ub0ea\ub0ca\ub0aa\ub08a\ub06a\ub04a\ub02a"
+ + "\ub00a\uafea\uafca\uafaa\uaf8a\uaf6a\uaf4a\uaf2a\uaf0a\uaeea\uaeca"
+ + "\uaeaa\uae8a\uae6a\uae4a\uae2a\uae0a\uadea\uadca\uadaa\uad8a\uad6a"
+ + "\uad4a\uad2a\uad0a\uacea\uacca\uacaa\uac8a\uac6a\uac4a\uac2a\uac0a"
+ + "\uabea\uabca\uabaa\uab8a\uab6a\uab4a\uab2a\uab0a\uaaea\uaaca\uaaaa"
+ + "\uaa8a\uaa6a\uaa4a\uaa2a\uaa0a\ua9ea\ua9ca\ua9aa\ua98a\ua96a\ua94a"
+ + "\ua92a\ua90a\ua8ea\ua8ca\ua8aa\ua88a\ua86a\ua84a\ua82a\ua80a\ua7ea"
+ + "\ua7ca\ua7aa\ua78a\ua76a\ua74a\ua72a\ua70a\ua6ea\ua6ca\ua6aa\ua68a"
+ + "\ua66a\ua64a\ua62a\ua60a\ua5ea\ua5ca\ua5aa\ua58a\ua56a\ua54a\ua52a"
+ + "\ua50a\ua4ea\ua4ca\ua4aa\ua48a\ua46a\ua44a\ua42a\ua40a\ua3ea\ua3ca"
+ + "\ua3aa\ua38a\ua36a\ua34a\ua32a\ua30a\ua2ea\ua2ca\ua2aa\ua28a\ua26a"
+ + "\ua24a\ua22a\ua20a\ua1ea\ua1ca\ua1aa\ua18a\ua16a\ua14a\ua12a\ua10a"
+ + "\ua0ea\ua0ca\ua0aa\ua08a\ua06a\ua04a\ua02a\ua00a\u9fea\u9fca\u9faa"
+ + "\u9f8a\u9f6a\u9f4a\u9f2a\u9f0a\u9eea\u9eca\u9eaa\u9e8a\u9e6a\u9e4a"
+ + "\u9e2a\u9e0a\u9dea\u9dca\u9daa\u9d8a\u9d6a\u9d4a\u9d2a\u9d0a\u9cea"
+ + "\u9cca\u9caa\u9c8a\u9c6a\u9c4a\u9c2a\u9c0a\u9bea\u9bca\u9baa\u9b8a"
+ + "\u9b6a\u9b4a\u9b2a\u9b0a\u9aea\u9aca\u9aaa\u9a8a\u9a6a\u9a4a\u9a2a"
+ + "\u9a0a\u99ea\u99ca\u99aa\u998a\u996a\u994a\u992a\u990a\u98ea\u98ca"
+ + "\u98aa\u988a\u986a\u984a\u982a\u980a\u97ea\u97ca\u97aa\u978a\u976a"
+ + "\u974a\u972a\u970a\u96ea\u96ca\u96aa\u968a\u966a\u964a\u962a\u960a"
+ + "\u95ea\u95ca\u95aa\u958a\u956a\u954a\u952a\u950a\u94ea\u94ca\u94aa"
+ + "\u948a\u946a\u944a\u942a\u940a\u93ea\u93ca\u93aa\u938a\u936a\u934a"
+ + "\u932a\u930a\u92ea\u92ca\u92aa\u928a\u926a\u924a\u922a\u920a\u91ea"
+ + "\u91ca\u91aa\u918a\u916a\u914a\u912a\u910a\u90ea\u90ca\u90aa\u908a"
+ + "\u906a\u904a\u902a\u900a\u8fea\u8fca\u8faa\u8f8a\u8f6a\u8f4a\u8f2a"
+ + "\u8f0a\u8eea\u8eca\u8eaa\u8e8a\u8e6a\u8e4a\u8e2a\u8e0a\u8dea\u8dca"
+ + "\u8daa\u8d8a\u8d6a\u8d4a\u8d2a\u8d0a\u8cea\u8cca\u8caa\u8c8a\u8c6a"
+ + "\u8c4a\u8c2a\u8c0a\u8bea\u8bca\u8baa\u8b8a\u8b6a\u8b4a\u8b2a\u8b0a"
+ + "\u8aea\u8aca\u8aaa\u8a8a\u8a6a\u8a4a\u8a2a\u8a0a\u89ea\u89ca\u89aa"
+ + "\u898a\u896a\u894a\u892a\u890a\u88ea\u88ca\u88aa\u888a\u886a\u884a"
+ + "\u882a\u880a\u87ea\u87ca\u87aa\u878a\u876a\u874a\u872a\u870a\u86ea"
+ + "\u86ca\u86aa\u868a\u866a\u864a\u862a\u860a\u85ea\u85ca\u85aa\u858a"
+ + "\u856a\u854a\u852a\u850a\u84ea\u84ca\u84aa\u848a\u846a\u844a\u842a"
+ + "\u840a\u83ea\u83ca\u83aa\u838a\u836a\u834a\u832a\u830a\u82ea\u82ca"
+ + "\u82aa\u828a\u826a\u824a\u822a\u820a\u81ea\u81ca\u81aa\u818a\u816a"
+ + "\u814a\u812a\u810a\u80ea\u80ca\u80aa\u808a\u806a\u804a\u802a\u800a"
+ + "\u7fea\u7fca\u7faa\u7f8a\u7f6a\u7f4a\u7f2a\u7f0a\u7eea\u7eca\u7eaa"
+ + "\u7e8a\u7e6a\u7e4a\u7e2a\u7e0a\u7dea\u7dca\u7daa\u7d8a\u7d6a\u7d4a"
+ + "\u7d2a\u7d0a\u7cea\u7cca\u7caa\u7c8a\u7c6a\u7c4a\u7c2a\u7c0a\u7bea"
+ + "\u7bca\u7baa\u7b8a\u7b6a\u7b4a\u7b2a\u7b0a\u7aea\u7aca\u7aaa\u7a8a"
+ + "\u7a6a\u7a4a\u7a2a\u7a0a\u79ea\u79ca\u79aa\u798a\u796a\u794a\u792a"
+ + "\u790a\u78ea\u78ca\u78aa\u788a\u786a\u784a\u782a\u780a\u77ea\u77ca"
+ + "\u77aa\u778a\u776a\u774a\u772a\u770a\u76ea\u76ca\u76aa\u768a\u766a"
+ + "\u764a\u762a\u760a\u75ea\u75ca\u75aa\u758a\u756a\u754a\u752a\u750a"
+ + "\u74ea\u74ca\u74aa\u748a\u746a\u744a\u742a\u740a\u73ea\u73ca\u73aa"
+ + "\u738a\u736a\u734a\u732a\u730a\u72ea\u72ca\u72aa\u728a\u726a\u724a"
+ + "\u722a\u720a\u71ea\u71ca\u71aa\u718a\u716a\u714a\u712a\u710a\u70ea"
+ + "\u70ca\u70aa\u708a\u706a\u704a\u702a\u700a\u6fea\u6fca\u6faa\u6f8a"
+ + "\u6f6a\u6f4a\u6f2a\u6f0a\u6eea\u6eca\u6eaa\u6e8a\u6e6a\u6e4a\u6e2a"
+ + "\u6e0a\u6dea\u6dca\u6daa\u6d8a\u6d6a\u6d4a\u6d2a\u6d0a\u6cea\u6cca"
+ + "\u6caa\u6c8a\u6c6a\u6c4a\u6c2a\u6c0a\u6bea\u6bca\u6baa\u6b8a\u6b6a"
+ + "\u6b4a\u6b2a\u6b0a\u6aea\u6aca\u6aaa\u6a8a\u6a6a\u6a4a\u6a2a\u6a0a"
+ + "\u69ea\u60f0\u6368\u6348\u696a\u694a\u692a\u690a\u68ea\u68ca\u68aa"
+ + "\u688a\u686a\u684a\u682a\u680a\u67ea\u67ca\u67aa\u678a\u676a\u674a"
+ + "\u672a\u670a\u66ea\u66ca\u66aa\u668a\u666a\u664a\u662a\u660a\u65ea"
+ + "\u65ca\u65aa\u658a\u656a\u654a\u652a\u650a\u6b26\u6de1\u6e9c\u5e48"
+ + "\u5e28\u5e08\u5de8\u5dc8\u5da8\u5d88\u5d68\u5d48\u5d28\u5d08\u5ce8"
+ + "\u5cc8\u5ca8\u5c88\u5c68\u5c48\u5c28\u5c08\u5be8\u5bc8\u5ba8\u5b88"
+ + "\u5b68\u5b48\u5b28\u5b08\u5ae8\u5ac8\u5aa8\u5a88\u5a68\u5a48\u5a28"
+ + "\u5a08\u59e8\u59c8\u59a8\u5988\u5968\u5948\u5928\u5908\u58e8\u58c8"
+ + "\u58a8\u5888\u5868\u5848\u5828\u5808\u57e8\u57c8\u57a8\u5788\u5768"
+ + "\u5748\u5d6a\u5d4a\u5d2a\u5d0a\u5cea\u5cca\u5caa\u5c8a\u5c6a\u5c4a"
+ + "\u5c2a\u5c0a\u5bea\u5bca\u5baa\u5b8a\u5b6a\u5b4a\u5b2a\u5b0a\u5aea"
+ + "\u5aca\u5aaa\u5a8a\u5a6a\u5a4a\u5a2a\u5a0a\u59ea\u59ca\u59aa\u598a"
+ + "\u596a\u594a\u592a\u590a\u58ea\u58ca\u58aa\u588a\u586a\u584a\u582a"
+ + "\u580a\u57ea\u57ca\u57aa\u578a\u576a\u574a\u572a\u570a\u56ea\u56ca"
+ + "\u56aa\u568a\u566a\u564a\u562a\u560a\u55ea\u55ca\u55aa\u558a\u556a"
+ + "\u554a\u552a\u550a\u54ea\u54ca\u54aa\u548a\u546a\u544a\u542a\u540a"
+ + "\u53ea\u53ca\u53aa\u538a\u536a\u534a\u532a\u530a\u52ea\u52ca\u52aa"
+ + "\u528a\u526a\u524a\u522a\u520a\u51ea\u51ca\u51aa\u518a\u516a\u514a"
+ + "\u512a\u510a\u50ea\u50ca\u50aa\u508a\u506a\u504a\u502a\u500a\u4fea"
+ + "\u4fca\u4faa\u4f8a\u4f6a\u4f4a\u4f2a\u4f0a\u4eea\u4eca\u4eaa\u4e8a"
+ + "\u4e6a\u4e4a\u4e2a\u4e0a\u4dea\u4dca\u4daa\u4d8a\u4d6a\u4d4a\u4d2a"
+ + "\u4d0a\u4cea\u4cca\u4caa\u4c8a\u4c6a\u4c4a\u4c2a\u4c0a\u4bea\u4bca"
+ + "\u4baa\u4b8a\u4b6a\u4b4a\u4b2a\u4b0a\u4aea\u4aca\u4aaa\u4a8a\u4a6a"
+ + "\u4a4a\u4a2a\u4a0a\u49ea\u49ca\u49aa\u498a\u496a\u494a\u492a\u490a"
+ + "\u48ea\u48ca\u48aa\u488a\u486a\u484a\u482a\u480a\u47ea\u47ca\u47aa"
+ + "\u478a\u476a\u474a\u472a\u470a\u46ea\u46ca\u46aa\u468a\u466a\u464a"
+ + "\u462a\u460a\u45ea\u45ca\u45aa\u458a\u456a\u454a\u452a\u450a\u44ea"
+ + "\u44ca\u44aa\u448a\u446a\u444a\u442a\u440a\u43ea\u43ca\u43aa\u438a"
+ + "\u436a\u434a\u432a\u430a\u42ea\u42ca\u42aa\u428a\u426a\u424a\u422a"
+ + "\u420a\u41ea\u41ca\u41aa\u418a\u416a\u414a\u412a\u410a\u40ea\u40ca"
+ + "\u40aa\u408a\u406a\u404a\u402a\u400a\u3fea\u3fca\u3faa\u3f8a\u3f6a"
+ + "\u3f4a\u3f2a\u3f0a\u3eea\u3eca\u3eaa\u3e8a\u3e6a\u3e4a\u3e2a\u3e0a"
+ + "\u3dea\u3dca\u3daa\u3d8a\u3d6a\u3d4a\u3d2a\u3d0a\u3cea\u3cca\u3caa"
+ + "\u3c8a\u3c6a\u3c4a\u3c2a\u3c0a\u3bea\u3bca\u3baa\u3b8a\u3b6a\u3b4a"
+ + "\u3b2a\u3b0a\u3aea\u3aca\u3aaa\u3a8a\u3a6a\u3a4a\u3a2a\u3a0a\u39ea"
+ + "\u39ca\u39aa\u398a\u396a\u394a\u392a\u390a\u38ea\u38ca\u38aa\u388a"
+ + "\u386a\u384a\u382a\u380a\u37ea\u37ca\u37aa\u378a\u376a\u374a\u372a"
+ + "\u370a\u36ea\u36ca\u36aa\u368a\u366a\u364a\u362a\u360a\u35ea\u35ca"
+ + "\u35aa\u358a\u356a\u354a\u352a\u350a\u34ea\u34ca\u34aa\u348a\u346a"
+ + "\u344a\u342a\u340a\u33ea\u33ca\u33aa\u338a\u336a\u334a\u332a\u330a"
+ + "\u32ea\u32ca\u32aa\u328a\u326a\u324a\u322a\u320a\u31ea\u28f2\u2b68"
+ + "\u2b48\u3c2b\u3c0b\u3beb\u3bcb\u3bab\u3b8b\u3b6b\u3b4b\u3b2b\u3b0b"
+ + "\u3aeb\u3acb\u3aab\u3a8b\u3a6b\u3a4b\u3a2b\u3a0b\u39eb\u39cb\u39ab"
+ + "\u398b\u396b\u394b\u392b\u390b\u38eb\u38cb\u38ab\u388b\u386b\u384b"
+ + "\u382b\u380b\u37eb\u37cb\u37ab\u378b\u376b\u374b\u372b\u370b\u36eb"
+ + "\u36cb\u36ab\u368b\u366b\u364b\u362b\u360b\u35eb\u35cb\u35ab\u358b"
+ + "\u356b\u354b\u352b\u350b\u34eb\u34cb\u34ab\u348b\u346b\u344b\u344b"
+ + "\u342b\u340b\u33eb\u33cb\u33ab\u338b\u336b\u334b\u332b\u330b\u32eb"
+ + "\u32cb\u32ab\u328b\u326b\u324b\u322b\u320b\u31eb\u31cb\u31ab\u318b"
+ + "\u316b\u314b\u312b\u310b\u30eb\u30cb\u30ab\u308b\u306b\u304b\u302b"
+ + "\u300b\u2feb\u2fcb\u2fab\u2f8b\u2f6b\u2f4b\u2f2b\u2f0b\u2eeb\u2ecb"
+ + "\u2eab\u2e8b\u2e6b\u2e4b\u2e2b\u2e0b\u2deb\u2dcb\u2dab\u2d8b\u2d6b"
+ + "\u2d4b\u2d2b\u2d0b\u2ceb\u2ccb\u2cab\u2c8b\u2c6b\u2c4b\u2c2b\u2c0b"
+ + "\u2beb\u2bcb\u2bab\u2b8b\u2b6b\u2b4b\u2b2b\u2b0b\u2aeb\u2acb\u2aab"
+ + "\u2a8b\u2a6b\u2a4b\u2a2b\u2a0b\u29eb\u29cb\u29ab\u298b\u296b\u294b"
+ + "\u292b\u290b\u28eb\u28cb\u28ab\u288b\u286b\u284b\u282b\u280b\u27eb"
+ + "\u27cb\u27ab\u278b\u276b\u274b\u272b\u270b\u26eb\u26cb\u26ab\u268b"
+ + "\u266b\u264b\u262b\u260b\u25eb\u25cb\u25ab\u258b\u256b\u254b\u252b"
+ + "\u250b\u24eb\u24cb\u24ab\u248b\u246b\u244b\u242b\u240b\u23eb\u23cb"
+ + "\u23ab\u238b\u236b\u234b\u232b\u230b\u22eb\u22cb\u22ab\u228b\u226b"
+ + "\u224b\u222b\u220b\u21eb\u21cb\u21ab\u218b\u216b\u214b\u212b\u210b"
+ + "\u20eb\u20cb\u20ab\u208b\u206b\u204b\u202b\u200b\u1feb\u1fcb\u1fab"
+ + "\u1f8b\u1f6b\u1f4b\u1f2b\u1f0b\u1eeb\u1ecb\u1eab\u1e8b\u1e6b\u1e4b"
+ + "\u1e2b\u1e0b\u1deb\u1dcb\u1dab\u1d8b\u1d6b\u1d4b\u1d2b\u1d0b\u1ceb"
+ + "\u1ccb\u1cab\u1c8b\u1c6b\u1c4b\u1c2b\u1c0b\u1beb\u1bcb\u1bab\u1b8b"
+ + "\u1b6b\u106a\u104a\u102a\u100a\u0fea\u0fca\u0faa\u0f8a\u0f6a\u0668"
+ + "\u08e8\u08c8\u08a8\u0888\u0868\u0848\u07d7\u194b\u07b6\u0d1c\u0cfc"
+ + "\u0cb2\u0ca9\u0c9c\u0c7c\u0c5c\u0c3c\u0c1c\u0bfc\u0bdc\u0bbc\u0b9c"
+ + "\u0b7c\u0b5e\u0b2c\u0b1c\u0ab8\u0adc\u0a9c\u02c2\u0528\u166b\u1667"
+ + "\u03ff\u09fc\u09dc\u09bc\u0659\u0bb8\u15a7\u0fc6\u01c0\u01b1\u09cb"
+ + "\u082c\u1285";
/**
* Information about each character. The low order 5 bits form the
@@ -279,42 +285,42 @@ public interface CharData
* as of Unicode version 3.2.0, but may soon become one.
*/
String DATA
- = "\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81"
- + "\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002"
- + "\u3e00\u3e00\u2f81\u3002\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3a05"
- + "\u3a05\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05\u3e00\u3e00\u3e00\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05\u3a05"
- + "\u3e00\u3e00\u3e00\u3e00\u5a88\u5a88\u3e00\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00"
- + "\u3e00\u3e00\u3e00\u5098\u3e00\u3e00\u3e00\u3e00\u4586\u3e00\u3e00"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00\u3e00\u3e00\u3a05"
- + "\u3a05\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305"
- + "\u5305\u5305\u5305\u3e00\u3e00\u3e00\u3e00\u5102\u5102\u5102\u5102"
- + "\u5102\u5102\u5102\u5102\u5102\u5102\u5102\u5102\u5102\u5102\u5102"
- + "\u5102\u5102\u5102\u5102\u5102\u5102\u5102\u5102\u5102\u5102\u5102"
- + "\u5102\u5102\u5102\u5102\u5102\u2902\u3e00\u5098\u2a14\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u4586\u4586\u4586\u4586\u4586\u4586\u4586"
- + "\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4606\u4586\u4586"
- + "\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u1a1b\u1a1b\u3e00\u3e00\u3e00\u3e00\u4504\u3e00\u3e00"
- + "\u3e00\u0298\u3e00\u0298\u6515\u6596\u0298\u1a97\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u4504\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u4504\u4504\u1a1b\u1a1b\u1a1b\u1a1b"
- + "\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u4504"
- + "\u4504\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b"
- + "\u1a1b\u1a1b\u1a1b\u1a1b\u2902\u7102\u2902\u3e00\u2902\u2902\u7301"
- + "\u7301\u7301\u7301\u7203\u1a1b\u1a1b\u1a1b\u6c82\u6c82\u2902\u2902"
- + "\u3e00\u3e00\u2902\u2902\u6d01\u6d01\u7381\u7381\u3e00\u1a1b\u1a1b"
+ = "\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001"
+ + "\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082"
+ + "\u3e80\u3e80\u3001\u3082\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3a85"
+ + "\u3a85\u3e80\u3e80\u3e80\u3a85\u3a85\u3a85\u3e80\u3e80\u3e80\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85\u3a85\u3a85"
+ + "\u3e80\u3e80\u3e80\u3e80\u5b88\u5b88\u3e80\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85\u3a85\u3a85\u3e80\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80"
+ + "\u3e80\u3e80\u3e80\u5198\u3e80\u3e80\u3e80\u3e80\u4606\u3e80\u3e80"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80\u3e80\u3e80\u3a85"
+ + "\u3a85\u3e80\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405"
+ + "\u5405\u5405\u5405\u3e80\u3e80\u3e80\u3e80\u5202\u5202\u5202\u5202"
+ + "\u5202\u5202\u5202\u5202\u5202\u5202\u5202\u5202\u5202\u5202\u5202"
+ + "\u5202\u5202\u5202\u5202\u5202\u5202\u5202\u5202\u5202\u5202\u5202"
+ + "\u5202\u5202\u5202\u5202\u5202\u2e82\u3e80\u5198\u2a14\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u4606\u4606\u4606\u4606\u4606\u4606\u4606"
+ + "\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4686\u4606\u4606"
+ + "\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u1a1b\u1a1b\u3e80\u3e80\u3e80\u3e80\u4584\u3e80\u3e80"
+ + "\u3e80\u0298\u3e80\u0298\u6615\u6696\u0298\u1a97\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u4584\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u4584\u4584\u1a1b\u1a1b\u1a1b\u1a1b"
+ + "\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u4584"
+ + "\u4584\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b"
+ + "\u1a1b\u1a1b\u1a1b\u1a1b\u2e82\u7282\u2e82\u3e80\u2e82\u4902\u7481"
+ + "\u7481\u7481\u7481\u7383\u1a1b\u1a1b\u1a1b\u6d82\u6d82\u4902\u4902"
+ + "\u3e80\u3e80\u2e82\u4902\u6e01\u6e01\u7501\u7501\u3e80\u1a1b\u1a1b"
+ "\u1a1b\u1b02\u1b82\u1c02\u1c82\u1d02\u1d82\u1e02\u1e82\u1f02\u1f82"
+ "\u2002\u2082\u2102\u2182\u2202\u2282\u2302\u2382\u2402\u2482\u2502"
+ "\u2582\u2602\u2682\u2702\u2782\u0455\u0c99\u04d6\u0c99\017\017"
@@ -329,442 +335,443 @@ public interface CharData
+ "\u0e81\u0f01\u0f81\u1001\u1081\u1101\u1181\u1201\u1281\u1301\u1381"
+ "\u1401\u1481\u1501\u1581\u1601\u1681\u1701\u1781\u1801\u1881\u1901"
+ "\u1981\u0455\u0298\u04d6\u1a1b\u1a97\u0298\u0298\u0298\u0c99\u0455"
- + "\u04d6\u3e00\u0298\u0298\u0298\u0298\u0298\u0298\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u282c\u0298\u039a\u039a\u039a\u039a\u289c"
+ + "\u04d6\u3e80\u0298\u0298\u0298\u0298\u0298\u0298\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u282c\u0298\u039a\u039a\u039a\u039a\u289c"
+ "\u289c\u1a1b\u289c\u2902\u29dd\u0c99\u2a14\u289c\u1a1b\u2a9c\u0519"
+ "\u2b0b\u2b8b\u1a1b\u2c02\u289c\u0298\u1a1b\u2c8b\u2902\u2d5e\u2d8b"
- + "\u2d8b\u2d8b\u0298\u0298\u0519\u0614\u0c99\u0c99\u0c99\u3e00\u0298"
- + "\u039a\u0318\u0298\u3e00\u3e00\u3e00\u3e00\u5305\u5305\u5305\u3e00"
- + "\u5305\u3e00\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305"
- + "\u5305\u5305\u5305\u5305\u3e00\u3e00\u3e00\u4586\u4586\u4586\u4586"
- + "\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586"
- + "\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586"
- + "\u4586\u4586\u4586\u4586\u4586\u4586\u3e00\u4f1c\u4f1c\u4e81\u4e81"
- + "\u4e81\u4e81\u4e81\u4e81\u4e81\u4e81\u4e81\u4e81\u4e81\u4e81\u4e81"
- + "\u4e81\u4e81\u4e81\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01"
+ + "\u2d8b\u2d8b\u0298\u0298\u0519\u0614\u0c99\u0c99\u0c99\u3e80\u0298"
+ + "\u039a\u0318\u0298\u3e80\u3e80\u3e80\u3e80\u5405\u5405\u5405\u3e80"
+ + "\u5405\u3e80\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405"
+ + "\u5405\u5405\u5405\u5405\u3e80\u3e80\u3e80\u4606\u4606\u4606\u4606"
+ + "\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606"
+ + "\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606"
+ + "\u4606\u4606\u4606\u4606\u4606\u4606\u3e80\u501c\u501c\u4f81\u4f81"
+ + "\u4f81\u4f81\u4f81\u4f81\u4f81\u4f81\u4f81\u4f81\u4f81\u4f81\u4f81"
+ + "\u4f81\u4f81\u4f81\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01"
+ "\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01"
+ "\u2e01\u2e01\u2e01\u2e01\u0c99\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01"
- + "\u2e01\u2902\u3281\u2f81\u3002\u2f81\u3002\u3301\u2f81\u3002\u3381"
- + "\u3381\u2f81\u3002\u2902\u3401\u3481\u3501\u2f81\u3002\u3381\u3581"
- + "\u3602\u3681\u3701\u2f81\u3002\u2902\u2902\u3681\u3781\u2902\u3801"
- + "\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2902\u2f81"
- + "\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002"
- + "\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81"
- + "\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u5b09\u5b89\u5c09\u5c89\u5d09\u5d89\u5e09"
- + "\u5e89\u5f09\u5f89\u4586\u4586\u3a05\u3a05\u3a05\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u1a1b\u1a1b\u4681"
- + "\u0298\u4701\u4701\u4701\u3e00\u4781\u3e00\u4801\u4801\u2902\u2e01"
- + "\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01"
- + "\u2e01\u2e01\u2e01\u2e01\u2e82\u2e82\u2e82\u2e82\u2e82\u2e82\u2e82"
- + "\u2e82\u2e82\u2e82\u2e82\u2e82\u2e82\u2e82\u2e82\u2e82\u2e82\u2e82"
- + "\u2e82\u2e82\u2e82\u2e82\u2e82\u0c99\u2e82\u2e82\u2e82\u2e82\u2e82"
- + "\u2e82\u2e82\u2f02\u2e82\u2e82\u4982\u2e82\u2e82\u2e82\u2e82\u2e82"
- + "\u2e82\u2e82\u2e82\u2e82\u4a02\u4a82\u4a82\u3e00\u4b02\u4b82\u4c01"
- + "\u4c01\u4c01\u4c82\u4d02\u2902\u3e00\u3e00\u2f81\u3002\u2f81\u3002"
- + "\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81"
- + "\u3002\u2902\u3b01\u3b83\u3c02\u2f81\u3002\u3d01\u3d81\u2f81\u3002"
- + "\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81"
- + "\u3002\u2f81\u3002\u3081\u3102\u2f81\u3002\u2f81\u3002\u2f81\u3002"
- + "\u2902\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002"
- + "\u2f81\u3002\u2f81\u3002\u2f81\u3002\u4d82\u4e02\u3c82\u2902\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u5a10\u5a10\u5a10\u5a10\u5a10\u5a10\u7d8b\u3e00\u3e00\u3e00\u7e0b"
- + "\u7e8b\u7f0b\u7f8b\u800b\u808b\u0519\u0519\u0c99\u0455\u04d6\u2902"
- + "\u3a05\u3a05\u3a05\u3a05\u3b01\u3b83\u3c02\u3b01\u3b83\u3c02\u3b01"
- + "\u3b83\u3c02\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81"
- + "\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u3c82\u2f81\u3002\u4f1c"
- + "\u4586\u4586\u4586\u4586\u3e00\u4f87\u4f87\u3e00\u3e00\u2f81\u3002"
- + "\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81"
- + "\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002"
- + "\u3181\u2f81\u3002\u2f81\u3002\u2f81\u3002\u3202\u2f81\u3002\u2f81"
- + "\u3002\u2f81\u3002\u3881\u2f81\u3002\u3881\u2902\u2902\u2f81\u3002"
- + "\u3881\u2f81\u3002\u3901\u3901\u2f81\u3002\u2f81\u3002\u3981\u2f81"
- + "\u3002\u2902\u3a05\u2f81\u3002\u2902\u3a82\u4c01\u2f81\u3002\u2f81"
- + "\u3002\u3e00\u3e00\u2f81\u3002\u3e00\u3e00\u2f81\u3002\u3e00\u3e00"
- + "\u3e00\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002"
- + "\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u0598\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u5298\u3e00\u3e00\u3e00\u5298\u5298\u5298\u5298\u5298"
- + "\u5298\u5298\u5298\u5298\u5298\u5298\u5298\u5298\u5298\u3e00\u5a10"
- + "\u5305\u4586\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305"
- + "\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305"
- + "\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u3e00\u3e00"
- + "\u5a10\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01"
- + "\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01"
- + "\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01\u4c01"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3a05\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u5b09\u5b89\u5c09\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09\u5f89"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u2902\u2902\u2902\u3e82\u3f02\u2902\u3f82\u3f82\u2902\u4002\u2902"
- + "\u4082\u2902\u2902\u2902\u2902\u3f82\u2902\u2902\u4102\u2902\u2902"
- + "\u2902\u2902\u4182\u4202\u2902\u2902\u2902\u2902\u2902\u4202\u2902"
- + "\u2902\u4282\u2902\u2902\u4302\u2902\u2902\u2902\u2902\u2902\u2902"
- + "\u2902\u2902\u2902\u2902\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u2902\u2902\u2902\u2902\u2902\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u5205\u4586\u5205\u5205\u3e00\u5205\u5205"
- + "\u3e00\u5205\u5205\u5205\u5205\u5205\u5205\u5205\u5205\u5205\u5205"
- + "\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305"
- + "\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5298\u5305"
- + "\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4f87\u4f87\u4586\u4f87"
- + "\u4f87\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u2d8b\u2d8b\u2d8b\u2d8b\u2d8b\u2d8b\u2d8b\u2d8b\u2d8b\u2d8b\u2d8b"
- + "\u2d8b\u828b\u4382\u2902\u2902\u4382\u2902\u2902\u2902\u2902\u4382"
- + "\u2902\u4402\u4402\u2902\u2902\u2902\u2902\u2902\u2902\u4482\u2902"
- + "\u2902\u2902\u2902\u2902\u2902\u2902\u2902\u2902\u2902\u2902\u2902"
- + "\u2902\u2902\u3e00\u3e00\u4504\u4504\u4504\u4504\u4504\u4504\u4504"
- + "\u4504\u4504\u1a1b\u1a1b\u4504\u4504\u4504\u4504\u4504\u1a1b\u1a1b"
- + "\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u4504\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u5001\u5001\u5001\u5001\u5001\u5001\u5001\u5001"
- + "\u5001\u5001\u5001\u5001\u5001\u5001\u5001\u5001\u5001\u5001\u5001"
- + "\u5001\u5001\u5001\u5001\u3e00\u3e00\u4504\u5098\u5098\u5098\u5098"
- + "\u5098\u5098\u2e01\u2e01\u3e00\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01"
- + "\u2e01\u2e01\u2e01\u4882\u4902\u4902\u4902\u2902\u2e82\u2e82\u2e82"
- + "\u2e82\u2e82\u2e82\u2e82\u2e82\u2e82\u2e82\u2e82\u2e82\u2e82\u2e82"
- + "\u2e82\u2e82\u4e02\u4e02\u4e02\u4e02\u4e02\u4e02\u4e02\u4e02\u4e02"
- + "\u4e02\u4e02\u4e02\u4e02\u4e02\u4e02\u4e02\u4586\u4586\u4586\u4586"
- + "\u4586\u5098\u4586\u4586\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00\u3e00"
- + "\u3e00\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u3e00\u4586"
- + "\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586"
- + "\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586"
- + "\u3e00\u4586\u4586\u4586\u5198\u4586\u4586\u5198\u4586\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u5205\u5205"
- + "\u5205\u5205\u5205\u5205\u5205\u5205\u5205\u5205\u5205\u5205\u5205"
- + "\u5205\u5205\u5205\u3e00\u3e00\u3e00\u3e00\u3e00\u5205\u5205\u5205"
- + "\u5198\u5198\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u5b89\u5c09\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09\u5f89"
- + "\u630b\u638b\u640b\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u4586\u5a88\u3e00\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05\u3e00\u3a05"
- + "\u3a05\u3a05\u3a05\u3e00\u3e00\u3e00\u3a05\u3a05\u3e00\u3a05\u3e00"
- + "\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586"
- + "\u4586\u4586\u4586\u4586\u4586\u4586\u5a88\u5a88\u5a88\u5a88\u3e00"
- + "\u4586\u4586\u4586\u3e00\u4586\u4586\u4586\u4586\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u4586\u4586\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u4586\u5a88\u5a88\u3e00\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00\u3a05\u3a05\u3e00\u3e00"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3e00\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00\u3e00\u3e00\u5a88\u5a88"
- + "\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00\u3e00"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3e00\u3e00\u3a05\u3a05\u3a05\u3e00\u3e00\u3e00\u3e00\u5b09\u5b89"
- + "\u5c09\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09\u5f89\u4f1c\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u5409\u5489\u5509\u5589\u5609\u5689\u5709\u5789\u5809"
- + "\u5889\u0318\u5918\u5918\u5298\u3e00\u3e00\u4586\u5305\u5305\u5305"
- + "\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305"
- + "\u5305\u5305\u3e00\u3e00\u5305\u5305\u5305\u5305\u5305\u5305\u5305"
- + "\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305"
- + "\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u5305"
- + "\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305"
- + "\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305"
- + "\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u6515\u6596"
- + "\u5384\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305"
- + "\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u5a88"
- + "\u5a88\u5098\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u4586\u4586\u5a88\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3e00\u3a05\u3e00\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u5098\u5098\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u4586\u4586\u4586"
- + "\u4586\u4586\u5384\u5384\u4586\u4586\u289c\u4586\u4586\u4586\u4586"
- + "\u3e00\u3e00\u0709\u0789\u0809\u0889\u0909\u0989\u0a09\u0a89\u0b09"
- + "\u0b89\u5305\u5305\u5305\u599c\u599c\u3e00\u3a05\u3a05\u3a05\u3e00"
- + "\u3a05\u3e00\u3a05\u3e00\u3e00\u3a05\u3a05\u3e00\u3a05\u3a05\u3a05"
- + "\u3a05\u4586\u3a05\u3a05\u4586\u4586\u4586\u4586\u4586\u4586\u3e00"
- + "\u4586\u4586\u3a05\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00"
- + "\u3e00\u3e00\u4586\u4586\u5a88\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00\u4586\u3a05\u5a88\u5a88"
- + "\u5a88\u5a88\u5a88\u3e00\u4586\u5a88\u5a88\u3e00\u5a88\u5a88\u4586"
- + "\u4586\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u5a88\u5a88\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3a05\u3e00\u5098\u5098\u5098"
- + "\u5098\u5098\u5098\u5098\u5098\u5b89\u5c09\u5c89\u5d09\u5d89\u5e09"
- + "\u5e89\u5f09\u5f89\u630b\u660b\u668b\u670b\u678b\u680b\u688b\u690b"
- + "\u698b\u638b\u6a0b\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3e00\u3a05\u3a05\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05\u3e00"
- + "\u3e00\u4586\u3a05\u5a88\u4586\u4586\u4586\u4586\u4586\u4586\u4586"
- + "\u4586\u5a88\u5a88\u5a88\u5a88\u4586\u3e00\u3e00\u3a05\u4586\u4586"
- + "\u4586\u4586\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3e00\u3a05\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00"
- + "\u4586\u3e00\u5a88\u5a88\u5a88\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3e00\u3a05\u3e00\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3a05\u3e00\u3a05\u3a05"
- + "\u3a05\u3a05\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u4586"
- + "\u3a05\u3a05\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u3e00\u3e00"
- + "\u3e00\u3e00\u039a\u039a\u039a\u039a\u039a\u039a\u039a\u039a\u039a"
- + "\u039a\u039a\u039a\u039a\u039a\u039a\u039a\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3a05\u3a05\u4586\u4586\u5098\u5098\u5b09\u5b89\u5c09\u5c89"
- + "\u5d09\u5d89\u5e09\u5e89\u5f09\u5f89\u5098\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u0298\u0298\u0318\u039a\u0318\u0298\u0298\u6515\u6596\u0298\u0519"
- + "\u0598\u0614\u0598\u0698\u0709\u0789\u0809\u0889\u0909\u0989\u0a09"
- + "\u0a89\u0b09\u0b89\u0598\u0298\u0c99\u0c99\u0c99\u0298\u0298\u0298"
- + "\u0298\u0298\u0298\u2a14\u0298\u0298\u0298\u0298\u5a10\u5a10\u5a10"
- + "\u5a10\u3e00\u5b09\u5b89\u5c09\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09"
- + "\u5f89\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3e00\u3e00\u3e00\u3e00\u5a88\u4586\u4586\u4586\u4586\u3e00\u3e00"
- + "\u5a88\u5a88\u3e00\u3e00\u5a88\u5a88\u4586\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u5a88\u3e00\u3e00\u3e00\u3e00\u3a05"
- + "\u3a05\u3e00\u3a05\u3e00\u3e00\u3a05\u3a05\u3e00\u3a05\u3e00\u3e00"
- + "\u3a05\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05"
- + "\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05\u3e00"
- + "\u3a05\u3a05\u3e00\u3a05\u3a05\u3e00\u3e00\u4586\u3e00\u5a88\u5a88"
- + "\u4586\u4586\u3e00\u3e00\u3e00\u3e00\u4586\u4586\u3e00\u3e00\u4586"
- + "\u4586\u4586\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05\u3e00\u3a05\u3e00\u3a05\u3a05"
- + "\u4586\u4586\u3e00\u3e00\u5b09\u5b89\u5c09\u5c89\u5d09\u5d89\u5e09"
- + "\u5e89\u5f09\u5f89\u3a05\u3a05\u039a\u039a\u600b\u608b\u610b\u618b"
- + "\u620b\u628b\u4f1c\u3e00\u3e00\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05\u3e00\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3e00\u3e00\u4586\u3a05\u5a88\u5a88\u4586\u4586\u4586\u4586"
- + "\u4586\u3e00\u4586\u4586\u5a88\u3e00\u5a88\u5a88\u4586\u3e00\u3e00"
- + "\u3a05\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u5b09\u5b89\u5c09\u5c89\u5d09\u5d89"
- + "\u5e09\u5e89\u5f09\u5f89\u620b\u620b\u620b\u620b\u620b\u620b\u620b"
- + "\u620b\u620b\u620b\u4f1c\u4586\u4f1c\u4586\u4f1c\u4586\u6515\u6596"
- + "\u6515\u6596\u5a88\u5a88\u4586\u4586\u4586\u3e00\u3e00\u3e00\u5a88"
- + "\u5a88\u3e00\u3e00\u5a88\u5a88\u4586\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u4586\u5a88\u3e00\u3e00\u3e00\u3e00\u3a05\u3a05"
- + "\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05\u3e00\u5a88"
- + "\u4586\u4586\u4586\u4586\u5a88\u4586\u3e00\u3e00\u3e00\u4586\u4586"
- + "\u5a88\u4586\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u5a88\u5a88\u5a88\u4586\u4586"
- + "\u4586\u4586\u4586\u4586\u4586\u5a88\u5a88\u3e00\u3e00\u3e00\u5a88"
- + "\u5a88\u5a88\u3e00\u5a88\u5a88\u5a88\u4586\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u5a88\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u4504\u3e00"
- + "\u4586\u4586\u4586\u4586\u4586\u4586\u3e00\u3e00\u5b09\u5b89\u5c09"
- + "\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09\u5f89\u3e00\u3e00\u3a05\u3a05"
- + "\u3e00\u3e00\u3e00\u3e00\u5b09\u5b89\u5c09\u5c89\u5d09\u5d89\u5e09"
- + "\u5e89\u5f09\u5f89\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u4586\u4586\u4586"
- + "\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4f87"
- + "\u4f87\u4f87\u5a88\u4586\u4586\u4586\u3e00\u3e00\u5a88\u5a88\u5a88"
- + "\u3e00\u5a88\u5a88\u5a88\u4586\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u5a88\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00\u3e00"
- + "\u4586\u3e00\u3e00\u3e00\u3e00\u5a88\u5a88\u5a88\u4586\u4586\u4586"
- + "\u3e00\u4586\u3e00\u5a88\u5a88\u5a88\u5a88\u5a88\u5a88\u5a88\u5a88"
- + "\u4586\u5a88\u5a88\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586"
- + "\u4586\u4586\u4586\u5098\u5098\u5098\u5098\u5098\u5098\u5098\u039a"
- + "\u5098\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u4504"
- + "\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u4586\u5098\u5b09\u5b89"
- + "\u5c09\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09\u5f89\u5098\u5098\u3e00"
- + "\u3e00\u3e00\u3e00\u3a05\u4f1c\u4f1c\u4f1c\u5098\u5098\u5098\u5098"
- + "\u5098\u5098\u5098\u5098\u64b8\u5098\u5098\u5098\u5098\u5098\u5098"
- + "\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4586\u4586\u4f1c\u4f1c\u4f1c\u4f1c"
- + "\u4f1c\u4f1c\u4586\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u3e00\u3e00"
- + "\u4f1c\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u289c\u289c\u289c\u289c\u289c"
- + "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u3e00\u3e00\u3e00\u3e00"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3e00\u3e00\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u1a97\u4504\u4504\u4504\u3e00\u5b09\u5b89\u5c09\u5c89\u5d09"
- + "\u5d89\u5e09\u5e89\u5f09\u5f89\u5098\u5098\u5098\u5098\u5098\u5098"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u5a88\u5a88\u4586\u4586\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u020c\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u6515"
- + "\u6596\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u5098\u5098\u5098\u6a8b\u6b0b\u6b8b\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u4586\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81"
- + "\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002\u2f81\u3002"
- + "\u2f81\u3002\u2902\u2902\u2902\u2902\u2902\u6c02\u3e00\u3e00\u3e00"
- + "\u3e00\u6c82\u6c82\u6c82\u6c82\u6c82\u6c82\u6c82\u6c82\u6d01\u6d01"
- + "\u6d01\u6d01\u6d01\u6d01\u6d01\u6d01\u6c82\u6c82\u6c82\u6c82\u6c82"
- + "\u6c82\u6c82\u6c82\u6d01\u6d01\u6d01\u6d01\u6d01\u6d01\u6d01\u6d01"
- + "\u6c82\u6c82\u6c82\u6c82\u6c82\u6c82\u3e00\u3e00\u6d01\u6d01\u6d01"
- + "\u6d01\u6d01\u6d01\u3e00\u3e00\u2902\u6c82\u2902\u6c82\u2902\u6c82"
- + "\u2902\u6c82\u3e00\u6d01\u3e00\u6d01\u3e00\u6d01\u3e00\u6d01\u6c82"
- + "\u6c82\u6c82\u6c82\u6c82\u6c82\u6c82\u6c82\u6d01\u6d01\u6d01\u6d01"
- + "\u6d01\u6d01\u6d01\u6d01\u6d82\u6d82\u6e02\u6e02\u6e02\u6e02\u6e82"
- + "\u6e82\u6f02\u6f02\u6f82\u6f82\u7002\u7002\u3e00\u3e00\u6c82\u6c82"
- + "\u6c82\u6c82\u6c82\u6c82\u6c82\u6c82\u7083\u7083\u7083\u7083\u7083"
- + "\u7083\u7083\u7083\u6c82\u6c82\u6c82\u6c82\u6c82\u6c82\u6c82\u6c82"
- + "\u7083\u7083\u7083\u7083\u7083\u7083\u7083\u7083\u6c82\u6c82\u2902"
- + "\u7102\u2902\u3e00\u2902\u2902\u6d01\u6d01\u7181\u7181\u7203\u1a1b"
- + "\u7282\u1a1b\u1b02\u1b82\u1c02\u1c82\u1d02\u1d82\u1e02\u1e82\u1f02"
- + "\u1f82\u2002\u2082\u2102\u2182\u2202\u2282\u2302\u2382\u2402\u2482"
- + "\u2502\u2582\u2602\u2682\u2702\u2782\u6515\u0c99\u6596\u0c99\u3e00"
- + "\u6c82\u6c82\u2902\u2902\u2902\u7402\u2902\u2902\u6d01\u6d01\u7481"
- + "\u7481\u7501\u1a1b\u1a1b\u1a1b\u3e00\u3e00\u2902\u7102\u2902\u3e00"
- + "\u2902\u2902\u7581\u7581\u7601\u7601\u7203\u1a1b\u1a1b\u3e00\u020c"
- + "\u020c\u020c\u020c\u020c\u020c\u020c\u76ac\u020c\u020c\u020c\u770c"
- + "\u5a10\u5a10\u7790\u7810\u2a14\u78b4\u2a14\u2a14\u2a14\u2a14\u0298"
- + "\u0298\u791d\u799e\u6515\u791d\u791d\u799e\u6515\u791d\u0298\u0298"
- + "\u0298\u0298\u0298\u0298\u0298\u0298\u7a0d\u7a8e\u7b10\u7b90\u7c10"
- + "\u7c90\u7d10\u76ac\u0318\u0318\u0318\u0318\u0318\u0298\u0298\u0298"
- + "\u0298\u29dd\u2d5e\u0298\u0298\u0298\u0298\u1a97\u7d8b\u2c8b\u2b0b"
- + "\u2b8b\u7e0b\u7e8b\u7f0b\u7f8b\u800b\u808b\u0519\u0519\u0c99\u0455"
- + "\u04d6\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00"
- + "\u3e00\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
- + "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
- + "\u4c01\u289c\u289c\u289c\u289c\u4c01\u289c\u289c\u2902\u4c01\u4c01"
- + "\u4c01\u2902\u2902\u4c01\u4c01\u4c01\u2902\u289c\u4c01\u289c\u289c"
- + "\u289c\u4c01\u4c01\u4c01\u4c01\u4c01\u289c\u289c\ua08a\ua10a\ua18a"
- + "\ua20a\ua28a\ua30a\ua38a\ua40a\ua48a\u4586\u4586\u4586\u4586\u4586"
- + "\u4586\u2a14\u4504\u4504\u4504\u4504\u4504\u289c\u289c\ua50a\ua58a"
- + "\ua60a\u3e00\u3e00\u3e00\u289c\u289c\u289c\u289c\u3e00\u289c\u289c"
- + "\u289c\u289c\u3e00\u3e00\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
+ + "\u2e01\u2e82\u2e82\u2e82\u4902\u4902\u2e82\u2e82\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u2e82\u2e82"
+ + "\u2e82\u2e82\u2e82\u3e80\u3e80\u3e80\u3e80\u3e80\u5305\u4606\u5305"
+ + "\u5305\u3e80\u5305\u5305\u3e80\u5305\u5305\u5305\u5305\u5305\u5305"
+ + "\u5305\u5305\u5305\u5305\u5405\u5405\u5405\u5405\u5405\u5405\u5405"
+ + "\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405"
+ + "\u5405\u5405\u5398\u5405\u4606\u4606\u4606\u4606\u4606\u4606\u4606"
+ + "\u5087\u5087\u4606\u5087\u5087\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u2d8b\u2d8b\u2d8b\u2d8b\u2d8b\u2d8b\u2d8b"
+ + "\u2d8b\u2d8b\u2d8b\u2d8b\u2d8b\u840b\u3082\u3001\u3082\u3001\u3082"
+ + "\u3001\u3082\u3001\u3082\u2e82\u3001\u3082\u3001\u3082\u3001\u3082"
+ + "\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001"
+ + "\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082"
+ + "\u3001\u3082\u3001\u3082\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u5c09"
+ + "\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09\u5f89\u6009\u6089\u4606\u4606"
+ + "\u3a85\u3a85\u3a85\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u1a1b\u1a1b\u4701\u0298\u4781\u4781\u4781\u3e80"
+ + "\u4801\u3e80\u4881\u4881\u4902\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01"
+ + "\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2f02"
+ + "\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02"
+ + "\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02"
+ + "\u0c99\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f82\u2f02\u2f02"
+ + "\u4a82\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u4b02"
+ + "\u4b82\u4b82\u3e80\u4c02\u4c82\u4d01\u4d01\u4d01\u4d82\u4e02\u2902"
+ + "\u3e80\u3e80\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001"
+ + "\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u2e82\u3b81\u3c03\u3c82"
+ + "\u3001\u3082\u3d81\u3e01\u3001\u3082\u3001\u3082\u3001\u3082\u3001"
+ + "\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3101\u3182"
+ + "\u3001\u3082\u3001\u3082\u3001\u3082\u2902\u3001\u3082\u3001\u3082"
+ + "\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001"
+ + "\u3082\u4e82\u4f02\u3d02\u2902\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u5b10\u5b10\u5b10\u5b10\u5b10"
+ + "\u5b10\u7f0b\u3e80\u3e80\u3e80\u7f8b\u800b\u808b\u810b\u818b\u820b"
+ + "\u0519\u0519\u0c99\u0455\u04d6\u2902\u3301\u3001\u3082\u3001\u3082"
+ + "\u3381\u3001\u3082\u3401\u3401\u3001\u3082\u2902\u3481\u3501\u3581"
+ + "\u3001\u3082\u3401\u3601\u3682\u3701\u3781\u3001\u3082\u2902\u2902"
+ + "\u3701\u3801\u2902\u3881\u3a85\u3a85\u3a85\u3a85\u3b81\u3c03\u3c82"
+ + "\u3b81\u3c03\u3c82\u3b81\u3c03\u3c82\u3001\u3082\u3001\u3082\u3001"
+ + "\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082"
+ + "\u3d02\u3001\u3082\u501c\u4606\u4606\u4606\u4606\u3e80\u5087\u5087"
+ + "\u3e80\u3e80\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001"
+ + "\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082"
+ + "\u3001\u3082\u3001\u3082\u3201\u3001\u3082\u3001\u3082\u3001\u3082"
+ + "\u3282\u3001\u3082\u3001\u3082\u3001\u3082\u3901\u3001\u3082\u3901"
+ + "\u2902\u2902\u3001\u3082\u3901\u3001\u3082\u3981\u3981\u3001\u3082"
+ + "\u3001\u3082\u3a01\u3001\u3082\u2902\u3a85\u3001\u3082\u2902\u3b02"
+ + "\u4d01\u3001\u3082\u3001\u3082\u3e80\u3e80\u3001\u3082\u3e80\u3e80"
+ + "\u3001\u3082\u3e80\u3e80\u3e80\u3001\u3082\u3001\u3082\u3001\u3082"
+ + "\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001"
+ + "\u3082\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u0598\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u5398\u3e80\u3e80\u3e80\u5398"
+ + "\u5398\u5398\u5398\u5398\u5398\u5398\u5398\u5398\u5398\u5398\u5398"
+ + "\u5398\u5398\u3e80\u5b10\u5405\u4606\u5405\u5405\u5405\u5405\u5405"
+ + "\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405"
+ + "\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405"
+ + "\u5405\u5405\u3e80\u3e80\u5b10\u4d01\u4d01\u4d01\u4d01\u4d01\u4d01"
+ + "\u4d01\u4d01\u4d01\u4d01\u4d01\u4d01\u4d01\u4d01\u4d01\u4d01\u4d01"
+ + "\u4d01\u4d01\u4d01\u4d01\u4d01\u4d01\u4d01\u4d01\u4d01\u4d01\u4d01"
+ + "\u4d01\u4d01\u4d01\u4d01\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u5c09\u5c89\u5d09\u5d89\u5e09\u5e89"
+ + "\u5f09\u5f89\u6009\u6089\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u2902\u2902\u2902\u3f02\u3f82\u2902\u4002"
+ + "\u4002\u2902\u4082\u2902\u4102\u2902\u2902\u2902\u2902\u4002\u2902"
+ + "\u2902\u4182\u2902\u2902\u2902\u2902\u4202\u4282\u2902\u2902\u2902"
+ + "\u2902\u2902\u4282\u2902\u2902\u4302\u2902\u2902\u4382\u2902\u2902"
+ + "\u2902\u2902\u2902\u2902\u2902\u2902\u2902\u2902\u4402\u2902\u2902"
+ + "\u4402\u2902\u2902\u2902\u2902\u4402\u2902\u4482\u4482\u2902\u2902"
+ + "\u2902\u2902\u2902\u2902\u4502\u2902\u2902\u2902\u2902\u2902\u2902"
+ + "\u2902\u2902\u2902\u2902\u2902\u2902\u2902\u2902\u3e80\u3e80\u4584"
+ + "\u4584\u4584\u4584\u4584\u4584\u4584\u4584\u4584\u1a1b\u1a1b\u4584"
+ + "\u4584\u4584\u4584\u4584\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b\u1a1b"
+ + "\u1a1b\u1a1b\u4584\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u5101\u5101"
+ + "\u5101\u5101\u5101\u5101\u5101\u5101\u5101\u5101\u5101\u5101\u5101"
+ + "\u5101\u5101\u5101\u5101\u5101\u5101\u5101\u5101\u5101\u5101\u3e80"
+ + "\u3e80\u4584\u5198\u5198\u5198\u5198\u5198\u5198\u2e01\u2e01\u3e80"
+ + "\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u2e01\u4982\u4a02"
+ + "\u4a02\u4a02\u4902\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02"
+ + "\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u2f02\u4f02\u4f02\u4f02"
+ + "\u4f02\u4f02\u4f02\u4f02\u4f02\u4f02\u4f02\u4f02\u4f02\u4f02\u4f02"
+ + "\u4f02\u4f02\u4606\u4606\u4606\u4606\u4606\u5198\u4606\u4606\u3a85"
+ + "\u3a85\u3a85\u3a85\u3e80\u3e80\u3e80\u3e80\u4606\u4606\u4606\u4606"
+ + "\u4606\u4606\u4606\u4606\u3e80\u4606\u4606\u4606\u4606\u4606\u4606"
+ + "\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606"
+ + "\u4606\u4606\u4606\u4606\u4606\u4606\u3e80\u4606\u4606\u4606\u5298"
+ + "\u4606\u4606\u5298\u4606\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u5305\u5305\u5305\u5305\u5305\u5305\u5305"
+ + "\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u5305\u5305\u5305\u5298\u5298\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u5c89\u5d09\u5d89"
+ + "\u5e09\u5e89\u5f09\u5f89\u6009\u6089\u640b\u648b\u650b\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u4606\u5b88\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80"
+ + "\u3e80\u3a85\u3a85\u3a85\u3e80\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80"
+ + "\u3e80\u3a85\u3a85\u3e80\u3a85\u3e80\u3a85\u3a85\u3a85\u3a85\u3e80"
+ + "\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u4606\u4606"
+ + "\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606"
+ + "\u4606\u5b88\u5b88\u5b88\u5b88\u3e80\u4606\u4606\u4606\u3e80\u4606"
+ + "\u4606\u4606\u4606\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u4606"
+ + "\u4606\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u4606"
+ + "\u5b88\u5b88\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3e80\u3e80\u3a85\u3a85\u3e80\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80\u3e80"
+ + "\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3e80\u3e80\u3e80\u3e80\u5b88\u5b88\u3e80\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3e80\u3e80\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3e80\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80\u3a85\u3a85\u3a85"
+ + "\u3e80\u3e80\u3e80\u3e80\u5c09\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09"
+ + "\u5f89\u6009\u6089\u501c\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u5509\u5589\u5609"
+ + "\u5689\u5709\u5789\u5809\u5889\u5909\u5989\u0318\u5a18\u5a18\u5398"
+ + "\u3e80\u3e80\u4606\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405"
+ + "\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u3e80\u3e80\u5405"
+ + "\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405"
+ + "\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405"
+ + "\u5405\u5405\u5405\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u5405\u5405\u5405\u5405\u5405\u5405"
+ + "\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405"
+ + "\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405\u5405"
+ + "\u5405\u5405\u5405\u5405\u6615\u6696\u5484\u5405\u5405\u5405\u5405"
+ + "\u5405\u5405\u5405\u5405\u5405\u5405\u4606\u4606\u4606\u4606\u4606"
+ + "\u4606\u4606\u4606\u4606\u4606\u4606\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u5b88\u5b88\u5198\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u4606\u4606\u5b88"
+ + "\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85\u3e80"
+ + "\u3a85\u3a85\u3a85\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u5198\u5198\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u4606\u4606\u4606\u4606\u4606\u5484\u5484\u4606"
+ + "\u4606\u289c\u4606\u4606\u4606\u4606\u3e80\u3e80\u0709\u0789\u0809"
+ + "\u0889\u0909\u0989\u0a09\u0a89\u0b09\u0b89\u5405\u5405\u5405\u5a9c"
+ + "\u5a9c\u3e80\u3a85\u3a85\u3a85\u3e80\u3a85\u3e80\u3a85\u3e80\u3e80"
+ + "\u3a85\u3a85\u3e80\u3a85\u3a85\u3a85\u3a85\u4606\u3a85\u3a85\u4606"
+ + "\u4606\u4606\u4606\u4606\u4606\u3e80\u4606\u4606\u3a85\u3e80\u3e80"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80\u3e80\u3e80\u4606\u4606\u5b88"
+ + "\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3e80\u3e80\u4606\u3a85\u5b88\u5b88\u5b88\u5b88\u5b88\u3e80\u4606"
+ + "\u5b88\u5b88\u3e80\u5b88\u5b88\u4606\u4606\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u5b88\u5b88\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3a85\u3e80\u5198\u5198\u5198\u5198\u5198\u5198\u5198\u5198"
+ + "\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09\u5f89\u6009\u6089\u640b\u670b"
+ + "\u678b\u680b\u688b\u690b\u698b\u6a0b\u6a8b\u648b\u6b0b\u3e80\u3e80"
+ + "\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85\u3a85\u3e80"
+ + "\u3e80\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80\u4606\u3a85\u5b88\u4606"
+ + "\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u5b88\u5b88\u5b88\u5b88"
+ + "\u4606\u3e80\u3e80\u3a85\u4606\u4606\u4606\u4606\u3e80\u3e80\u3e80"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85\u3e80\u3e80\u3e80"
+ + "\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80\u4606\u3e80\u5b88\u5b88\u5b88"
+ + "\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85"
+ + "\u3a85\u3a85\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85\u3e80\u3a85"
+ + "\u3a85\u3a85\u3a85\u3e80\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3e80\u3a85\u3e80\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u4606\u3a85\u3a85\u4606\u4606\u4606"
+ + "\u4606\u4606\u4606\u4606\u3e80\u3e80\u3e80\u3e80\u039a\u039a\u039a"
+ + "\u039a\u039a\u039a\u039a\u039a\u039a\u039a\u039a\u039a\u039a\u039a"
+ + "\u039a\u039a\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3a85\u3a85\u4606\u4606"
+ + "\u5198\u5198\u5c09\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09\u5f89\u6009"
+ + "\u6089\u5198\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u0298\u0298\u0318\u039a\u0318"
+ + "\u0298\u0298\u6615\u6696\u0298\u0519\u0598\u0614\u0598\u0698\u0709"
+ + "\u0789\u0809\u0889\u0909\u0989\u0a09\u0a89\u0b09\u0b89\u0598\u0298"
+ + "\u0c99\u0c99\u0c99\u0298\u0298\u0298\u0298\u0298\u0298\u2a14\u0298"
+ + "\u0298\u0298\u0298\u5b10\u5b10\u5b10\u5b10\u3e80\u5c09\u5c89\u5d09"
+ + "\u5d89\u5e09\u5e89\u5f09\u5f89\u6009\u6089\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80\u3e80\u3e80\u5b88"
+ + "\u4606\u4606\u4606\u4606\u3e80\u3e80\u5b88\u5b88\u3e80\u3e80\u5b88"
+ + "\u5b88\u4606\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u5b88\u3e80\u3e80\u3e80\u3e80\u3a85\u3a85\u3e80\u3a85\u3e80\u3e80"
+ + "\u3a85\u3a85\u3e80\u3a85\u3e80\u3e80\u3a85\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3e80\u3a85\u3a85\u3e80\u3a85\u3a85\u3e80\u3a85\u3a85"
+ + "\u3e80\u3e80\u4606\u3e80\u5b88\u5b88\u4606\u4606\u3e80\u3e80\u3e80"
+ + "\u3e80\u4606\u4606\u3e80\u3e80\u4606\u4606\u4606\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3a85\u3a85\u3a85"
+ + "\u3a85\u3e80\u3a85\u3e80\u3a85\u3a85\u4606\u4606\u3e80\u3e80\u5c09"
+ + "\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09\u5f89\u6009\u6089\u3a85\u3a85"
+ + "\u039a\u039a\u610b\u618b\u620b\u628b\u630b\u638b\u501c\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3a85"
+ + "\u3a85\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80\u4606\u3a85"
+ + "\u5b88\u5b88\u4606\u4606\u4606\u4606\u4606\u3e80\u4606\u4606\u5b88"
+ + "\u3e80\u5b88\u5b88\u4606\u3e80\u3e80\u3a85\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u5c09\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09\u5f89\u6009\u6089\u630b"
+ + "\u630b\u630b\u630b\u630b\u630b\u630b\u630b\u630b\u630b\u501c\u4606"
+ + "\u501c\u4606\u501c\u4606\u6615\u6696\u6615\u6696\u5b88\u5b88\u4606"
+ + "\u4606\u4606\u3e80\u3e80\u3e80\u5b88\u5b88\u3e80\u3e80\u5b88\u5b88"
+ + "\u4606\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u4606\u5b88"
+ + "\u3e80\u3e80\u3e80\u3e80\u3a85\u3a85\u3e80\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3e80\u3a85\u3a85\u3e80\u5b88\u4606\u4606\u4606\u4606\u5b88"
+ + "\u4606\u3e80\u3e80\u3e80\u4606\u4606\u5b88\u4606\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u5b88\u5b88\u5b88\u4606\u4606\u4606\u4606\u4606\u4606\u4606"
+ + "\u5b88\u5b88\u3e80\u3e80\u3e80\u5b88\u5b88\u5b88\u3e80\u5b88\u5b88"
+ + "\u5b88\u4606\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u5b88\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3e80\u4584\u3e80\u4606\u4606\u4606\u4606\u4606"
+ + "\u4606\u3e80\u3e80\u5c09\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09\u5f89"
+ + "\u6009\u6089\u3e80\u3e80\u3a85\u3a85\u3e80\u3e80\u3e80\u3e80\u5c09"
+ + "\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09\u5f89\u6009\u6089\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606"
+ + "\u4606\u4606\u4606\u4606\u4606\u5087\u5087\u5087\u5b88\u4606\u4606"
+ + "\u4606\u3e80\u3e80\u5b88\u5b88\u5b88\u3e80\u5b88\u5b88\u5b88\u4606"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u5b88\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3e80\u3e80\u3e80\u4606\u3e80\u3e80\u3e80\u3e80"
+ + "\u5b88\u5b88\u5b88\u4606\u4606\u4606\u3e80\u4606\u3e80\u5b88\u5b88"
+ + "\u5b88\u5b88\u5b88\u5b88\u5b88\u5b88\u4606\u5b88\u5b88\u4606\u4606"
+ + "\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u4606\u5198\u5198"
+ + "\u5198\u5198\u5198\u5198\u5198\u039a\u5198\u3e80\u3e80\u3e80\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u4584\u4606\u4606\u4606\u4606\u4606"
+ + "\u4606\u4606\u4606\u5198\u5c09\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09"
+ + "\u5f89\u6009\u6089\u5198\u5198\u3e80\u3e80\u3e80\u3e80\u3a85\u501c"
+ + "\u501c\u501c\u5198\u5198\u5198\u5198\u5198\u5198\u5198\u5198\u65b8"
+ + "\u5198\u5198\u5198\u5198\u5198\u5198\u501c\u501c\u501c\u501c\u501c"
+ + "\u4606\u4606\u501c\u501c\u501c\u501c\u501c\u501c\u4606\u501c\u501c"
+ + "\u501c\u501c\u501c\u501c\u3e80\u3e80\u501c\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
+ + "\u289c\u289c\u3e80\u3e80\u3e80\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u1a97\u4584\u4584\u4584"
+ + "\u3e80\u5c09\u5c89\u5d09\u5d89\u5e09\u5e89\u5f09\u5f89\u6009\u6089"
+ + "\u5198\u5198\u5198\u5198\u5198\u5198\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u5b88\u5b88\u4606\u4606\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u020c\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u6615\u6696\u3e80\u3e80\u3e80\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u5198"
+ + "\u5198\u5198\u6b8b\u6c0b\u6c8b\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u4606\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3001\u3082\u3001"
+ + "\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082"
+ + "\u3001\u3082\u3001\u3082\u3001\u3082\u3001\u3082\u2e82\u2e82\u2e82"
+ + "\u2e82\u2e82\u6d02\u3e80\u3e80\u3e80\u3e80\u6d82\u6d82\u6d82\u6d82"
+ + "\u6d82\u6d82\u6d82\u6d82\u6e01\u6e01\u6e01\u6e01\u6e01\u6e01\u6e01"
+ + "\u6e01\u6d82\u6d82\u6d82\u6d82\u6d82\u6d82\u6d82\u6d82\u6e01\u6e01"
+ + "\u6e01\u6e01\u6e01\u6e01\u6e01\u6e01\u6d82\u6d82\u6d82\u6d82\u6d82"
+ + "\u6d82\u3e80\u3e80\u6e01\u6e01\u6e01\u6e01\u6e01\u6e01\u3e80\u3e80"
+ + "\u2e82\u6d82\u4902\u6d82\u4902\u6d82\u4902\u6d82\u3e80\u6e01\u3e80"
+ + "\u6e01\u3e80\u6e01\u3e80\u6e01\u6d82\u6d82\u6d82\u6d82\u6d82\u6d82"
+ + "\u6d82\u6d82\u6e01\u6e01\u6e01\u6e01\u6e01\u6e01\u6e01\u6e01\u6e82"
+ + "\u6e82\u6f02\u6f02\u6f02\u6f02\u6f82\u6f82\u7002\u7002\u7082\u7082"
+ + "\u7102\u7102\u3e80\u3e80\u7182\u7182\u7182\u7182\u7182\u7182\u7182"
+ + "\u7182\u7203\u7203\u7203\u7203\u7203\u7203\u7203\u7203\u7182\u7182"
+ + "\u7182\u7182\u7182\u7182\u7182\u7182\u7203\u7203\u7203\u7203\u7203"
+ + "\u7203\u7203\u7203\u6d82\u6d82\u2e82\u7282\u2e82\u3e80\u2e82\u4902"
+ + "\u6e01\u6e01\u7301\u7301\u7383\u1a1b\u7402\u1a1b\u1b02\u1b82\u1c02"
+ + "\u1c82\u1d02\u1d82\u1e02\u1e82\u1f02\u1f82\u2002\u2082\u2102\u2182"
+ + "\u2202\u2282\u2302\u2382\u2402\u2482\u2502\u2582\u2602\u2682\u2702"
+ + "\u2782\u6615\u0c99\u6696\u0c99\u3e80\u6d82\u6d82\u4902\u4902\u2e82"
+ + "\u7582\u2e82\u4902\u6e01\u6e01\u7601\u7601\u7681\u1a1b\u1a1b\u1a1b"
+ + "\u3e80\u3e80\u2e82\u7282\u2e82\u3e80\u2e82\u4902\u7701\u7701\u7781"
+ + "\u7781\u7383\u1a1b\u1a1b\u3e80\u020c\u020c\u020c\u020c\u020c\u020c"
+ + "\u020c\u782c\u020c\u020c\u020c\u788c\u5b10\u5b10\u7910\u7990\u2a14"
+ + "\u7a34\u2a14\u2a14\u2a14\u2a14\u0298\u0298\u7a9d\u7b1e\u6615\u7a9d"
+ + "\u7a9d\u7b1e\u6615\u7a9d\u0298\u0298\u0298\u0298\u0298\u0298\u0298"
+ + "\u0298\u7b8d\u7c0e\u7c90\u7d10\u7d90\u7e10\u7e90\u782c\u0318\u0318"
+ + "\u0318\u0318\u0318\u0298\u0298\u0298\u0298\u29dd\u2d5e\u0298\u0298"
+ + "\u0298\u0298\u1a97\u7f0b\u2c8b\u2b0b\u2b8b\u7f8b\u800b\u808b\u810b"
+ + "\u818b\u820b\u0519\u0519\u0c99\u0455\u04d6\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3e80\u3e80\u3e80\u289c\u289c\u289c\u289c"
+ "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
- + "\u289c\u289c\u289c\u289c\u289c\u0c99\u289c\u289c\u289c\u289c\u289c"
- + "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u0c99\u0c99"
- + "\u289c\u289c\u0c99\u289c\u0c99\u289c\u289c\u289c\u289c\u289c\u289c"
- + "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u0c99\u289c"
- + "\u289c\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u930a\u938a\u940a\u948a\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u0c99\u0c99"
- + "\u0c99\u0c99\u0c99\u289c\u289c\u289c\u289c\u289c\u0c99\u0c99\u289c"
- + "\u289c\u289c\u289c\u4c01\u289c\u8101\u289c\u4c01\u289c\u8181\u8201"
- + "\u4c01\u4c01\u2a9c\u2902\u4c01\u4c01\u289c\u4c01\u2902\u3a05\u3a05"
- + "\u3a05\u3a05\u2902\u289c\u3e00\u3e00\u3e00\u3e00\u3e00\u830a\u838a"
- + "\u840a\u848a\u850a\u858a\u860a\u868a\u870a\u878a\u880a\u888a\u890a"
- + "\u898a\u8a0a\u8a8a\u8b0a\u8b8a\u8c0a\u8c8a\u8d0a\u8d8a\u8e0a\u8e8a"
- + "\u8f0a\u8f8a\u900a\u908a\u910a\u918a\u920a\u928a\u0c99\u0c99\u0c59"
- + "\u0c59\u0c99\u0c99\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59"
- + "\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59"
- + "\u0c99\u0c99\u0c99\u0c99\u0c99\u0c59\u0c59\u0c59\u0c59\u0c99\u0c99"
- + "\u0c99\u0c99\u0c99\u0c99\u0c99\u0c99\u0c99\u0c59\u0c59\u0c59\u0c59"
- + "\u0c59\u0c99\u0c99\u0c59\u0c59\u0c99\u0c99\u0c99\u0c99\u0c59\u0c59"
- + "\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59"
- + "\u0c99\u0c99\u0c59\u0c59\u0c59\u0c59\u0c99\u0c99\u0c99\u0c99\u0c99"
- + "\u0c59\u0c99\u0c99\u0c99\u0c99\u0c99\u0c99\u0c99\u289c\u289c\u0c99"
- + "\u289c\u289c\u0c99\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u0c99"
+ + "\u289c\u289c\u289c\u289c\u289c\u3e80\u3e80\u3e80\u3e80\u3e80\u289c"
+ + "\u289c\u289c\u289c\u289c\u289c\u289c\u4d01\u289c\u289c\u289c\u289c"
+ + "\u4d01\u289c\u289c\u2902\u4d01\u4d01\u4d01\u2902\u2902\u4d01\u4d01"
+ + "\u4d01\u2902\u289c\u4d01\u289c\u289c\u289c\u4d01\u4d01\u4d01\u4d01"
+ + "\u4d01\u289c\u289c\ua20a\ua28a\ua30a\ua38a\ua40a\ua48a\ua50a\ua58a"
+ + "\ua60a\u4606\u4606\u4606\u4606\u4606\u4606\u2a14\u4584\u4584\u4584"
+ + "\u4584\u4584\u289c\u289c\ua68a\ua70a\ua78a\u3e80\u3e80\u3e80\u289c"
+ + "\u289c\u289c\u289c\u3e80\u289c\u289c\u289c\u289c\u3e80\u3e80\u289c"
+ + "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
+ + "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
+ + "\u0c99\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
+ + "\u289c\u289c\u289c\u289c\u0c99\u0c99\u289c\u289c\u0c99\u289c\u0c99"
+ "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
+ + "\u289c\u289c\u289c\u289c\u0c99\u289c\u289c\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u948a"
+ + "\u950a\u958a\u960a\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u0c99\u0c99\u0c99\u0c99\u0c99\u289c\u289c"
+ + "\u289c\u289c\u289c\u0c99\u0c99\u289c\u289c\u289c\u289c\u4d01\u289c"
+ + "\u8281\u289c\u4d01\u289c\u8301\u8381\u4d01\u4d01\u2a9c\u2902\u4d01"
+ + "\u4d01\u289c\u4d01\u2902\u3a85\u3a85\u3a85\u3a85\u2902\u289c\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u848a\u850a\u858a\u860a\u868a\u870a\u878a"
+ + "\u880a\u888a\u890a\u898a\u8a0a\u8a8a\u8b0a\u8b8a\u8c0a\u8c8a\u8d0a"
+ + "\u8d8a\u8e0a\u8e8a\u8f0a\u8f8a\u900a\u908a\u910a\u918a\u920a\u928a"
+ + "\u930a\u938a\u940a\u0c99\u0c99\u0c59\u0c59\u0c99\u0c99\u0c59\u0c59"
+ + "\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59"
+ + "\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c99\u0c99\u0c99\u0c99\u0c99"
+ + "\u0c59\u0c59\u0c59\u0c59\u0c99\u0c99\u0c99\u0c99\u0c99\u0c99\u0c99"
+ + "\u0c99\u0c99\u0c59\u0c59\u0c59\u0c59\u0c59\u0c99\u0c99\u0c59\u0c59"
+ + "\u0c99\u0c99\u0c99\u0c99\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59"
+ + "\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c99\u0c99\u0c59\u0c59\u0c59"
+ + "\u0c59\u0c99\u0c99\u0c99\u0c99\u0c99\u0c59\u0c99\u0c99\u0c99\u0c99"
+ + "\u0c99\u0c99\u0c99\u289c\u289c\u0c99\u289c\u289c\u0c99\u289c\u289c"
+ + "\u289c\u289c\u289c\u289c\u289c\u0c99\u289c\u289c\u289c\u289c\u289c"
+ "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
- + "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u3e00"
+ "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
+ + "\u289c\u289c\u289c\u289c\u289c\u3e80\u289c\u289c\u289c\u289c\u289c"
+ "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
- + "\u289c\u289c\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u0c99\u0c59\u0c59\u0c59\u0c59\u0c99"
- + "\u0c99\u0c99\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c99\u0c99\u0c99"
- + "\u0c59\u0519\u0519\u0c99\u0c59\u0c59\u0c99\u0c99\u0c99\u0c59\u0c59"
- + "\u0c59\u0c59\u0c99\u0c59\u0c99\u0c59\u0c99\u0c99\u0c99\u0c99\u0c59"
- + "\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c99\u0c99\u0c99"
- + "\u0c99\u0c99\u0c59\u0c99\u0c59\u0c59\u0c59\u0c59\u0c59\u289c\u289c"
- + "\u289c\u289c\u289c\u289c\u289c\u0455\u04d6\u289c\u289c\u289c\u289c"
- + "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u4f1c\u4f1c\u4f1c\u4f1c"
- + "\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c"
- + "\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u3e00\u3e00\u3e00"
- + "\u3e00\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c"
- + "\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c"
- + "\u4f1c\u9a9c\u9a9c\u9a9c\u9a9c\u9a9c\u9a9c\u9a9c\u9a9c\u9a9c\u9a9c"
- + "\u9a9c\u9a9c\u9a9c\u9a9c\u9a9c\u9a9c\u9b1c\u9b1c\u9b1c\u9b1c\u9b1c"
- + "\u9b1c\u9b1c\u9b1c\u9b1c\u9b1c\u9b1c\u9b1c\u9b1c\u9b1c\u9b1c\u9b1c"
- + "\u7d8b\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u0c59\u0c99\u0c59\u0c99\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59"
- + "\u0c59\u0c99\u0c99\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59"
- + "\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c99"
- + "\u0c99\u0c59\u0c59\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u039a\u039a\u0c99\u1a1b\u289c"
- + "\u039a\u039a\u3e00\u289c\u0c99\u0c99\u0c99\u0c99\u289c\u289c\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u5a10\u5a10"
- + "\u5a10\u289c\u289c\u3e00\u3e00\u289c\u289c\u289c\u289c\u289c\u289c"
- + "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u3e00"
+ + "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u0c99\u0c59\u0c59\u0c59\u0c59\u0c99\u0c99\u0c99\u0c59\u0c59\u0c59"
+ + "\u0c59\u0c59\u0c59\u0c99\u0c99\u0c99\u0c59\u0519\u0519\u0c99\u0c59"
+ + "\u0c59\u0c99\u0c99\u0c99\u0c59\u0c59\u0c59\u0c59\u0c99\u0c59\u0c99"
+ + "\u0c59\u0c99\u0c99\u0c99\u0c99\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59"
+ + "\u0c59\u0c59\u0c59\u0c99\u0c99\u0c99\u0c99\u0c99\u0c59\u0c99\u0c59"
+ + "\u0c59\u0c59\u0c59\u0c59\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
+ + "\u0455\u04d6\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
+ + "\u289c\u289c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c"
+ + "\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c"
+ + "\u501c\u501c\u501c\u3e80\u3e80\u3e80\u3e80\u501c\u501c\u501c\u501c"
+ + "\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c"
+ + "\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u9c1c\u9c1c\u9c1c\u9c1c"
+ + "\u9c1c\u9c1c\u9c1c\u9c1c\u9c1c\u9c1c\u9c1c\u9c1c\u9c1c\u9c1c\u9c1c"
+ + "\u9c1c\u9c9c\u9c9c\u9c9c\u9c9c\u9c9c\u9c9c\u9c9c\u9c9c\u9c9c\u9c9c"
+ + "\u9c9c\u9c9c\u9c9c\u9c9c\u9c9c\u9c9c\u7f0b\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u0c59\u0c99\u0c59\u0c99\u0c59"
+ + "\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c99\u0c99\u0c59\u0c59"
+ + "\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59\u0c59"
+ + "\u0c59\u0c59\u0c59\u0c59\u0c59\u0c99\u0c99\u0c59\u0c59\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u039a\u039a\u0c99\u1a1b\u289c\u039a\u039a\u3e80\u289c\u0c99"
+ + "\u0c99\u0c99\u0c99\u289c\u289c\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u5b10\u5b10\u5b10\u289c\u289c\u3e80\u3e80"
+ "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
- + "\u289c\u289c\u289c\u3e00\u289c\u3e00\u289c\u289c\u289c\u289c\u3e00"
- + "\u3e00\u3e00\u289c\u3e00\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u828b\u9b8b\u9c0b\u9c8b\u9d0b\u9d8b\u9e0b\u9e8b"
- + "\u9f0b\u9f8b\u828b\u9b8b\u9c0b\u9c8b\u9d0b\u9d8b\u9e0b\u9e8b\u9f0b"
- + "\u9f8b\u289c\u3e00\u3e00\u3e00\u289c\u289c\u289c\u289c\u289c\u289c"
- + "\u289c\u289c\u0c59\u0c59\u0c59\u0c59\u289c\u289c\u289c\u289c\u289c"
+ + "\u289c\u289c\u289c\u289c\u289c\u3e80\u289c\u289c\u289c\u289c\u289c"
+ + "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u3e80\u289c"
+ + "\u3e80\u289c\u289c\u289c\u289c\u3e80\u3e80\u3e80\u289c\u3e80\u289c"
+ + "\u289c\u289c\u289c\u289c\u289c\u289c\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u840b\u9d0b"
+ + "\u9d8b\u9e0b\u9e8b\u9f0b\u9f8b\ua00b\ua08b\ua10b\u840b\u9d0b\u9d8b"
+ + "\u9e0b\u9e8b\u9f0b\u9f8b\ua00b\ua08b\ua10b\u289c\u3e80\u3e80\u3e80"
+ + "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u0c59\u0c59\u0c59"
+ + "\u0c59\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
+ "\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c\u289c"
- + "\u289c\u289c\u289c\u289c\u289c\u4f1c\u289c\u289c\u289c\u289c\u289c"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u620b\u620b\u620b\u620b\u620b\u620b"
- + "\u620b\u620b\u620b\u620b\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c"
- + "\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c"
- + "\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c"
- + "\u4f1c\u4f1c\u4f1c\u3e00\u3e00\u3e00\u4f1c\u600b\u608b\u610b\u618b"
- + "\ua68b\ua70b\ua78b\ua80b\ua88b\u630b\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c"
- + "\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c"
- + "\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c"
- + "\u289c\u3e00\u289c\u289c\u289c\u3e00\u289c\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u2c8b"
- + "\u2b0b\u2b8b\u7e0b\u7e8b\u7f0b\u7f8b\u800b\u808b\u950b\u958b\u960b"
- + "\u968b\u970b\u978b\u980b\u988b\u990b\u998b\u9a0b\u2c8b\u2b0b\u2b8b"
- + "\u7e0b\u7e8b\u7f0b\u7f8b\u800b\u808b\u950b\u958b\u960b\u968b\u970b"
- + "\u978b\u980b\u988b\u990b\u998b\u9a0b\u4f1c\u4f1c\u4f1c\u4f1c\u020c"
- + "\u0298\u0298\u0298\u289c\u4504\u3a05\ua00a\u0455\u04d6\u0455\u04d6"
- + "\u0455\u04d6\u0455\u04d6\u0455\u04d6\u289c\u289c\u0455\u04d6\u0455"
- + "\u04d6\u0455\u04d6\u0455\u04d6\u2a14\u6515\u6596\u6596\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3e00\u3e00\u3e00"
- + "\u3e00\u4586\u4586\u1a1b\u1a1b\u4504\u4504\u3e00\u3a05\u3a05\u3a05"
- + "\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05\u3a05"
- + "\u3a05\u3e00\u4f1c\u4f1c\u620b\u620b\u620b\u620b\u4f1c\u4f1c\u4f1c"
- + "\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c\u4f1c"
- + "\u4f1c\u4f1c\u4f1c\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\ua913\ua913"
- + "\ua913\ua913\ua913\ua913\ua913\ua913\ua913\ua913\ua913\ua913\ua913"
- + "\ua913\ua913\ua913\ua913\ua913\ua913\ua913\ua913\ua913\ua913\ua913"
- + "\ua913\ua913\ua913\ua913\ua913\ua913\ua913\ua913\ua992\ua992\ua992"
- + "\ua992\ua992\ua992\ua992\ua992\ua992\ua992\ua992\ua992\ua992\ua992"
- + "\ua992\ua992\ua992\ua992\ua992\ua992\ua992\ua992\ua992\ua992\ua992"
- + "\ua992\ua992\ua992\ua992\ua992\ua992\ua992\u5205\u5205\u5205\u5205"
- + "\u5205\u5205\u5205\u5205\u5205\u0519\u5205\u5205\u5205\u5205\u5205"
- + "\u5205\u5205\u5205\u5205\u5205\u5205\u5205\u5205\u3e00\u5205\u5205"
- + "\u5205\u5205\u5205\u3e00\u5205\u3e00\u4586\u4586\u4586\u4586\u3e00"
- + "\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00\u3e00"
- + "\u0298\u2a14\u2a14\u1a97\u1a97\u6515\u6596\u6515\u6596\u6515\u6596"
- + "\u6515\u6596\u6515\u6596\u6515\u6596\u3e00\u3e00\u3e00\u3e00\u0298"
- + "\u0298\u0298\u0298\u1a97\u1a97\u1a97\u0598\u0298\u0598\u3e00\u0298"
- + "\u0598\u0298\u0298\u2a14\u6515\u6596\u6515\u6596\u6515\u6596\u0318"
- + "\u0298\u0d01\u0d81\u0e01\u0e81\u0f01\u0f81\u1001\u1081\u1101\u1181"
- + "\u1201\u1281\u1301\u1381\u1401\u1481\u1501\u1581\u1601\u1681\u1701"
- + "\u1781\u1801\u1881\u1901\u1981\u6515\u0298\u6596\u1a1b\u1a97";
+ + "\u501c\u289c\u289c\u289c\u289c\u289c\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u630b\u630b\u630b\u630b\u630b\u630b\u630b\u630b\u630b\u630b\u501c"
+ + "\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c"
+ + "\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c"
+ + "\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u3e80\u3e80"
+ + "\u3e80\u501c\u610b\u618b\u620b\u628b\ua80b\ua88b\ua90b\ua98b\uaa0b"
+ + "\u640b\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c"
+ + "\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c"
+ + "\u501c\u501c\u501c\u501c\u501c\u501c\u289c\u3e80\u289c\u289c\u289c"
+ + "\u3e80\u289c\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u2c8b\u2b0b\u2b8b\u7f8b\u800b\u808b"
+ + "\u810b\u818b\u820b\u968b\u970b\u978b\u980b\u988b\u990b\u998b\u9a0b"
+ + "\u9a8b\u9b0b\u9b8b\u2c8b\u2b0b\u2b8b\u7f8b\u800b\u808b\u810b\u818b"
+ + "\u820b\u968b\u970b\u978b\u980b\u988b\u990b\u998b\u9a0b\u9a8b\u9b0b"
+ + "\u9b8b\u501c\u501c\u501c\u501c\u020c\u0298\u0298\u0298\u289c\u4584"
+ + "\u3a85\ua18a\u0455\u04d6\u0455\u04d6\u0455\u04d6\u0455\u04d6\u0455"
+ + "\u04d6\u289c\u289c\u0455\u04d6\u0455\u04d6\u0455\u04d6\u0455\u04d6"
+ + "\u2a14\u6615\u6696\u6696\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3e80\u3e80\u3e80\u3e80\u4606\u4606\u1a1b\u1a1b"
+ + "\u4584\u4584\u3e80\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85"
+ + "\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3a85\u3e80\u501c\u501c\u630b"
+ + "\u630b\u630b\u630b\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c"
+ + "\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u501c\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\uaa93\uaa93\uaa93\uaa93\uaa93\uaa93\uaa93"
+ + "\uaa93\uaa93\uaa93\uaa93\uaa93\uaa93\uaa93\uaa93\uaa93\uaa93\uaa93"
+ + "\uaa93\uaa93\uaa93\uaa93\uaa93\uaa93\uaa93\uaa93\uaa93\uaa93\uaa93"
+ + "\uaa93\uaa93\uaa93\uab12\uab12\uab12\uab12\uab12\uab12\uab12\uab12"
+ + "\uab12\uab12\uab12\uab12\uab12\uab12\uab12\uab12\uab12\uab12\uab12"
+ + "\uab12\uab12\uab12\uab12\uab12\uab12\uab12\uab12\uab12\uab12\uab12"
+ + "\uab12\uab12\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305"
+ + "\u0519\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305\u5305"
+ + "\u5305\u5305\u5305\u3e80\u5305\u5305\u5305\u5305\u5305\u3e80\u5305"
+ + "\u3e80\u4606\u4606\u4606\u4606\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80"
+ + "\u3e80\u3e80\u3e80\u3e80\u3e80\u3e80\u0298\u2a14\u2a14\u1a97\u1a97"
+ + "\u6615\u6696\u6615\u6696\u6615\u6696\u6615\u6696\u6615\u6696\u6615"
+ + "\u6696\u3e80\u3e80\u3e80\u3e80\u0298\u0298\u0298\u0298\u1a97\u1a97"
+ + "\u1a97\u0598\u0298\u0598\u3e80\u0298\u0598\u0298\u0298\u2a14\u6615"
+ + "\u6696\u6615\u6696\u6615\u6696\u0318\u0298\u0d01\u0d81\u0e01\u0e81"
+ + "\u0f01\u0f81\u1001\u1081\u1101\u1181\u1201\u1281\u1301\u1381\u1401"
+ + "\u1481\u1501\u1581\u1601\u1681\u1701\u1781\u1801\u1881\u1901\u1981"
+ + "\u6615\u0298\u6696\u1a1b\u1a97";
/**
* This is the attribute table for computing the numeric value of a
@@ -789,28 +796,31 @@ public interface CharData
+ "\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff"
+ "\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff"
+ "\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff"
- + "\uffff\uffff\uffff\000\001\002\003\004\005\006\007"
- + "\010\011\uffff\uffff\uffff\uffff\000\001\002\003\004"
- + "\005\006\007\010\011\001\002\003\004\uffff\020"
- + "\012d\u03e8\uffff\uffff\uffff\024\036(2<"
- + "FPZ\u2710\021\022\023\uffff\uffff\uffff\uffff"
+ + "\uffff\uffff\uffff\uffff\uffff\000\001\002\003\004\005"
+ + "\006\007\010\011\uffff\uffff\uffff\uffff\000\001\002"
+ + "\003\004\005\006\007\010\011\001\002\003\004"
+ + "\uffff\020\012d\u03e8\uffff\uffff\uffff\024\036("
+ + "2<FPZ\u2710\021\022\023\uffff\uffff"
+ + "\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff"
+ "\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff"
+ "\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff"
- + "\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\uffff\000\004"
- + "\005\006\007\010\011\uffff\uffff\uffff\001\001\002"
- + "\003\004\005\006\007\010\011\012\013\0142"
- + "d\u01f4\u03e8\001\002\003\004\005\006\007\010"
- + "\011\012\013\0142d\u01f4\u03e8\u03e8\u1388\u2710"
- + "\uffff\012\013\014\015\016\017\020\021\022\023"
- + "\024\uffff\uffff\002\003\004\005\006\007\010\011"
- + "\012\000\001\002\003\004\005\006\007\010\011"
- + "\012\024\036\005\006\007\010\011\uffff\uffff";
+ + "\uffff\000\004\005\006\007\010\011\uffff\uffff\uffff"
+ + "\001\001\002\003\004\005\006\007\010\011\012"
+ + "\013\0142d\u01f4\u03e8\001\002\003\004\005"
+ + "\006\007\010\011\012\013\0142d\u01f4\u03e8"
+ + "\u03e8\u1388\u2710\uffff\012\013\014\015\016\017\020"
+ + "\021\022\023\024\uffff\uffff\002\003\004\005\006"
+ + "\007\010\011\012\000\001\002\003\004\005\006"
+ + "\007\010\011\012\024\036\005\006\007\010\011"
+ + "\uffff\uffff";
/**
- * This is the attribute table for computing the uppercase representation
- * of a character. The value is the signed difference between the
- * character and its uppercase version. Note that this is stored as an
- * unsigned char since this is a String literal.
+ * This is the attribute table for computing the single-character uppercase
+ * representation of a character. The value is the signed difference
+ * between the character and its uppercase version. Note that this is
+ * stored as an unsigned char since this is a String literal. When
+ * capitalizing a String, you must first check if a multi-character uppercase
+ * sequence exists before using this character.
*/
String UPPER
= "\000\000\000\000\000\000\000\000\000\000\000"
@@ -821,29 +831,30 @@ public interface CharData
+ "\uffe0\uffe0\uffe0\uffe0\uffe0\uffe0\uffe0\uffe0\uffe0\uffe0\uffe0"
+ "\uffe0\uffe0\uffe0\uffe0\uffe0\uffe0\uffe0\uffe0\uffe0\uffe0\uffe0"
+ "\uffe0\uffe0\uffe0\000\000\000\000\000\000\000\000"
- + "\u02e7\000\000\000\000\uffe0y\000\uffff\000\uff18"
- + "\000\ufed4\000\000\000\000\000\000\000a\000"
- + "\000\000\000\000\000\000\0008\000\uffff\ufffe"
- + "\uffb1\000\000\000\uff2e\uff32\uff33\uff36\uff35\uff31\uff2f"
- + "\uff2d\uff2b\uff2a\uff26\uff27\uff25\000\000T\000\000"
- + "\000\000\uffda\uffdb\uffe1\uffc0\uffc1\uffc2\uffc7\000\uffd1"
- + "\uffca\uffaa\uffb0\000\000\000\000\000\uffd0\000\000"
+ + "\u02e7\000\000\000\000\000\uffe0y\000\uffff\000"
+ + "\uff18\000\ufed4\000\000\000\000\000\000\000a"
+ + "\000\000\000\000\000\000\000\0008\000\uffff"
+ + "\ufffe\uffb1\000\000\000\uff2e\uff32\uff33\uff36\uff35\uff31"
+ + "\uff2f\uff2d\uff2b\uff2a\uff26\uff27\uff25\000\000T\000"
+ + "\000\000\000\000\uffda\uffdb\uffe1\uffc0\uffc1\uffc2\uffc7"
+ + "\000\uffd1\uffca\uffaa\uffb0\000\000\000\000\000\uffd0"
+ + "\000\000\000\000\000\000\000\000\000\000\000"
+ "\000\000\000\000\000\000\000\000\000\000\000"
+ "\000\000\000\000\000\000\000\000\000\000\000"
+ "\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\uffc5\010"
+ + "\000JVd\u0080p~\010\000\011\000"
+ + "\000\ue3db\000\000\007\000\000\000\000\000\000"
+ "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\uffc5\010\000J"
- + "Vd\u0080p~\000\011\000\000\ue3db\000"
- + "\000\007\000\000\000\000\000\000\000\000\000"
+ "\000\000\000\000\000\000\000\000\000\000\000"
+ "\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\ufff0\ufff0\ufff0\ufff0\ufff0"
+ + "\ufff0\ufff0\ufff0\ufff0\ufff0\ufff0\ufff0\ufff0\ufff0\ufff0\ufff0"
+ "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\ufff0\ufff0\ufff0\ufff0\ufff0\ufff0\ufff0\ufff0"
- + "\ufff0\ufff0\ufff0\ufff0\ufff0\ufff0\ufff0\ufff0\000\000\000"
+ + "\000\000\000\000\000\uffe6\000\000\000\000\000"
+ "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\uffe6\000\000\000\000\000\000\000\000"
+ "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000";
+ + "\000\000";
/**
* This is the attribute table for computing the lowercase representation
@@ -852,85 +863,139 @@ public interface CharData
* unsigned char since this is a String literal.
*/
String LOWER
- = "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000 "
- + " "
- + " \000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000 \000\000\001\000\uff39\000"
- + "\uff87\000\u00d2\u00ce\u00cdO\u00ca\u00cb\u00cf\000\u00d3"
- + "\u00d1\u00d5\u00d6\u00da\u00d9\u00db\000\000\002\001\000"
- + "\000\uff9f\uffc8\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000&%"
- + "@?\000\000\000\000\000\000\000\000\000"
- + "\000\000\000P\000\0000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\ufff8\000"
- + "\000\000\000\000\000\ufff8\000\uffb6\ufff7\000\uffaa"
- + "\uff9c\000\uff90\ufff9\uff80\uff82\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\ue2a3\udf41\udfba\000\020\020"
- + "\020\020\020\020\020\020\020\020\020\020\020"
- + "\020\020\020\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\032\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000";
+ = "\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + " "
+ + " "
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000 \000\000\000\001\000\uff39\000\uff87\000\u00d2\u00ce"
+ + "\u00cdO\u00ca\u00cb\u00cf\000\u00d3\u00d1\u00d5\u00d6\u00da\u00d9\u00db"
+ + "\000\000\002\001\000\000\uff9f\uffc8\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000&"
+ + "%@?\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000P\000\0000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\ufff8"
+ + "\000\000\000\000\000\000\000\ufff8\000\uffb6\ufff7\000\uffaa"
+ + "\uff9c\000\uff90\ufff9\uff80\uff82\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\ue2a3\udf41\udfba\000\020\020\020\020\020\020\020\020"
+ + "\020\020\020\020\020\020\020\020\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\032\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000";
/**
* This is the attribute table for computing the directionality class
- * of a character. At present, the value is in the range 0 - 18 if the
- * character has a direction, otherwise it is -1. Note that this is
- * stored as an unsigned char since this is a String literal.
+ * of a character, as well as a marker of characters with a multi-character
+ * capitalization. The direction is taken by performing a signed shift
+ * right by 2 (where a result of -1 means an unknown direction, such as
+ * for undefined characters). The lower 2 bits form a count of the
+ * additional characters that will be added to a String when performing
+ * multi-character uppercase expansion. This count is also used, along with
+ * the offset in UPPER_SPECIAL, to determine how much of UPPER_EXPAND to use
+ * when performing the case conversion. Note that this information is stored
+ * as an unsigned char since this is a String literal.
*/
String DIRECTION
- = "\011\013\012\014\014\015\005\005\015\015\005"
- + "\007\005\004\003\003\003\003\003\003\003\003"
- + "\003\003\015\015\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\015\015\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\007\015\000\015\015\005\003\003"
- + "\000\003\015\015\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\uffff\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\010\010\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\010\000\000\000\001\001"
- + "\002\002\002\006\006\006\006\006\006\006\006"
- + "\006\006\006\002\011\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\015\015\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\014\011\000\001\015"
- + "\015\015\014\012\016\020\022\017\021\003\003"
- + "\003\003\003\003\003\000\000\000\015\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000\000"
- + "\000\003\003\003\003\003\003\003\003\003\003"
- + "\003\000\000\015\015\015\015\015\015\015\015"
- + "\015\000\000\000\000\000\000\000\000\000\000"
- + "\000\000\000\000\000\000\000\000\000\000";
+ = "$,(004\024\02444\024\034\024\020\014\014\014"
+ + "\014\014\014\014\014\014\01444\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\00044\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\0344\00044"
+ + "\024\014\014\000\01444\000\001\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\ufffc\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000 \000\000\000\000\002\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000 \000\000\000\004\004\010\010\010"
+ + "\030\030\030\030\030\030\030\030\030\030\030\010$\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "44\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\001\001\001\000\001\000\000\000\000\000\000"
+ + "\000\0000$\000\0044440(8@H<D\014"
+ + "\014\014\014\014\014\014\000\000\0004\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\014\014\014\014\014"
+ + "\014\014\014\014\014\014\000\000444444444"
+ + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
+ + "\000\000\000";
/**
- * This is the listing of titlecase special cases (all other character
+ * This is the listing of titlecase special cases (all other characters
* can use <code>UPPER</code> to determine their titlecase). The listing
- * is a sequence of character pairs; converting the first character of the
- * pair to titlecase produces the second character.
+ * is a sorted sequence of character pairs; converting the first character
+ * of the pair to titlecase produces the second character.
*/
String TITLE
= "\u01c4\u01c5\u01c5\u01c5\u01c6\u01c5\u01c7\u01c8\u01c8\u01c8\u01c9"
+ "\u01c8\u01ca\u01cb\u01cb\u01cb\u01cc\u01cb\u01f1\u01f2\u01f2\u01f2"
+ "\u01f3\u01f2";
+
+ /**
+ * This is a listing of characters with multi-character uppercase sequences.
+ * A character appears in this list exactly when it has a non-zero entry
+ * in the low-order 2-bit field of DIRECTION. The listing is a sorted
+ * sequence of pairs (hence a binary search on the even elements is an
+ * efficient way to lookup a character). The first element of a pair is the
+ * character with the expansion, and the second is the index into
+ * UPPER_EXPAND where the expansion begins. Use the 2-bit field of
+ * DIRECTION to determine where the expansion ends.
+ */
+ String UPPER_SPECIAL
+ = "\u00df\000\u0149\002\u01f0\004\u0390\006\u03b0\011"
+ + "\u0587\014\u1e96\016\u1e97\020\u1e98\022\u1e99\024"
+ + "\u1e9a\026\u1f50\030\u1f52\032\u1f54\035\u1f56 "
+ + "\u1f80#\u1f81%\u1f82'\u1f83)\u1f84+"
+ + "\u1f85-\u1f86/\u1f871\u1f883\u1f895"
+ + "\u1f8a7\u1f8b9\u1f8c;\u1f8d=\u1f8e?"
+ + "\u1f8fA\u1f90C\u1f91E\u1f92G\u1f93I"
+ + "\u1f94K\u1f95M\u1f96O\u1f97Q\u1f98S"
+ + "\u1f99U\u1f9aW\u1f9bY\u1f9c[\u1f9d]"
+ + "\u1f9e_\u1f9fa\u1fa0c\u1fa1e\u1fa2g"
+ + "\u1fa3i\u1fa4k\u1fa5m\u1fa6o\u1fa7q"
+ + "\u1fa8s\u1fa9u\u1faaw\u1faby\u1fac{"
+ + "\u1fad}\u1fae\u007f\u1faf\u0081\u1fb2\u0083\u1fb3\u0085"
+ + "\u1fb4\u0087\u1fb6\u0089\u1fb7\u008b\u1fbc\u008e\u1fc2\u0090"
+ + "\u1fc3\u0092\u1fc4\u0094\u1fc6\u0096\u1fc7\u0098\u1fcc\u009b"
+ + "\u1fd2\u009d\u1fd3\u00a0\u1fd6\u00a3\u1fd7\u00a5\u1fe2\u00a8"
+ + "\u1fe3\u00ab\u1fe4\u00ae\u1fe6\u00b0\u1fe7\u00b2\u1ff2\u00b5"
+ + "\u1ff3\u00b7\u1ff4\u00b9\u1ff6\u00bb\u1ff7\u00bd\u1ffc\u00c0"
+ + "\ufb00\u00c2\ufb01\u00c4\ufb02\u00c6\ufb03\u00c8\ufb04\u00cb"
+ + "\ufb05\u00ce\ufb06\u00d0\ufb13\u00d2\ufb14\u00d4\ufb15\u00d6"
+ + "\ufb16\u00d8\ufb17\u00da";
+
+ /**
+ * This is the listing of special case multi-character uppercase sequences.
+ * Characters listed in UPPER_SPECIAL index into this table to find their
+ * uppercase expansion. Remember that you must also perform special-casing
+ * on two single-character sequences in the Turkish locale, which are not
+ * covered here in CharData.
+ */
+ String UPPER_EXPAND
+ = "SS\u02bcNJ\u030c\u0399\u0308\u0301\u03a5\u0308"
+ + "\u0301\u0535\u0552H\u0331T\u0308W\u030aY\u030a"
+ + "A\u02be\u03a5\u0313\u03a5\u0313\u0300\u03a5\u0313\u0301\u03a5"
+ + "\u0313\u0342\u1f08\u0399\u1f09\u0399\u1f0a\u0399\u1f0b\u0399\u1f0c"
+ + "\u0399\u1f0d\u0399\u1f0e\u0399\u1f0f\u0399\u1f08\u0399\u1f09\u0399"
+ + "\u1f0a\u0399\u1f0b\u0399\u1f0c\u0399\u1f0d\u0399\u1f0e\u0399\u1f0f"
+ + "\u0399\u1f28\u0399\u1f29\u0399\u1f2a\u0399\u1f2b\u0399\u1f2c\u0399"
+ + "\u1f2d\u0399\u1f2e\u0399\u1f2f\u0399\u1f28\u0399\u1f29\u0399\u1f2a"
+ + "\u0399\u1f2b\u0399\u1f2c\u0399\u1f2d\u0399\u1f2e\u0399\u1f2f\u0399"
+ + "\u1f68\u0399\u1f69\u0399\u1f6a\u0399\u1f6b\u0399\u1f6c\u0399\u1f6d"
+ + "\u0399\u1f6e\u0399\u1f6f\u0399\u1f68\u0399\u1f69\u0399\u1f6a\u0399"
+ + "\u1f6b\u0399\u1f6c\u0399\u1f6d\u0399\u1f6e\u0399\u1f6f\u0399\u1fba"
+ + "\u0399\u0391\u0399\u0386\u0399\u0391\u0342\u0391\u0342\u0399\u0391"
+ + "\u0399\u1fca\u0399\u0397\u0399\u0389\u0399\u0397\u0342\u0397\u0342"
+ + "\u0399\u0397\u0399\u0399\u0308\u0300\u0399\u0308\u0301\u0399\u0342"
+ + "\u0399\u0308\u0342\u03a5\u0308\u0300\u03a5\u0308\u0301\u03a1\u0313"
+ + "\u03a5\u0342\u03a5\u0308\u0342\u1ffa\u0399\u03a9\u0399\u038f\u0399"
+ + "\u03a9\u0342\u03a9\u0342\u0399\u03a9\u0399FFFI"
+ + "FLFFIFFLSTS"
+ + "T\u0544\u0546\u0544\u0535\u0544\u053b\u054e\u0546\u0544\u053d";
}
diff --git a/libjava/gnu/java/lang/ClassHelper.java b/libjava/gnu/java/lang/ClassHelper.java
index 7339d6bf5bc..3bd2cf02162 100644
--- a/libjava/gnu/java/lang/ClassHelper.java
+++ b/libjava/gnu/java/lang/ClassHelper.java
@@ -38,8 +38,14 @@ exception statement from your version. */
package gnu.java.lang;
-import java.util.*;
-import java.lang.reflect.*;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
/**
* ClassHelper has various methods that ought to have been in Class.
diff --git a/libjava/gnu/java/locale/Calendar.java b/libjava/gnu/java/locale/Calendar.java
index 611aa593e17..6edc867818b 100644
--- a/libjava/gnu/java/locale/Calendar.java
+++ b/libjava/gnu/java/locale/Calendar.java
@@ -38,9 +38,9 @@ exception statement from your version. */
package gnu.java.locale;
+import java.util.Date;
import java.util.ListResourceBundle;
import java.util.Locale;
-import java.util.Date;
/**
* This class contains locale data for java.util.Calendar.<br>
diff --git a/libjava/gnu/java/locale/Calendar_de.java b/libjava/gnu/java/locale/Calendar_de.java
index 382097b814d..9cf9fc0df8c 100644
--- a/libjava/gnu/java/locale/Calendar_de.java
+++ b/libjava/gnu/java/locale/Calendar_de.java
@@ -38,8 +38,8 @@ exception statement from your version. */
package gnu.java.locale;
-import java.util.ListResourceBundle;
import java.util.Calendar;
+import java.util.ListResourceBundle;
/**
* This class contains locale data for java.util.Calendar specific for
diff --git a/libjava/gnu/java/locale/Calendar_en.java b/libjava/gnu/java/locale/Calendar_en.java
index d169306ae40..83320ebcfe2 100644
--- a/libjava/gnu/java/locale/Calendar_en.java
+++ b/libjava/gnu/java/locale/Calendar_en.java
@@ -39,7 +39,6 @@ exception statement from your version. */
package gnu.java.locale;
import java.util.ListResourceBundle;
-import java.util.Calendar;
/**
* This class contains locale data for java.util.Calendar specific for
diff --git a/libjava/gnu/java/locale/Calendar_nl.java b/libjava/gnu/java/locale/Calendar_nl.java
index ce2390e24f5..ea4ce7ee5a5 100644
--- a/libjava/gnu/java/locale/Calendar_nl.java
+++ b/libjava/gnu/java/locale/Calendar_nl.java
@@ -38,8 +38,8 @@ exception statement from your version. */
package gnu.java.locale;
-import java.util.ListResourceBundle;
import java.util.Calendar;
+import java.util.ListResourceBundle;
/**
* This class contains locale data for java.util.Calendar specific for
diff --git a/libjava/gnu/java/locale/LocaleInformation_de.java b/libjava/gnu/java/locale/LocaleInformation_de.java
index 4254f7c3947..6c97112638a 100644
--- a/libjava/gnu/java/locale/LocaleInformation_de.java
+++ b/libjava/gnu/java/locale/LocaleInformation_de.java
@@ -39,7 +39,6 @@ exception statement from your version. */
package gnu.java.locale;
import java.util.ListResourceBundle;
-import java.util.Calendar;
/**
* This class contains locale data for the German locale
diff --git a/libjava/gnu/java/locale/LocaleInformation_en.java b/libjava/gnu/java/locale/LocaleInformation_en.java
index 9fdf438d607..aa35091a526 100644
--- a/libjava/gnu/java/locale/LocaleInformation_en.java
+++ b/libjava/gnu/java/locale/LocaleInformation_en.java
@@ -39,8 +39,6 @@ exception statement from your version. */
package gnu.java.locale;
import java.util.ListResourceBundle;
-import java.util.Calendar;
-import java.util.Date;
/**
* This class contains locale data for English.
diff --git a/libjava/gnu/java/locale/LocaleInformation_nl.java b/libjava/gnu/java/locale/LocaleInformation_nl.java
index 073f7c06364..ba61f2fd503 100644
--- a/libjava/gnu/java/locale/LocaleInformation_nl.java
+++ b/libjava/gnu/java/locale/LocaleInformation_nl.java
@@ -39,8 +39,6 @@ exception statement from your version. */
package gnu.java.locale;
import java.util.ListResourceBundle;
-import java.util.Calendar;
-import java.util.Date;
/**
* This class contains locale data for the Dutch locale
diff --git a/libjava/gnu/java/net/protocol/file/Connection.java b/libjava/gnu/java/net/protocol/file/Connection.java
index 650d9f21853..4da6e882c00 100644
--- a/libjava/gnu/java/net/protocol/file/Connection.java
+++ b/libjava/gnu/java/net/protocol/file/Connection.java
@@ -50,6 +50,9 @@ import java.net.ProtocolException;
import java.net.URL;
import java.net.URLConnection;
import java.security.Permission;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
/**
* This subclass of java.net.URLConnection models a URLConnection via
@@ -62,9 +65,11 @@ import java.security.Permission;
public class Connection extends URLConnection
{
/**
- * Default permission for a file
+ * HTTP-style DateFormat, used to format the last-modified header.
*/
- private static final String DEFAULT_PERMISSION = "read";
+ private static SimpleDateFormat dateFormat
+ = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss 'GMT'",
+ new Locale ("En", "Us", "Unix"));
/**
* This is a File object for this connection
@@ -82,18 +87,11 @@ public class Connection extends URLConnection
private OutputStream outputStream;
/**
- * FilePermission to read the file
- */
- private FilePermission permission;
-
- /**
* Calls superclass constructor to initialize.
*/
public Connection(URL url)
{
super (url);
-
- permission = new FilePermission(getURL().getFile(), DEFAULT_PERMISSION);
}
/**
@@ -156,45 +154,73 @@ public class Connection extends URLConnection
}
/**
- * Get the last modified time of the resource.
- *
- * @return the time since epoch that the resource was modified.
+ * Get an http-style header field. Just handle a few common ones.
*/
- public long getLastModified()
+ public String getHeaderField(String field)
{
try
{
if (!connected)
connect();
- return file.lastModified();
+ if (field.equals("content-type"))
+ return guessContentTypeFromName(file.getName());
+ else if (field.equals("content-length"))
+ return Long.toString(file.length());
+ else if (field.equals("last-modified"))
+ {
+ synchronized (dateFormat)
+ {
+ return dateFormat.format(new Date(file.lastModified()));
+ }
+ }
}
catch (IOException e)
{
- return -1;
+ // Fall through.
}
+ return null;
}
/**
* Get the length of content.
- *
* @return the length of the content.
*/
public int getContentLength()
{
try
{
+ if (!connected)
+ connect();
+
+ return (int) file.length();
+ }
+ catch (IOException e)
+ {
+ return -1;
+ }
+ }
+
+ /**
+ * Get the last modified time of the resource.
+ *
+ * @return the time since epoch that the resource was modified.
+ */
+ public long getLastModified()
+ {
+ try
+ {
if (!connected)
connect();
-
- return (int) file.length();
+
+ return file.lastModified();
}
catch (IOException e)
{
return -1;
}
}
-
+
/**
* This method returns a <code>Permission</code> object representing the
* permissions required to access this URL. This method returns a
@@ -205,6 +231,6 @@ public class Connection extends URLConnection
*/
public Permission getPermission() throws IOException
{
- return permission;
+ return new FilePermission(getURL().getFile(), "read");
}
}
diff --git a/libjava/gnu/java/net/protocol/gcjlib/Connection.java b/libjava/gnu/java/net/protocol/gcjlib/Connection.java
index b31db565776..4e6e462f26e 100644
--- a/libjava/gnu/java/net/protocol/gcjlib/Connection.java
+++ b/libjava/gnu/java/net/protocol/gcjlib/Connection.java
@@ -61,4 +61,23 @@ class Connection extends URLConnection
connect();
return new CoreInputStream(core);
}
+
+ public String getHeaderField(String field)
+ {
+ try
+ {
+ if (!connected)
+ connect();
+
+ if (field.equals("content-type"))
+ return guessContentTypeFromName(name);
+ else if (field.equals("content-length"))
+ return Long.toString(core.length);
+ }
+ catch (IOException e)
+ {
+ // Fall through.
+ }
+ return null;
+ }
}
diff --git a/libjava/gnu/java/net/protocol/http/Connection.java b/libjava/gnu/java/net/protocol/http/Connection.java
index 44239e1721a..e15fda86250 100644
--- a/libjava/gnu/java/net/protocol/http/Connection.java
+++ b/libjava/gnu/java/net/protocol/http/Connection.java
@@ -1,5 +1,6 @@
/* HttpURLConnection.java -- URLConnection class for HTTP protocol
- Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004
+ Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -52,10 +53,13 @@ import java.net.ProtocolException;
import java.net.Socket;
import java.net.URL;
import java.net.URLConnection;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import gnu.java.net.HeaderFieldHelper;
+import gnu.java.security.action.GetPropertyAction;
/**
* This subclass of java.net.URLConnection models a URLConnection via
@@ -76,41 +80,40 @@ public final class Connection extends HttpURLConnection
* The socket we are connected to
*/
private Socket socket;
- private static int proxyPort = 80;
- private static boolean proxyInUse = false;
- private static String proxyHost = null;
-
- private static final String userAgent;
+
+ // Properties depeending on system properties settings
+ static int proxyPort = 80;
+ static boolean proxyInUse = false;
+ static String proxyHost = null;
+ static String userAgent;
static
{
// Recognize some networking properties listed at
// http://java.sun.com/j2se/1.4/docs/guide/net/properties.html.
String port = null;
- proxyHost = System.getProperty("http.proxyHost");
+ GetPropertyAction getProperty = new GetPropertyAction("http.proxyHost");
+ proxyHost = (String) AccessController.doPrivileged(getProperty);
if (proxyHost != null)
{
proxyInUse = true;
- if ((port = System.getProperty("http.proxyPort")) != null)
+ getProperty.setParameters("http.proxyPort");
+ port = (String) AccessController.doPrivileged(getProperty);
+ if (port != null)
{
try
{
proxyPort = Integer.parseInt(port);
}
- catch (Throwable t)
+ catch (NumberFormatException ex)
{
// Nothing.
}
}
}
- userAgent = "gnu-classpath/"
- + System.getProperty("gnu.classpath.version")
- + " ("
- + System.getProperty("gnu.classpath.vm.shortname")
- + "/"
- + System.getProperty("java.vm.version")
- + ")";
+ getProperty.setParameters("http.agent");
+ userAgent = (String) AccessController.doPrivileged(getProperty);
}
/**
diff --git a/libjava/gnu/java/net/protocol/jar/Connection.java b/libjava/gnu/java/net/protocol/jar/Connection.java
index 04eb3fe3715..9ba2e3fd1ff 100644
--- a/libjava/gnu/java/net/protocol/jar/Connection.java
+++ b/libjava/gnu/java/net/protocol/jar/Connection.java
@@ -49,8 +49,11 @@ import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.net.URLConnection;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.HashMap;
import java.util.Hashtable;
+import java.util.Locale;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarInputStream;
@@ -66,6 +69,14 @@ import java.util.zip.ZipFile;
public final class Connection extends JarURLConnection
{
private static Hashtable file_cache = new Hashtable();
+
+ /**
+ * HTTP-style DateFormat, used to format the last-modified header.
+ */
+ private static SimpleDateFormat dateFormat
+ = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss 'GMT'",
+ new Locale ("En", "Us", "Unix"));
+
private JarFile jar_file;
/**
@@ -219,6 +230,32 @@ public final class Connection extends JarURLConnection
return jar_file;
}
+ public String getHeaderField(String field)
+ {
+ try
+ {
+ if (!connected)
+ connect();
+
+ if (field.equals("content-type"))
+ return guessContentTypeFromName(getJarEntry().getName());
+ else if (field.equals("content-length"))
+ return Long.toString(getJarEntry().getSize());
+ else if (field.equals("last-modified"))
+ {
+ synchronized (dateFormat)
+ {
+ return dateFormat.format(new Date(getJarEntry().getTime()));
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ // Fall through.
+ }
+ return null;
+ }
+
public int getContentLength()
{
if (!connected)
@@ -233,4 +270,19 @@ public final class Connection extends JarURLConnection
return -1;
}
}
+
+ public long getLastModified()
+ {
+ if (!connected)
+ return -1;
+
+ try
+ {
+ return getJarEntry().getTime();
+ }
+ catch (IOException e)
+ {
+ return -1;
+ }
+ }
}
diff --git a/libjava/gnu/java/nio/SelectorImpl.java b/libjava/gnu/java/nio/SelectorImpl.java
index f26e0808074..239a5f8efa9 100644
--- a/libjava/gnu/java/nio/SelectorImpl.java
+++ b/libjava/gnu/java/nio/SelectorImpl.java
@@ -261,7 +261,7 @@ public class SelectorImpl extends AbstractSelector
if (unhandledWakeup)
{
unhandledWakeup = false;
- selectThread.interrupted ();
+ Thread.interrupted ();
}
selectThread = null;
}
diff --git a/libjava/gnu/java/nio/channels/FileChannelImpl.java b/libjava/gnu/java/nio/channels/FileChannelImpl.java
index f4686b26d4f..678e10f2349 100644
--- a/libjava/gnu/java/nio/channels/FileChannelImpl.java
+++ b/libjava/gnu/java/nio/channels/FileChannelImpl.java
@@ -115,11 +115,6 @@ public final class FileChannelImpl extends FileChannel
this.mode = mode;
}
- protected void finalize() throws Throwable
- {
- close();
- }
-
public static FileChannelImpl in;
public static FileChannelImpl out;
public static FileChannelImpl err;
@@ -137,6 +132,14 @@ public final class FileChannelImpl extends FileChannel
protected native void implCloseChannel() throws IOException;
+ /**
+ * Makes sure the Channel is properly closed.
+ */
+ protected void finalize() throws IOException
+ {
+ this.close();
+ }
+
public int read (ByteBuffer dst) throws IOException
{
int result;
@@ -419,7 +422,9 @@ public final class FileChannelImpl extends FileChannel
if ((mode & WRITE) == 0)
throw new NonWritableChannelException ();
- implTruncate (size);
+ if (size < size ())
+ implTruncate (size);
+
return this;
}
}
diff --git a/libjava/gnu/java/nio/channels/natFileChannelPosix.cc b/libjava/gnu/java/nio/channels/natFileChannelPosix.cc
index b8f99378834..a2c1c7962b0 100644
--- a/libjava/gnu/java/nio/channels/natFileChannelPosix.cc
+++ b/libjava/gnu/java/nio/channels/natFileChannelPosix.cc
@@ -274,7 +274,10 @@ FileChannelImpl::implTruncate (jlong size)
}
else
{
- if (::ftruncate (fd, (off_t) pos))
+ if (::ftruncate (fd, (off_t) size))
+ throw new IOException (JvNewStringLatin1 (strerror (errno)));
+ if (pos > size
+ && ::lseek (fd, (off_t) size, SEEK_SET) == -1)
throw new IOException (JvNewStringLatin1 (strerror (errno)));
pos = size;
}
diff --git a/libjava/gnu/regexp/CharIndexedInputStream.java b/libjava/gnu/regexp/CharIndexedInputStream.java
index 776f533ca81..7faeb3810d0 100644
--- a/libjava/gnu/regexp/CharIndexedInputStream.java
+++ b/libjava/gnu/regexp/CharIndexedInputStream.java
@@ -36,9 +36,9 @@ obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.regexp;
-import java.io.InputStream;
import java.io.BufferedInputStream;
import java.io.IOException;
+import java.io.InputStream;
// TODO: move(x) shouldn't rely on calling next() x times
diff --git a/libjava/include/Makefile.am b/libjava/include/Makefile.am
index 8c0814abb1b..64c87a85f36 100644
--- a/libjava/include/Makefile.am
+++ b/libjava/include/Makefile.am
@@ -2,4 +2,7 @@
AUTOMAKE_OPTIONS = foreign
+# autoconf2.13's target_alias
+target_noncanonical = @target_noncanonical@
+
include_HEADERS = jni.h jvmpi.h
diff --git a/libjava/include/Makefile.in b/libjava/include/Makefile.in
index e1e0955509a..6c0f2a0aabe 100644
--- a/libjava/include/Makefile.in
+++ b/libjava/include/Makefile.in
@@ -1,6 +1,6 @@
-# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
-# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -71,6 +71,7 @@ CAIRO_LIBS = @CAIRO_LIBS@
CC = @CC@
CHECKREFSPEC = @CHECKREFSPEC@
COMPPATH = @COMPPATH@
+CPP = @CPP@
CXX = @CXX@
CXXCPP = @CXXCPP@
DIRLTDL = @DIRLTDL@
@@ -84,27 +85,23 @@ GCDEPS = @GCDEPS@
GCINCS = @GCINCS@
GCJ = @GCJ@
GCJFLAGS = @GCJFLAGS@
+GCJH = @GCJH@
GCJVERSION = @GCJVERSION@
GCLIBS = @GCLIBS@
GCOBJS = @GCOBJS@
GCSPEC = @GCSPEC@
GCTESTSPEC = @GCTESTSPEC@
GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
-GLIB_MKENUMS = @GLIB_MKENUMS@
-GOBJECT_QUERY = @GOBJECT_QUERY@
+GNATBIND = @GNATBIND@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
-HAVE_LIB = @HAVE_LIB@
IEEESPEC = @IEEESPEC@
INCLTDL = @INCLTDL@
INTERPRETER = @INTERPRETER@
JC1GCSPEC = @JC1GCSPEC@
-LIB = @LIB@
LIBART_CFLAGS = @LIBART_CFLAGS@
-LIBART_CONFIG = @LIBART_CONFIG@
LIBART_LIBS = @LIBART_LIBS@
LIBFFI = @LIBFFI@
LIBFFIINCS = @LIBFFIINCS@
@@ -116,8 +113,8 @@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@
LIBICONV = @LIBICONV@
LIBLTDL = @LIBLTDL@
LIBTOOL = @LIBTOOL@
+LN = @LN@
LN_S = @LN_S@
-LTLIB = @LTLIB@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
@@ -143,14 +140,20 @@ THREADSPEC = @THREADSPEC@
TOOLKIT = @TOOLKIT@
VERSION = @VERSION@
ZINCS = @ZINCS@
+ZIP = @ZIP@
ZLIBS = @ZLIBS@
ZLIBSPEC = @ZLIBSPEC@
ZLIBTESTSPEC = @ZLIBTESTSPEC@
+build_subdir = @build_subdir@
+do_compare = @do_compare@
gcc_version = @gcc_version@
glibjava_CXX = @glibjava_CXX@
here = @here@
+host_subdir = @host_subdir@
libgcj_basedir = @libgcj_basedir@
mkinstalldirs = @mkinstalldirs@
+ncn_cv_ = @ncn_cv_@
+target_subdir = @target_subdir@
tool_include_dir = @tool_include_dir@
toolexecdir = @toolexecdir@
toolexeclibdir = @toolexeclibdir@
@@ -158,6 +161,9 @@ toolexecmainlibdir = @toolexecmainlibdir@
AUTOMAKE_OPTIONS = foreign
+# autoconf2.13's target_alias
+target_noncanonical = @target_noncanonical@
+
include_HEADERS = jni.h jvmpi.h
CONFIG_HEADER = config.h ../gcj/libgcj-config.h
CONFIG_CLEAN_FILES =
@@ -241,7 +247,7 @@ TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP)
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
- || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP))
+ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS)
mostlyclean-tags:
diff --git a/libjava/include/java-chartables.h b/libjava/include/java-chartables.h
index 3ae8882985c..4a02c13dd45 100644
--- a/libjava/include/java-chartables.h
+++ b/libjava/include/java-chartables.h
@@ -74,211 +74,211 @@ exception statement from your version. */
* character gives the actual index into <code>data</code>.
*/
static const jchar blocks[] = {
- 450, 450, 449, 300, 299, 416, 504, 638, 513, 656,
- 439, 713, 343, 681, 575, 440, 257, 599, 761, 761,
- 880, 867, 65167, 830, 65413, 65381, 64949, 64929, 65469, 702,
- 65470, 65513, 65192, 65326, 559, 65185, 65437, 65121, 65449, 64288,
- 195, 269, 254, 64353, 64346, 261, 259, 248, 65163, 547,
- 600, 449, 502, 470, 65249, 547, 64938, 64341, 355, 65123,
- 246, 253, 65027, 64995, 64963, 64931, 64899, 64867, 64835, 64803,
- 64771, 64739, 95, 74, 165, 307, 65032, 93, 335, 418,
- 63081, 291, 290, 63681, 65104, 258, 257, 64067, 64648, 65191,
- 192, 64673, 64399, 62589, 153, 64273, 65050, 64802, 64297, 53,
- 62393, 65105, 64712, 65461, 62265, 64146, 65413, 65333, 64078, 63334,
- 65317, 64209, 64355, 64564, 65247, 63331, 64682, 64130, 64953, 63203,
- 65087, 64705, 65097, 63467, 63247, 62184, 64921, 62947, 63844, 64508,
- 64913, 62819, 62787, 62524, 62518, 61291, 63588, 63556, 64594, 63492,
- 63460, 64521, 63396, 61084, 64394, 63300, 63476, 63236, 63428, 63372,
- 62571, 62668, 63276, 63044, 62459, 63047, 62019, 62916, 62884, 60577,
- 62819, 62788, 62756, 62724, 62692, 62660, 62628, 62596, 62564, 62532,
- 62500, 62468, 62436, 62404, 62372, 62340, 62308, 62276, 62244, 62083,
- 63345, 62148, 62116, 63281, 61123, 61091, 61059, 61027, 61924, 62620,
- 62783, 60745, 62161, 61764, 59629, 59422, 61668, 62865, 60675, 60643,
- 60611, 60579, 60547, 60515, 60483, 60451, 60419, 60387, 60355, 60323,
- 60291, 60259, 60227, 60195, 60163, 60131, 60099, 60067, 60035, 60003,
- 59971, 59939, 59907, 59875, 59843, 59811, 59779, 59747, 59715, 59683,
- 59651, 59619, 59587, 59555, 59523, 59491, 59459, 59427, 59395, 59363,
- 58625, 58593, 58561, 58529, 61393, 58465, 58433, 58407, 61313, 61265,
- 61265, 61265, 61265, 61249, 57773, 61248, 61248, 61248, 57824, 58239,
- 61184, 59859, 60389, 58591, 61134, 61279, 58512, 61247, 61155, 61302,
- 61038, 61290, 61303, 61298, 61067, 61389, 61047, 60959, 60961, 61279,
- 61399, 61072, 61389, 61403, 61283, 57891, 57859, 57827, 60709, 60727,
- 60691, 61206, 61186, 60737, 60727, 60717, 60453, 60421, 60389, 60357,
- 60360, 60022, 60259, 60262, 59824, 60165, 60133, 59875, 57155, 57123,
- 57091, 57059, 59658, 59933, 60242, 60233, 60223, 60127, 56835, 56803,
- 59685, 59653, 59621, 59589, 59557, 59525, 59493, 59461, 56515, 56483,
- 56451, 56419, 56387, 56355, 56323, 56291, 56259, 56227, 56195, 56163,
- 56131, 56099, 56067, 56035, 56003, 55971, 55939, 55907, 55875, 55843,
- 55811, 55779, 55747, 55715, 55683, 55651, 55619, 55587, 55555, 55523,
- 55491, 55459, 55427, 55395, 55363, 55331, 55299, 55267, 55235, 55203,
- 55171, 55139, 58027, 57989, 57957, 57962, 57893, 57861, 57829, 57797,
- 57765, 57733, 57736, 56713, 58274, 57293, 55587, 55556, 58178, 55491,
- 55460, 56529, 56492, 54907, 55332, 55300, 57954, 52958, 54275, 54243,
- 57616, 57571, 57797, 57521, 57521, 57688, 57105, 57390, 57357, 57325,
- 57293, 56934, 57229, 57197, 57167, 57134, 54628, 54596, 54564, 54532,
- 54500, 54468, 54436, 54404, 54372, 54340, 54308, 54276, 54244, 54212,
- 54180, 54148, 54116, 54084, 54052, 54020, 53988, 53956, 53924, 53892,
- 53860, 53828, 53796, 53764, 53732, 53700, 53668, 53636, 53604, 53572,
- 53540, 53508, 53476, 53444, 53412, 53380, 53348, 53316, 53284, 53252,
- 53220, 53188, 53156, 53124, 53092, 53060, 53028, 52996, 52964, 52932,
- 52900, 52868, 52836, 52804, 52772, 52740, 52708, 52676, 52644, 52612,
- 52580, 52548, 52516, 52484, 52452, 52420, 52388, 52356, 52324, 52292,
- 52260, 52228, 52196, 52164, 52132, 52100, 52068, 52036, 52004, 51972,
- 51940, 51908, 51876, 51844, 51812, 51780, 51748, 51716, 51684, 51652,
- 51620, 51588, 51556, 51524, 51492, 51460, 51428, 51396, 51364, 51332,
- 51300, 51268, 51236, 51204, 51172, 51140, 51108, 51076, 51044, 51012,
- 50980, 50948, 50916, 50884, 50852, 50820, 50788, 50756, 50724, 50692,
- 50660, 50628, 50596, 50564, 50532, 50500, 50468, 50436, 50404, 50372,
- 50340, 50308, 50276, 50244, 50212, 50180, 50148, 50116, 50084, 50052,
- 50020, 49988, 49956, 49924, 49892, 49860, 49828, 49796, 49764, 49732,
- 49700, 49668, 49636, 49604, 49572, 49540, 49508, 49476, 49444, 49412,
- 49380, 49348, 49316, 49284, 49252, 49220, 49188, 49156, 49124, 49092,
- 49060, 49028, 48996, 48964, 48932, 48900, 48868, 48836, 48804, 48772,
- 48740, 48708, 48676, 48644, 48612, 48580, 48548, 48516, 48484, 48452,
- 48420, 48388, 48356, 48324, 48292, 48260, 48228, 48196, 48164, 48132,
- 48100, 45792, 47107, 47075, 47972, 47940, 47908, 47876, 47844, 47812,
- 47780, 47748, 47716, 47684, 47652, 47620, 47588, 47556, 47524, 47492,
- 47460, 47428, 47396, 47364, 47332, 47300, 47268, 47236, 47204, 47172,
- 47140, 47108, 47076, 47044, 47012, 46980, 46948, 46916, 46884, 46852,
- 46820, 46788, 46756, 46724, 46692, 46660, 46628, 46596, 46564, 46532,
- 46500, 46468, 46436, 46404, 46372, 46340, 46308, 46276, 46244, 46212,
- 46180, 46148, 46116, 46084, 46052, 46020, 45988, 45956, 45924, 45892,
- 45860, 45828, 45796, 45764, 45732, 45700, 45668, 45636, 45604, 45572,
- 45540, 45508, 45476, 45444, 45412, 45380, 45348, 45316, 45284, 45252,
- 45220, 45188, 45156, 45124, 45092, 45060, 45028, 44996, 44964, 44932,
- 44900, 44868, 44836, 44804, 44772, 44740, 44708, 44676, 44644, 44612,
- 44580, 44548, 44516, 44484, 44452, 44420, 44388, 44356, 44324, 44292,
- 44260, 44228, 44196, 44164, 44132, 44100, 44068, 44036, 44004, 43972,
- 43940, 43908, 43876, 43844, 43812, 43780, 43748, 43716, 43684, 43652,
- 43620, 43588, 43556, 43524, 43492, 43460, 43428, 43396, 43364, 43332,
- 43300, 43268, 43236, 43204, 43172, 43140, 43108, 43076, 43044, 43012,
- 42980, 42948, 42916, 42884, 42852, 42820, 42788, 42756, 42724, 42692,
- 42660, 42628, 42596, 42564, 42532, 42500, 42468, 42436, 42404, 42372,
- 42340, 42308, 42276, 42244, 42212, 42180, 42148, 42116, 42084, 42052,
- 42020, 41988, 41956, 41924, 41892, 41860, 41828, 41796, 41764, 41732,
- 41700, 41668, 41636, 41604, 41572, 41540, 41508, 41476, 41444, 41412,
- 41380, 41348, 41316, 41284, 41252, 41220, 41188, 41156, 41124, 41092,
- 41060, 41028, 40996, 40964, 40932, 40900, 40868, 40836, 40804, 40772,
- 40740, 40708, 40676, 40644, 40612, 40580, 40548, 40516, 40484, 40452,
- 40420, 40388, 40356, 40324, 40292, 40260, 40228, 40196, 40164, 40132,
- 40100, 40068, 40036, 40004, 39972, 39940, 39908, 39876, 39844, 39812,
- 39780, 39748, 39716, 39684, 39652, 39620, 39588, 39556, 39524, 39492,
- 39460, 39428, 39396, 39364, 39332, 39300, 39268, 39236, 39204, 39172,
- 39140, 39108, 39076, 39044, 39012, 38980, 38948, 38916, 38884, 38852,
- 38820, 38788, 38756, 38724, 38692, 38660, 38628, 38596, 38564, 38532,
- 38500, 38468, 38436, 38404, 38372, 38340, 38308, 38276, 38244, 38212,
- 38180, 38148, 38116, 38084, 38052, 38020, 37988, 37956, 37924, 37892,
- 37860, 37828, 37796, 37764, 37732, 37700, 37668, 37636, 37604, 37572,
- 37540, 37508, 37476, 37444, 37412, 37380, 37348, 37316, 37284, 37252,
- 37220, 37188, 37156, 37124, 37092, 37060, 37028, 36996, 36964, 36932,
- 36900, 36868, 36836, 36804, 36772, 36740, 36708, 36676, 36644, 36612,
- 36580, 36548, 36516, 36484, 36452, 36420, 36388, 36356, 36324, 36292,
- 36260, 36228, 36196, 36164, 36132, 36100, 36068, 36036, 36004, 35972,
- 35940, 35908, 35876, 35844, 35812, 35780, 35748, 35716, 35684, 35652,
- 35620, 35588, 35556, 35524, 35492, 35460, 35428, 35396, 35364, 35332,
- 35300, 35268, 35236, 35204, 35172, 35140, 35108, 35076, 35044, 35012,
- 34980, 34948, 34916, 34884, 34852, 34820, 34788, 34756, 34724, 34692,
- 34660, 34628, 34596, 34564, 34532, 34500, 34468, 34436, 34404, 34372,
- 34340, 34308, 34276, 34244, 34212, 34180, 34148, 34116, 34084, 34052,
- 34020, 33988, 33956, 33924, 33892, 33860, 33828, 33796, 33764, 33732,
- 33700, 33668, 33636, 33604, 33572, 33540, 33508, 33476, 33444, 33412,
- 33380, 33348, 33316, 33284, 33252, 33220, 33188, 33156, 33124, 33092,
- 33060, 33028, 32996, 32964, 32932, 32900, 32868, 32836, 32804, 32772,
- 32740, 32708, 32676, 32644, 32612, 32580, 32548, 32516, 32484, 32452,
- 32420, 32388, 32356, 32324, 32292, 32260, 32228, 32196, 32164, 32132,
- 32100, 32068, 32036, 32004, 31972, 31940, 31908, 31876, 31844, 31812,
- 31780, 31748, 31716, 31684, 31652, 31620, 31588, 31556, 31524, 31492,
- 31460, 31428, 31396, 31364, 31332, 31300, 31268, 31236, 31204, 31172,
- 31140, 31108, 31076, 31044, 31012, 30980, 30948, 30916, 30884, 30852,
- 30820, 30788, 30756, 30724, 30692, 30660, 30628, 30596, 30564, 30532,
- 30500, 30468, 30436, 30404, 30372, 30340, 30308, 30276, 30244, 30212,
- 30180, 30148, 30116, 30084, 30052, 30020, 29988, 29956, 29924, 29892,
- 29860, 29828, 29796, 29764, 29732, 29700, 29668, 29636, 29604, 29572,
- 29540, 29508, 29476, 29444, 29412, 29380, 29348, 29316, 29284, 29252,
- 29220, 29188, 29156, 29124, 29092, 29060, 29028, 28996, 28964, 28932,
- 28900, 28868, 28836, 28804, 28772, 28740, 28708, 28676, 28644, 28612,
- 28580, 28548, 28516, 28484, 28452, 28420, 28388, 28356, 28324, 28292,
- 28260, 28228, 28196, 28164, 28132, 28100, 28068, 28036, 28004, 27972,
- 27940, 27908, 27876, 27844, 27812, 27780, 27748, 27716, 27684, 27652,
- 27620, 27588, 27556, 27524, 27492, 27460, 27428, 27396, 27364, 27332,
- 27300, 27268, 27236, 27204, 27172, 27140, 27108, 24816, 26115, 26083,
- 26980, 26948, 26916, 26884, 26852, 26820, 26788, 26756, 26724, 26692,
- 26660, 26628, 26596, 26564, 26532, 26500, 26468, 26436, 26404, 26372,
- 26340, 26308, 26276, 26244, 26212, 26180, 26148, 26116, 26084, 26052,
- 26020, 25988, 25956, 25924, 25892, 25860, 27424, 28123, 28310, 24803,
- 24771, 24739, 24707, 24675, 24643, 24611, 24579, 24547, 24515, 24483,
- 24451, 24419, 24387, 24355, 24323, 24291, 24259, 24227, 24195, 24163,
- 24131, 24099, 24067, 24035, 24003, 23971, 23939, 23907, 23875, 23843,
- 23811, 23779, 23747, 23715, 23683, 23651, 23619, 23587, 23555, 23523,
- 23491, 23459, 23427, 23395, 23363, 23331, 23299, 23267, 23235, 23203,
- 23171, 23139, 23107, 23075, 23043, 23011, 23908, 23876, 23844, 23812,
- 23780, 23748, 23716, 23684, 23652, 23620, 23588, 23556, 23524, 23492,
- 23460, 23428, 23396, 23364, 23332, 23300, 23268, 23236, 23204, 23172,
- 23140, 23108, 23076, 23044, 23012, 22980, 22948, 22916, 22884, 22852,
- 22820, 22788, 22756, 22724, 22692, 22660, 22628, 22596, 22564, 22532,
- 22500, 22468, 22436, 22404, 22372, 22340, 22308, 22276, 22244, 22212,
- 22180, 22148, 22116, 22084, 22052, 22020, 21988, 21956, 21924, 21892,
- 21860, 21828, 21796, 21764, 21732, 21700, 21668, 21636, 21604, 21572,
- 21540, 21508, 21476, 21444, 21412, 21380, 21348, 21316, 21284, 21252,
- 21220, 21188, 21156, 21124, 21092, 21060, 21028, 20996, 20964, 20932,
- 20900, 20868, 20836, 20804, 20772, 20740, 20708, 20676, 20644, 20612,
- 20580, 20548, 20516, 20484, 20452, 20420, 20388, 20356, 20324, 20292,
- 20260, 20228, 20196, 20164, 20132, 20100, 20068, 20036, 20004, 19972,
- 19940, 19908, 19876, 19844, 19812, 19780, 19748, 19716, 19684, 19652,
- 19620, 19588, 19556, 19524, 19492, 19460, 19428, 19396, 19364, 19332,
- 19300, 19268, 19236, 19204, 19172, 19140, 19108, 19076, 19044, 19012,
- 18980, 18948, 18916, 18884, 18852, 18820, 18788, 18756, 18724, 18692,
- 18660, 18628, 18596, 18564, 18532, 18500, 18468, 18436, 18404, 18372,
- 18340, 18308, 18276, 18244, 18212, 18180, 18148, 18116, 18084, 18052,
- 18020, 17988, 17956, 17924, 17892, 17860, 17828, 17796, 17764, 17732,
- 17700, 17668, 17636, 17604, 17572, 17540, 17508, 17476, 17444, 17412,
- 17380, 17348, 17316, 17284, 17252, 17220, 17188, 17156, 17124, 17092,
- 17060, 17028, 16996, 16964, 16932, 16900, 16868, 16836, 16804, 16772,
- 16740, 16708, 16676, 16644, 16612, 16580, 16548, 16516, 16484, 16452,
- 16420, 16388, 16356, 16324, 16292, 16260, 16228, 16196, 16164, 16132,
- 16100, 16068, 16036, 16004, 15972, 15940, 15908, 15876, 15844, 15812,
- 15780, 15748, 15716, 15684, 15652, 15620, 15588, 15556, 15524, 15492,
- 15460, 15428, 15396, 15364, 15332, 15300, 15268, 15236, 15204, 15172,
- 15140, 15108, 15076, 15044, 15012, 14980, 14948, 14916, 14884, 14852,
- 14820, 14788, 14756, 14724, 14692, 14660, 14628, 14596, 14564, 14532,
- 14500, 14468, 14436, 14404, 14372, 14340, 14308, 14276, 14244, 14212,
- 14180, 14148, 14116, 14084, 14052, 14020, 13988, 13956, 13924, 13892,
- 13860, 13828, 13796, 13764, 13732, 13700, 13668, 13636, 13604, 13572,
- 13540, 13508, 13476, 13444, 13412, 13380, 13348, 13316, 13284, 13252,
- 13220, 13188, 13156, 13124, 13092, 13060, 13028, 12996, 12964, 12932,
- 12900, 12868, 12836, 12804, 12772, 10482, 11779, 11747, 15397, 15365,
- 15333, 15301, 15269, 15237, 15205, 15173, 15141, 15109, 15077, 15045,
- 15013, 14981, 14949, 14917, 14885, 14853, 14821, 14789, 14757, 14725,
- 14693, 14661, 14629, 14597, 14565, 14533, 14501, 14469, 14437, 14405,
- 14373, 14341, 14309, 14277, 14245, 14213, 14181, 14149, 14117, 14085,
- 14053, 14021, 13989, 13957, 13925, 13893, 13861, 13829, 13797, 13765,
- 13733, 13701, 13669, 13637, 13605, 13573, 13541, 13509, 13477, 13445,
- 13413, 13381, 13381, 13349, 13317, 13285, 13253, 13221, 13189, 13157,
- 13125, 13093, 13061, 13029, 12997, 12965, 12933, 12901, 12869, 12837,
- 12805, 12773, 12741, 12709, 12677, 12645, 12613, 12581, 12549, 12517,
- 12485, 12453, 12421, 12389, 12357, 12325, 12293, 12261, 12229, 12197,
- 12165, 12133, 12101, 12069, 12037, 12005, 11973, 11941, 11909, 11877,
- 11845, 11813, 11781, 11749, 11717, 11685, 11653, 11621, 11589, 11557,
- 11525, 11493, 11461, 11429, 11397, 11365, 11333, 11301, 11269, 11237,
- 11205, 11173, 11141, 11109, 11077, 11045, 11013, 10981, 10949, 10917,
- 10885, 10853, 10821, 10789, 10757, 10725, 10693, 10661, 10629, 10597,
- 10565, 10533, 10501, 10469, 10437, 10405, 10373, 10341, 10309, 10277,
- 10245, 10213, 10181, 10149, 10117, 10085, 10053, 10021, 9989, 9957,
- 9925, 9893, 9861, 9829, 9797, 9765, 9733, 9701, 9669, 9637,
- 9605, 9573, 9541, 9509, 9477, 9445, 9413, 9381, 9349, 9317,
- 9285, 9253, 9221, 9189, 9157, 9125, 9093, 9061, 9029, 8997,
- 8965, 8933, 8901, 8869, 8837, 8805, 8773, 8741, 8709, 8677,
- 8645, 8613, 8581, 8549, 8517, 8485, 8453, 8421, 8389, 8357,
- 8325, 8293, 8261, 8229, 8197, 8165, 8133, 8101, 8069, 8037,
- 8005, 7973, 7941, 7909, 7877, 7845, 7813, 7781, 7749, 7717,
- 7685, 7653, 7621, 7589, 7557, 7525, 7493, 7461, 7429, 7397,
- 7365, 7333, 7301, 7269, 7237, 7205, 7173, 7141, 7109, 7077,
- 7045, 7013, 4196, 4164, 4132, 4100, 4068, 4036, 4004, 3972,
- 3940, 1640, 2947, 2915, 2883, 2851, 2819, 2787, 2674, 6469,
- 2641, 3350, 3318, 3244, 3235, 3222, 3190, 3158, 3126, 3094,
- 3062, 3030, 2998, 2966, 2934, 2904, 2854, 2838, 2738, 2774,
- 2710, 706, 1987, 5733, 5729, 1023, 2550, 2518, 2486, 1500,
- 2994, 5537, 4032, 448, 433, 2501, 2086, 4735,
+ 450, 450, 449, 300, 299, 416, 504, 732, 607, 750,
+ 533, 838, 732, 806, 700, 534, 351, 724, 886, 886,
+ 886, 873, 65167, 836, 65413, 65381, 64949, 64929, 27, 708,
+ 28, 71, 65192, 65420, 565, 65279, 26, 65215, 38, 64288,
+ 65064, 275, 260, 64353, 64346, 267, 265, 254, 65288, 553,
+ 606, 455, 508, 476, 64582, 553, 65063, 64341, 361, 64456,
+ 252, 259, 64360, 64328, 64296, 64264, 64232, 64200, 64168, 64136,
+ 64104, 64072, 101, 80, 171, 313, 65038, 99, 341, 424,
+ 63081, 297, 296, 63775, 65110, 264, 263, 64192, 64654, 65197,
+ 198, 64679, 64405, 62589, 159, 64279, 65056, 64808, 64303, 59,
+ 62393, 65111, 64718, 65467, 62265, 64152, 65419, 65339, 64084, 63459,
+ 65323, 64215, 64361, 64570, 65253, 62664, 64688, 64136, 64959, 62536,
+ 65093, 64711, 65103, 63473, 63253, 62184, 64927, 62280, 63850, 64514,
+ 64919, 62152, 62120, 62649, 62643, 61291, 63594, 63562, 64600, 63498,
+ 63466, 64527, 63402, 61084, 64400, 63306, 63482, 63242, 63434, 63378,
+ 62577, 62674, 63282, 63050, 62465, 63053, 61352, 62922, 62890, 60577,
+ 62825, 62794, 62762, 62730, 62698, 62666, 62634, 62602, 62570, 62538,
+ 62506, 62474, 62442, 62410, 62378, 62346, 62314, 62282, 62250, 62089,
+ 63351, 62154, 62122, 63287, 60456, 60424, 60392, 60360, 61930, 62626,
+ 62789, 60870, 62167, 61770, 59629, 59422, 61674, 62871, 60008, 59976,
+ 59944, 59912, 59880, 59848, 59816, 59784, 59752, 59720, 59688, 59656,
+ 59624, 59592, 59560, 59528, 59496, 59464, 59432, 59400, 59368, 59336,
+ 59304, 59272, 59240, 59208, 59176, 59144, 59112, 59080, 59048, 59016,
+ 58984, 58952, 58920, 58888, 58856, 58824, 58792, 58760, 58728, 58696,
+ 58719, 58687, 58655, 58623, 61399, 58559, 58527, 58501, 61319, 61271,
+ 61271, 61271, 61271, 61255, 57773, 61254, 61254, 61254, 57824, 58333,
+ 61190, 59865, 60395, 57924, 61140, 61285, 57845, 61253, 61161, 61308,
+ 61044, 61296, 61309, 61304, 61073, 61395, 61053, 60965, 60967, 61285,
+ 61405, 61078, 61395, 61409, 61289, 57224, 57192, 57160, 60715, 60733,
+ 60697, 61212, 61192, 60743, 60733, 60723, 60459, 60427, 60395, 60363,
+ 60366, 60028, 60265, 60268, 59830, 60171, 60139, 59881, 56488, 56456,
+ 56424, 56392, 59664, 59939, 60248, 60239, 60229, 60133, 56168, 56136,
+ 59691, 59659, 59627, 59595, 59563, 59531, 59499, 59467, 55848, 55816,
+ 55784, 55752, 55720, 55688, 55656, 55624, 55592, 55560, 55528, 55496,
+ 55464, 55432, 55400, 55368, 55336, 55304, 55272, 55240, 55208, 55176,
+ 55144, 55112, 55080, 55048, 55016, 54984, 54952, 54920, 54888, 54856,
+ 54824, 54792, 54760, 54728, 54696, 54664, 54632, 54600, 54568, 54536,
+ 54504, 54472, 58033, 57995, 57963, 57968, 57899, 57867, 57835, 57803,
+ 57771, 57739, 57742, 56719, 58280, 57299, 55593, 55562, 58184, 55497,
+ 55466, 56535, 56498, 54913, 55338, 55306, 57960, 52958, 53608, 53576,
+ 57622, 57577, 57803, 57527, 57527, 57694, 57111, 57396, 57363, 57331,
+ 57299, 56940, 57235, 57203, 57173, 57140, 54634, 54602, 54570, 54538,
+ 54506, 54474, 54442, 54410, 54378, 54346, 54314, 54282, 54250, 54218,
+ 54186, 54154, 54122, 54090, 54058, 54026, 53994, 53962, 53930, 53898,
+ 53866, 53834, 53802, 53770, 53738, 53706, 53674, 53642, 53610, 53578,
+ 53546, 53514, 53482, 53450, 53418, 53386, 53354, 53322, 53290, 53258,
+ 53226, 53194, 53162, 53130, 53098, 53066, 53034, 53002, 52970, 52938,
+ 52906, 52874, 52842, 52810, 52778, 52746, 52714, 52682, 52650, 52618,
+ 52586, 52554, 52522, 52490, 52458, 52426, 52394, 52362, 52330, 52298,
+ 52266, 52234, 52202, 52170, 52138, 52106, 52074, 52042, 52010, 51978,
+ 51946, 51914, 51882, 51850, 51818, 51786, 51754, 51722, 51690, 51658,
+ 51626, 51594, 51562, 51530, 51498, 51466, 51434, 51402, 51370, 51338,
+ 51306, 51274, 51242, 51210, 51178, 51146, 51114, 51082, 51050, 51018,
+ 50986, 50954, 50922, 50890, 50858, 50826, 50794, 50762, 50730, 50698,
+ 50666, 50634, 50602, 50570, 50538, 50506, 50474, 50442, 50410, 50378,
+ 50346, 50314, 50282, 50250, 50218, 50186, 50154, 50122, 50090, 50058,
+ 50026, 49994, 49962, 49930, 49898, 49866, 49834, 49802, 49770, 49738,
+ 49706, 49674, 49642, 49610, 49578, 49546, 49514, 49482, 49450, 49418,
+ 49386, 49354, 49322, 49290, 49258, 49226, 49194, 49162, 49130, 49098,
+ 49066, 49034, 49002, 48970, 48938, 48906, 48874, 48842, 48810, 48778,
+ 48746, 48714, 48682, 48650, 48618, 48586, 48554, 48522, 48490, 48458,
+ 48426, 48394, 48362, 48330, 48298, 48266, 48234, 48202, 48170, 48138,
+ 48106, 45792, 46440, 46408, 47978, 47946, 47914, 47882, 47850, 47818,
+ 47786, 47754, 47722, 47690, 47658, 47626, 47594, 47562, 47530, 47498,
+ 47466, 47434, 47402, 47370, 47338, 47306, 47274, 47242, 47210, 47178,
+ 47146, 47114, 47082, 47050, 47018, 46986, 46954, 46922, 46890, 46858,
+ 46826, 46794, 46762, 46730, 46698, 46666, 46634, 46602, 46570, 46538,
+ 46506, 46474, 46442, 46410, 46378, 46346, 46314, 46282, 46250, 46218,
+ 46186, 46154, 46122, 46090, 46058, 46026, 45994, 45962, 45930, 45898,
+ 45866, 45834, 45802, 45770, 45738, 45706, 45674, 45642, 45610, 45578,
+ 45546, 45514, 45482, 45450, 45418, 45386, 45354, 45322, 45290, 45258,
+ 45226, 45194, 45162, 45130, 45098, 45066, 45034, 45002, 44970, 44938,
+ 44906, 44874, 44842, 44810, 44778, 44746, 44714, 44682, 44650, 44618,
+ 44586, 44554, 44522, 44490, 44458, 44426, 44394, 44362, 44330, 44298,
+ 44266, 44234, 44202, 44170, 44138, 44106, 44074, 44042, 44010, 43978,
+ 43946, 43914, 43882, 43850, 43818, 43786, 43754, 43722, 43690, 43658,
+ 43626, 43594, 43562, 43530, 43498, 43466, 43434, 43402, 43370, 43338,
+ 43306, 43274, 43242, 43210, 43178, 43146, 43114, 43082, 43050, 43018,
+ 42986, 42954, 42922, 42890, 42858, 42826, 42794, 42762, 42730, 42698,
+ 42666, 42634, 42602, 42570, 42538, 42506, 42474, 42442, 42410, 42378,
+ 42346, 42314, 42282, 42250, 42218, 42186, 42154, 42122, 42090, 42058,
+ 42026, 41994, 41962, 41930, 41898, 41866, 41834, 41802, 41770, 41738,
+ 41706, 41674, 41642, 41610, 41578, 41546, 41514, 41482, 41450, 41418,
+ 41386, 41354, 41322, 41290, 41258, 41226, 41194, 41162, 41130, 41098,
+ 41066, 41034, 41002, 40970, 40938, 40906, 40874, 40842, 40810, 40778,
+ 40746, 40714, 40682, 40650, 40618, 40586, 40554, 40522, 40490, 40458,
+ 40426, 40394, 40362, 40330, 40298, 40266, 40234, 40202, 40170, 40138,
+ 40106, 40074, 40042, 40010, 39978, 39946, 39914, 39882, 39850, 39818,
+ 39786, 39754, 39722, 39690, 39658, 39626, 39594, 39562, 39530, 39498,
+ 39466, 39434, 39402, 39370, 39338, 39306, 39274, 39242, 39210, 39178,
+ 39146, 39114, 39082, 39050, 39018, 38986, 38954, 38922, 38890, 38858,
+ 38826, 38794, 38762, 38730, 38698, 38666, 38634, 38602, 38570, 38538,
+ 38506, 38474, 38442, 38410, 38378, 38346, 38314, 38282, 38250, 38218,
+ 38186, 38154, 38122, 38090, 38058, 38026, 37994, 37962, 37930, 37898,
+ 37866, 37834, 37802, 37770, 37738, 37706, 37674, 37642, 37610, 37578,
+ 37546, 37514, 37482, 37450, 37418, 37386, 37354, 37322, 37290, 37258,
+ 37226, 37194, 37162, 37130, 37098, 37066, 37034, 37002, 36970, 36938,
+ 36906, 36874, 36842, 36810, 36778, 36746, 36714, 36682, 36650, 36618,
+ 36586, 36554, 36522, 36490, 36458, 36426, 36394, 36362, 36330, 36298,
+ 36266, 36234, 36202, 36170, 36138, 36106, 36074, 36042, 36010, 35978,
+ 35946, 35914, 35882, 35850, 35818, 35786, 35754, 35722, 35690, 35658,
+ 35626, 35594, 35562, 35530, 35498, 35466, 35434, 35402, 35370, 35338,
+ 35306, 35274, 35242, 35210, 35178, 35146, 35114, 35082, 35050, 35018,
+ 34986, 34954, 34922, 34890, 34858, 34826, 34794, 34762, 34730, 34698,
+ 34666, 34634, 34602, 34570, 34538, 34506, 34474, 34442, 34410, 34378,
+ 34346, 34314, 34282, 34250, 34218, 34186, 34154, 34122, 34090, 34058,
+ 34026, 33994, 33962, 33930, 33898, 33866, 33834, 33802, 33770, 33738,
+ 33706, 33674, 33642, 33610, 33578, 33546, 33514, 33482, 33450, 33418,
+ 33386, 33354, 33322, 33290, 33258, 33226, 33194, 33162, 33130, 33098,
+ 33066, 33034, 33002, 32970, 32938, 32906, 32874, 32842, 32810, 32778,
+ 32746, 32714, 32682, 32650, 32618, 32586, 32554, 32522, 32490, 32458,
+ 32426, 32394, 32362, 32330, 32298, 32266, 32234, 32202, 32170, 32138,
+ 32106, 32074, 32042, 32010, 31978, 31946, 31914, 31882, 31850, 31818,
+ 31786, 31754, 31722, 31690, 31658, 31626, 31594, 31562, 31530, 31498,
+ 31466, 31434, 31402, 31370, 31338, 31306, 31274, 31242, 31210, 31178,
+ 31146, 31114, 31082, 31050, 31018, 30986, 30954, 30922, 30890, 30858,
+ 30826, 30794, 30762, 30730, 30698, 30666, 30634, 30602, 30570, 30538,
+ 30506, 30474, 30442, 30410, 30378, 30346, 30314, 30282, 30250, 30218,
+ 30186, 30154, 30122, 30090, 30058, 30026, 29994, 29962, 29930, 29898,
+ 29866, 29834, 29802, 29770, 29738, 29706, 29674, 29642, 29610, 29578,
+ 29546, 29514, 29482, 29450, 29418, 29386, 29354, 29322, 29290, 29258,
+ 29226, 29194, 29162, 29130, 29098, 29066, 29034, 29002, 28970, 28938,
+ 28906, 28874, 28842, 28810, 28778, 28746, 28714, 28682, 28650, 28618,
+ 28586, 28554, 28522, 28490, 28458, 28426, 28394, 28362, 28330, 28298,
+ 28266, 28234, 28202, 28170, 28138, 28106, 28074, 28042, 28010, 27978,
+ 27946, 27914, 27882, 27850, 27818, 27786, 27754, 27722, 27690, 27658,
+ 27626, 27594, 27562, 27530, 27498, 27466, 27434, 27402, 27370, 27338,
+ 27306, 27274, 27242, 27210, 27178, 27146, 27114, 24816, 25448, 25416,
+ 26986, 26954, 26922, 26890, 26858, 26826, 26794, 26762, 26730, 26698,
+ 26666, 26634, 26602, 26570, 26538, 26506, 26474, 26442, 26410, 26378,
+ 26346, 26314, 26282, 26250, 26218, 26186, 26154, 26122, 26090, 26058,
+ 26026, 25994, 25962, 25930, 25898, 25866, 27430, 28129, 28316, 24136,
+ 24104, 24072, 24040, 24008, 23976, 23944, 23912, 23880, 23848, 23816,
+ 23784, 23752, 23720, 23688, 23656, 23624, 23592, 23560, 23528, 23496,
+ 23464, 23432, 23400, 23368, 23336, 23304, 23272, 23240, 23208, 23176,
+ 23144, 23112, 23080, 23048, 23016, 22984, 22952, 22920, 22888, 22856,
+ 22824, 22792, 22760, 22728, 22696, 22664, 22632, 22600, 22568, 22536,
+ 22504, 22472, 22440, 22408, 22376, 22344, 23914, 23882, 23850, 23818,
+ 23786, 23754, 23722, 23690, 23658, 23626, 23594, 23562, 23530, 23498,
+ 23466, 23434, 23402, 23370, 23338, 23306, 23274, 23242, 23210, 23178,
+ 23146, 23114, 23082, 23050, 23018, 22986, 22954, 22922, 22890, 22858,
+ 22826, 22794, 22762, 22730, 22698, 22666, 22634, 22602, 22570, 22538,
+ 22506, 22474, 22442, 22410, 22378, 22346, 22314, 22282, 22250, 22218,
+ 22186, 22154, 22122, 22090, 22058, 22026, 21994, 21962, 21930, 21898,
+ 21866, 21834, 21802, 21770, 21738, 21706, 21674, 21642, 21610, 21578,
+ 21546, 21514, 21482, 21450, 21418, 21386, 21354, 21322, 21290, 21258,
+ 21226, 21194, 21162, 21130, 21098, 21066, 21034, 21002, 20970, 20938,
+ 20906, 20874, 20842, 20810, 20778, 20746, 20714, 20682, 20650, 20618,
+ 20586, 20554, 20522, 20490, 20458, 20426, 20394, 20362, 20330, 20298,
+ 20266, 20234, 20202, 20170, 20138, 20106, 20074, 20042, 20010, 19978,
+ 19946, 19914, 19882, 19850, 19818, 19786, 19754, 19722, 19690, 19658,
+ 19626, 19594, 19562, 19530, 19498, 19466, 19434, 19402, 19370, 19338,
+ 19306, 19274, 19242, 19210, 19178, 19146, 19114, 19082, 19050, 19018,
+ 18986, 18954, 18922, 18890, 18858, 18826, 18794, 18762, 18730, 18698,
+ 18666, 18634, 18602, 18570, 18538, 18506, 18474, 18442, 18410, 18378,
+ 18346, 18314, 18282, 18250, 18218, 18186, 18154, 18122, 18090, 18058,
+ 18026, 17994, 17962, 17930, 17898, 17866, 17834, 17802, 17770, 17738,
+ 17706, 17674, 17642, 17610, 17578, 17546, 17514, 17482, 17450, 17418,
+ 17386, 17354, 17322, 17290, 17258, 17226, 17194, 17162, 17130, 17098,
+ 17066, 17034, 17002, 16970, 16938, 16906, 16874, 16842, 16810, 16778,
+ 16746, 16714, 16682, 16650, 16618, 16586, 16554, 16522, 16490, 16458,
+ 16426, 16394, 16362, 16330, 16298, 16266, 16234, 16202, 16170, 16138,
+ 16106, 16074, 16042, 16010, 15978, 15946, 15914, 15882, 15850, 15818,
+ 15786, 15754, 15722, 15690, 15658, 15626, 15594, 15562, 15530, 15498,
+ 15466, 15434, 15402, 15370, 15338, 15306, 15274, 15242, 15210, 15178,
+ 15146, 15114, 15082, 15050, 15018, 14986, 14954, 14922, 14890, 14858,
+ 14826, 14794, 14762, 14730, 14698, 14666, 14634, 14602, 14570, 14538,
+ 14506, 14474, 14442, 14410, 14378, 14346, 14314, 14282, 14250, 14218,
+ 14186, 14154, 14122, 14090, 14058, 14026, 13994, 13962, 13930, 13898,
+ 13866, 13834, 13802, 13770, 13738, 13706, 13674, 13642, 13610, 13578,
+ 13546, 13514, 13482, 13450, 13418, 13386, 13354, 13322, 13290, 13258,
+ 13226, 13194, 13162, 13130, 13098, 13066, 13034, 13002, 12970, 12938,
+ 12906, 12874, 12842, 12810, 12778, 10482, 11112, 11080, 15403, 15371,
+ 15339, 15307, 15275, 15243, 15211, 15179, 15147, 15115, 15083, 15051,
+ 15019, 14987, 14955, 14923, 14891, 14859, 14827, 14795, 14763, 14731,
+ 14699, 14667, 14635, 14603, 14571, 14539, 14507, 14475, 14443, 14411,
+ 14379, 14347, 14315, 14283, 14251, 14219, 14187, 14155, 14123, 14091,
+ 14059, 14027, 13995, 13963, 13931, 13899, 13867, 13835, 13803, 13771,
+ 13739, 13707, 13675, 13643, 13611, 13579, 13547, 13515, 13483, 13451,
+ 13419, 13387, 13387, 13355, 13323, 13291, 13259, 13227, 13195, 13163,
+ 13131, 13099, 13067, 13035, 13003, 12971, 12939, 12907, 12875, 12843,
+ 12811, 12779, 12747, 12715, 12683, 12651, 12619, 12587, 12555, 12523,
+ 12491, 12459, 12427, 12395, 12363, 12331, 12299, 12267, 12235, 12203,
+ 12171, 12139, 12107, 12075, 12043, 12011, 11979, 11947, 11915, 11883,
+ 11851, 11819, 11787, 11755, 11723, 11691, 11659, 11627, 11595, 11563,
+ 11531, 11499, 11467, 11435, 11403, 11371, 11339, 11307, 11275, 11243,
+ 11211, 11179, 11147, 11115, 11083, 11051, 11019, 10987, 10955, 10923,
+ 10891, 10859, 10827, 10795, 10763, 10731, 10699, 10667, 10635, 10603,
+ 10571, 10539, 10507, 10475, 10443, 10411, 10379, 10347, 10315, 10283,
+ 10251, 10219, 10187, 10155, 10123, 10091, 10059, 10027, 9995, 9963,
+ 9931, 9899, 9867, 9835, 9803, 9771, 9739, 9707, 9675, 9643,
+ 9611, 9579, 9547, 9515, 9483, 9451, 9419, 9387, 9355, 9323,
+ 9291, 9259, 9227, 9195, 9163, 9131, 9099, 9067, 9035, 9003,
+ 8971, 8939, 8907, 8875, 8843, 8811, 8779, 8747, 8715, 8683,
+ 8651, 8619, 8587, 8555, 8523, 8491, 8459, 8427, 8395, 8363,
+ 8331, 8299, 8267, 8235, 8203, 8171, 8139, 8107, 8075, 8043,
+ 8011, 7979, 7947, 7915, 7883, 7851, 7819, 7787, 7755, 7723,
+ 7691, 7659, 7627, 7595, 7563, 7531, 7499, 7467, 7435, 7403,
+ 7371, 7339, 7307, 7275, 7243, 7211, 7179, 7147, 7115, 7083,
+ 7051, 7019, 4202, 4170, 4138, 4106, 4074, 4042, 4010, 3978,
+ 3946, 1640, 2280, 2248, 2216, 2184, 2152, 2120, 2007, 6475,
+ 1974, 3356, 3324, 3250, 3241, 3228, 3196, 3164, 3132, 3100,
+ 3068, 3036, 3004, 2972, 2940, 2910, 2860, 2844, 2744, 2780,
+ 2716, 706, 1320, 5739, 5735, 1023, 2556, 2524, 2492, 1625,
+ 3000, 5543, 4038, 448, 433, 2507, 2092, 4741,
};
/** Length of blocks. */
static const int blocks_length = 2048;
@@ -292,46 +292,46 @@ static const int blocks_length = 2048;
* as of Unicode version 3.2.0, but may soon become one.
*/
static const jchar data[] = {
- 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290,
- 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290,
- 12161, 12290, 15872, 15872, 12161, 12290, 15872, 15872, 15872, 15872,
- 15872, 15872, 14853, 14853, 15872, 15872, 15872, 14853, 14853, 14853,
- 15872, 15872, 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 15872, 14853, 14853, 14853, 15872, 15872, 15872, 15872, 23176,
- 23176, 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 15872, 14853, 14853, 14853, 15872, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 15872, 15872,
- 15872, 15872, 20632, 15872, 15872, 15872, 15872, 17798, 15872, 15872,
- 14853, 14853, 14853, 14853, 14853, 14853, 15872, 15872, 15872, 15872,
- 14853, 14853, 15872, 15872, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 21253, 21253,
- 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253,
- 15872, 15872, 15872, 15872, 20738, 20738, 20738, 20738, 20738, 20738,
- 20738, 20738, 20738, 20738, 20738, 20738, 20738, 20738, 20738, 20738,
- 20738, 20738, 20738, 20738, 20738, 20738, 20738, 20738, 20738, 20738,
- 20738, 20738, 20738, 20738, 20738, 10498, 15872, 20632, 10772, 15872,
- 15872, 15872, 15872, 15872, 15872, 17798, 17798, 17798, 17798, 17798,
- 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798,
- 17926, 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 6683, 6683, 15872,
- 15872, 15872, 15872, 17668, 15872, 15872, 15872, 664, 15872, 664,
- 25877, 26006, 664, 6807, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 17668, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 17668, 17668, 6683, 6683, 6683,
+ 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418,
+ 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418,
+ 12289, 12418, 16000, 16000, 12289, 12418, 16000, 16000, 16000, 16000,
+ 16000, 16000, 14981, 14981, 16000, 16000, 16000, 14981, 14981, 14981,
+ 16000, 16000, 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 16000, 14981, 14981, 14981, 16000, 16000, 16000, 16000, 23432,
+ 23432, 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 16000, 14981, 14981, 14981, 16000, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, 16000,
+ 16000, 16000, 20888, 16000, 16000, 16000, 16000, 17926, 16000, 16000,
+ 14981, 14981, 14981, 14981, 14981, 14981, 16000, 16000, 16000, 16000,
+ 14981, 14981, 16000, 16000, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 21509, 21509,
+ 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509,
+ 16000, 16000, 16000, 16000, 20994, 20994, 20994, 20994, 20994, 20994,
+ 20994, 20994, 20994, 20994, 20994, 20994, 20994, 20994, 20994, 20994,
+ 20994, 20994, 20994, 20994, 20994, 20994, 20994, 20994, 20994, 20994,
+ 20994, 20994, 20994, 20994, 20994, 11906, 16000, 20888, 10772, 16000,
+ 16000, 16000, 16000, 16000, 16000, 17926, 17926, 17926, 17926, 17926,
+ 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926,
+ 18054, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 6683, 6683, 16000,
+ 16000, 16000, 16000, 17796, 16000, 16000, 16000, 664, 16000, 664,
+ 26133, 26262, 664, 6807, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 17796, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 17796, 17796, 6683, 6683, 6683,
6683, 6683, 6683, 6683, 6683, 6683, 6683, 6683, 6683, 6683,
- 6683, 17668, 17668, 6683, 6683, 6683, 6683, 6683, 6683, 6683,
- 6683, 6683, 6683, 6683, 6683, 6683, 6683, 10498, 28930, 10498,
- 15872, 10498, 10498, 29441, 29441, 29441, 29441, 29187, 6683, 6683,
- 6683, 27778, 27778, 10498, 10498, 15872, 15872, 10498, 10498, 27905,
- 27905, 29569, 29569, 15872, 6683, 6683, 6683, 6914, 7042, 7170,
+ 6683, 17796, 17796, 6683, 6683, 6683, 6683, 6683, 6683, 6683,
+ 6683, 6683, 6683, 6683, 6683, 6683, 6683, 11906, 29314, 11906,
+ 16000, 11906, 18690, 29825, 29825, 29825, 29825, 29571, 6683, 6683,
+ 6683, 28034, 28034, 18690, 18690, 16000, 16000, 11906, 18690, 28161,
+ 28161, 29953, 29953, 16000, 6683, 6683, 6683, 6914, 7042, 7170,
7298, 7426, 7554, 7682, 7810, 7938, 8066, 8194, 8322, 8450,
8578, 8706, 8834, 8962, 9090, 9218, 9346, 9474, 9602, 9730,
9858, 9986, 10114, 1109, 3225, 1238, 3225, 15, 15, 15,
@@ -347,489 +347,490 @@ static const jchar data[] = {
4097, 4225, 4353, 4481, 4609, 4737, 4865, 4993, 5121, 5249,
5377, 5505, 5633, 5761, 5889, 6017, 6145, 6273, 6401, 6529,
1109, 664, 1238, 6683, 6807, 664, 664, 664, 3225, 1109,
- 1238, 15872, 664, 664, 664, 664, 664, 664, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 10284, 664, 922, 922,
+ 1238, 16000, 664, 664, 664, 664, 664, 664, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 10284, 664, 922, 922,
922, 922, 10396, 10396, 6683, 10396, 10498, 10717, 3225, 10772,
10396, 6683, 10908, 1305, 11019, 11147, 6683, 11266, 10396, 664,
6683, 11403, 10498, 11614, 11659, 11659, 11659, 664, 664, 1305,
- 1556, 3225, 3225, 3225, 15872, 664, 922, 792, 664, 15872,
- 15872, 15872, 15872, 21253, 21253, 21253, 15872, 21253, 15872, 21253,
- 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253,
- 21253, 21253, 15872, 15872, 15872, 17798, 17798, 17798, 17798, 17798,
- 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798,
- 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798,
- 17798, 17798, 17798, 17798, 17798, 17798, 17798, 15872, 20252, 20252,
- 20097, 20097, 20097, 20097, 20097, 20097, 20097, 20097, 20097, 20097,
- 20097, 20097, 20097, 20097, 20097, 20097, 11777, 11777, 11777, 11777,
+ 1556, 3225, 3225, 3225, 16000, 664, 922, 792, 664, 16000,
+ 16000, 16000, 16000, 21509, 21509, 21509, 16000, 21509, 16000, 21509,
+ 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509,
+ 21509, 21509, 16000, 16000, 16000, 17926, 17926, 17926, 17926, 17926,
+ 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926,
+ 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926,
+ 17926, 17926, 17926, 17926, 17926, 17926, 17926, 16000, 20508, 20508,
+ 20353, 20353, 20353, 20353, 20353, 20353, 20353, 20353, 20353, 20353,
+ 20353, 20353, 20353, 20353, 20353, 20353, 11777, 11777, 11777, 11777,
11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777,
11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 3225,
- 11777, 11777, 11777, 11777, 11777, 11777, 11777, 10498, 12929, 12161,
- 12290, 12161, 12290, 13057, 12161, 12290, 13185, 13185, 12161, 12290,
- 10498, 13313, 13441, 13569, 12161, 12290, 13185, 13697, 13826, 13953,
- 14081, 12161, 12290, 10498, 10498, 13953, 14209, 10498, 14337, 12290,
- 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290, 10498, 12161,
- 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161,
- 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161,
- 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161,
- 12290, 15872, 15872, 15872, 15872, 15872, 15872, 23305, 23433, 23561,
- 23689, 23817, 23945, 24073, 24201, 24329, 24457, 17798, 17798, 14853,
- 14853, 14853, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 6683, 6683, 18049, 664, 18177, 18177, 18177,
- 15872, 18305, 15872, 18433, 18433, 10498, 11777, 11777, 11777, 11777,
+ 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11906, 11906, 11906,
+ 18690, 18690, 11906, 11906, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 11906, 11906, 11906, 11906,
+ 11906, 16000, 16000, 16000, 16000, 16000, 21253, 17926, 21253, 21253,
+ 16000, 21253, 21253, 16000, 21253, 21253, 21253, 21253, 21253, 21253,
+ 21253, 21253, 21253, 21253, 21509, 21509, 21509, 21509, 21509, 21509,
+ 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509,
+ 21509, 21509, 21509, 21509, 21400, 21509, 17926, 17926, 17926, 17926,
+ 17926, 17926, 17926, 20615, 20615, 17926, 20615, 20615, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659,
+ 11659, 11659, 33803, 12418, 12289, 12418, 12289, 12418, 12289, 12418,
+ 12289, 12418, 11906, 12289, 12418, 12289, 12418, 12289, 12418, 12289,
+ 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289,
+ 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289,
+ 12418, 12289, 12418, 12289, 12418, 16000, 16000, 16000, 16000, 16000,
+ 16000, 23561, 23689, 23817, 23945, 24073, 24201, 24329, 24457, 24585,
+ 24713, 17926, 17926, 14981, 14981, 14981, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 6683, 6683, 18177,
+ 664, 18305, 18305, 18305, 16000, 18433, 16000, 18561, 18561, 18690,
11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777,
- 11777, 11777, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906,
- 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906,
- 11906, 11906, 11906, 11906, 11906, 3225, 11906, 11906, 11906, 11906,
- 11906, 11906, 11906, 12034, 11906, 11906, 18818, 11906, 11906, 11906,
- 11906, 11906, 11906, 11906, 11906, 11906, 18946, 19074, 19074, 15872,
- 19202, 19330, 19457, 19457, 19457, 19586, 19714, 10498, 15872, 15872,
- 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290,
- 12161, 12290, 12161, 12290, 12161, 12290, 10498, 15105, 15235, 15362,
- 12161, 12290, 15617, 15745, 12161, 12290, 12161, 12290, 12161, 12290,
- 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290,
- 12417, 12546, 12161, 12290, 12161, 12290, 12161, 12290, 10498, 12161,
- 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161,
- 12290, 12161, 12290, 12161, 12290, 19842, 19970, 15490, 10498, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 23056, 23056, 23056, 23056, 23056, 23056, 32139, 15872, 15872,
- 15872, 32267, 32395, 32523, 32651, 32779, 32907, 1305, 1305, 3225,
- 1109, 1238, 10498, 14853, 14853, 14853, 14853, 15105, 15235, 15362,
- 15105, 15235, 15362, 15105, 15235, 15362, 12161, 12290, 12161, 12290,
- 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290,
- 12161, 12290, 15490, 12161, 12290, 20252, 17798, 17798, 17798, 17798,
- 15872, 20359, 20359, 15872, 15872, 12161, 12290, 12161, 12290, 12161,
- 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161,
- 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12673,
- 12161, 12290, 12161, 12290, 12161, 12290, 12802, 12161, 12290, 12161,
- 12290, 12161, 12290, 14465, 12161, 12290, 14465, 10498, 10498, 12161,
- 12290, 14465, 12161, 12290, 14593, 14593, 12161, 12290, 12161, 12290,
- 14721, 12161, 12290, 10498, 14853, 12161, 12290, 10498, 14978, 19457,
- 12161, 12290, 12161, 12290, 15872, 15872, 12161, 12290, 15872, 15872,
- 12161, 12290, 15872, 15872, 15872, 12161, 12290, 12161, 12290, 12161,
- 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161,
- 12290, 12161, 12290, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 1432, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 21144, 15872, 15872, 15872, 21144, 21144, 21144, 21144, 21144, 21144,
- 21144, 21144, 21144, 21144, 21144, 21144, 21144, 21144, 15872, 23056,
- 21253, 17798, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253,
- 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253,
- 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253,
- 21253, 15872, 15872, 23056, 19457, 19457, 19457, 19457, 19457, 19457,
- 19457, 19457, 19457, 19457, 19457, 19457, 19457, 19457, 19457, 19457,
- 19457, 19457, 19457, 19457, 19457, 19457, 19457, 19457, 19457, 19457,
- 19457, 19457, 19457, 19457, 19457, 19457, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 15872, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 15872, 14853, 15872, 15872, 15872, 15872,
- 15872, 23305, 23433, 23561, 23689, 23817, 23945, 24073, 24201, 24329,
- 24457, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 10498, 10498, 10498, 16002, 16130, 10498, 16258,
- 16258, 10498, 16386, 10498, 16514, 10498, 10498, 10498, 10498, 16258,
- 10498, 10498, 16642, 10498, 10498, 10498, 10498, 16770, 16898, 10498,
- 10498, 10498, 10498, 10498, 16898, 10498, 10498, 17026, 10498, 10498,
- 17154, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498,
- 10498, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 10498, 10498, 10498, 10498, 10498, 15872, 15872,
- 15872, 15872, 15872, 20997, 17798, 20997, 20997, 15872, 20997, 20997,
- 15872, 20997, 20997, 20997, 20997, 20997, 20997, 20997, 20997, 20997,
- 20997, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253,
- 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253,
- 21253, 21144, 21253, 17798, 17798, 17798, 17798, 17798, 17798, 17798,
- 20359, 20359, 17798, 20359, 20359, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 11659, 11659, 11659,
- 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 33419,
- 17282, 10498, 10498, 17282, 10498, 10498, 10498, 10498, 17282, 10498,
- 17410, 17410, 10498, 10498, 10498, 10498, 10498, 10498, 17538, 10498,
- 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498,
- 10498, 10498, 10498, 15872, 15872, 17668, 17668, 17668, 17668, 17668,
- 17668, 17668, 17668, 17668, 6683, 6683, 17668, 17668, 17668, 17668,
- 17668, 6683, 6683, 6683, 6683, 6683, 6683, 6683, 6683, 6683,
- 17668, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 20481, 20481,
- 20481, 20481, 20481, 20481, 20481, 20481, 20481, 20481, 20481, 20481,
- 20481, 20481, 20481, 20481, 20481, 20481, 20481, 20481, 20481, 20481,
- 20481, 15872, 15872, 17668, 20632, 20632, 20632, 20632, 20632, 20632,
- 11777, 11777, 15872, 11777, 11777, 11777, 11777, 11777, 11777, 11777,
- 11777, 11777, 18562, 18690, 18690, 18690, 10498, 11906, 11906, 11906,
- 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906,
- 11906, 11906, 11906, 19970, 19970, 19970, 19970, 19970, 19970, 19970,
- 19970, 19970, 19970, 19970, 19970, 19970, 19970, 19970, 19970, 17798,
- 17798, 17798, 17798, 17798, 20632, 17798, 17798, 14853, 14853, 14853,
- 14853, 15872, 15872, 15872, 15872, 17798, 17798, 17798, 17798, 17798,
- 17798, 17798, 17798, 15872, 17798, 17798, 17798, 17798, 17798, 17798,
- 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798,
- 17798, 17798, 17798, 17798, 17798, 17798, 17798, 15872, 17798, 17798,
- 17798, 20888, 17798, 17798, 20888, 17798, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 20997, 20997, 20997,
- 20997, 20997, 20997, 20997, 20997, 20997, 20997, 20997, 20997, 20997,
- 20997, 20997, 20997, 15872, 15872, 15872, 15872, 15872, 20997, 20997,
- 20997, 20888, 20888, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 23433, 23561, 23689, 23817, 23945, 24073,
- 24201, 24329, 24457, 25355, 25483, 25611, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 17798,
- 23176, 15872, 14853, 14853, 14853, 14853, 14853, 14853, 15872, 15872,
- 15872, 14853, 14853, 14853, 15872, 14853, 14853, 14853, 14853, 15872,
- 15872, 15872, 14853, 14853, 15872, 14853, 15872, 14853, 14853, 14853,
- 14853, 15872, 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 15872, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 15872, 15872,
- 15872, 15872, 15872, 15872, 17798, 17798, 17798, 17798, 17798, 17798,
- 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798, 23176, 23176,
- 23176, 23176, 15872, 17798, 17798, 17798, 15872, 17798, 17798, 17798,
- 17798, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 17798, 17798,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 17798,
- 23176, 23176, 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 15872, 15872, 14853, 14853, 15872, 15872, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 15872, 15872, 15872, 15872, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 15872,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 15872, 15872, 15872, 15872,
- 23176, 23176, 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 15872, 15872, 15872, 14853, 14853, 14853, 14853, 14853, 14853,
- 15872, 15872, 14853, 14853, 14853, 14853, 14853, 14853, 15872, 15872,
- 14853, 14853, 14853, 14853, 14853, 14853, 15872, 15872, 14853, 14853,
- 14853, 15872, 15872, 15872, 15872, 23305, 23433, 23561, 23689, 23817,
- 23945, 24073, 24201, 24329, 24457, 20252, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 21513, 21641, 21769, 21897, 22025, 22153, 22281, 22409, 22537,
- 22665, 792, 22808, 22808, 21144, 15872, 15872, 17798, 21253, 21253,
- 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253,
- 21253, 21253, 21253, 21253, 15872, 15872, 21253, 21253, 21253, 21253,
- 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253,
- 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253,
- 21253, 21253, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 21253, 21253, 21253, 21253,
- 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253,
- 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253,
- 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 25877, 26006,
- 21380, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253,
- 21253, 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798, 17798,
- 17798, 17798, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 23176, 23176, 20632, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 17798, 17798, 23176,
- 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 15872, 14853,
- 15872, 14853, 14853, 14853, 15872, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 20632, 20632,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 17798, 17798, 17798,
- 17798, 17798, 21380, 21380, 17798, 17798, 10396, 17798, 17798, 17798,
- 17798, 15872, 15872, 1801, 1929, 2057, 2185, 2313, 2441, 2569,
- 2697, 2825, 2953, 21253, 21253, 21253, 22940, 22940, 15872, 14853,
- 14853, 14853, 15872, 14853, 15872, 14853, 15872, 15872, 14853, 14853,
- 15872, 14853, 14853, 14853, 14853, 17798, 14853, 14853, 17798, 17798,
- 17798, 17798, 17798, 17798, 15872, 17798, 17798, 14853, 15872, 15872,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 15872,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 15872, 14853, 14853, 14853, 14853, 14853, 15872, 15872, 15872, 15872,
- 17798, 17798, 23176, 15872, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 15872, 15872, 17798, 14853,
- 23176, 23176, 23176, 23176, 23176, 15872, 17798, 23176, 23176, 15872,
- 23176, 23176, 17798, 17798, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 23176, 23176, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 14853, 15872, 20632, 20632, 20632, 20632, 20632, 20632, 20632, 20632,
- 23433, 23561, 23689, 23817, 23945, 24073, 24201, 24329, 24457, 25355,
- 26123, 26251, 26379, 26507, 26635, 26763, 26891, 27019, 25483, 27147,
- 15872, 15872, 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 15872, 14853, 14853, 15872, 15872, 14853, 14853, 14853, 14853, 15872,
- 15872, 17798, 14853, 23176, 17798, 17798, 17798, 17798, 17798, 17798,
- 17798, 17798, 23176, 23176, 23176, 23176, 17798, 15872, 15872, 14853,
- 17798, 17798, 17798, 17798, 15872, 15872, 15872, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 15872, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 15872, 14853, 15872, 15872, 15872, 14853,
- 14853, 14853, 14853, 15872, 15872, 17798, 15872, 23176, 23176, 23176,
- 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 15872,
- 14853, 14853, 14853, 15872, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 15872,
- 14853, 15872, 14853, 14853, 14853, 14853, 15872, 15872, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 15872, 14853, 15872, 14853, 14853,
- 14853, 14853, 15872, 15872, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 17798, 14853, 14853, 17798, 17798, 17798, 17798, 17798, 17798,
- 17798, 15872, 15872, 15872, 15872, 922, 922, 922, 922, 922,
- 922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
- 922, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 14853, 14853, 17798,
- 17798, 20632, 20632, 23305, 23433, 23561, 23689, 23817, 23945, 24073,
- 24201, 24329, 24457, 20632, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 664,
- 664, 792, 922, 792, 664, 664, 25877, 26006, 664, 1305,
- 1432, 1556, 1432, 1688, 1801, 1929, 2057, 2185, 2313, 2441,
- 2569, 2697, 2825, 2953, 1432, 664, 3225, 3225, 3225, 664,
- 664, 664, 664, 664, 664, 10772, 664, 664, 664, 664,
- 23056, 23056, 23056, 23056, 15872, 23305, 23433, 23561, 23689, 23817,
- 23945, 24073, 24201, 24329, 24457, 15872, 15872, 15872, 15872, 15872,
- 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 15872, 14853, 14853, 14853, 14853, 14853, 15872, 15872, 15872,
- 15872, 23176, 17798, 17798, 17798, 17798, 15872, 15872, 23176, 23176,
- 15872, 15872, 23176, 23176, 17798, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 23176, 15872, 15872, 15872, 15872, 14853,
- 14853, 15872, 14853, 15872, 15872, 14853, 14853, 15872, 14853, 15872,
- 15872, 14853, 15872, 15872, 15872, 15872, 15872, 15872, 14853, 14853,
- 14853, 14853, 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 15872, 14853, 14853, 15872, 14853, 14853, 15872, 14853, 14853, 15872,
- 15872, 17798, 15872, 23176, 23176, 17798, 17798, 15872, 15872, 15872,
- 15872, 17798, 17798, 15872, 15872, 17798, 17798, 17798, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 14853,
- 14853, 14853, 14853, 15872, 14853, 15872, 14853, 14853, 17798, 17798,
- 15872, 15872, 23305, 23433, 23561, 23689, 23817, 23945, 24073, 24201,
- 24329, 24457, 14853, 14853, 922, 922, 24587, 24715, 24843, 24971,
- 25099, 25227, 20252, 15872, 15872, 15872, 15872, 15872, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 15872, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 15872, 14853, 14853, 15872, 14853,
- 14853, 14853, 14853, 14853, 15872, 15872, 17798, 14853, 23176, 23176,
- 17798, 17798, 17798, 17798, 17798, 15872, 17798, 17798, 23176, 15872,
- 23176, 23176, 17798, 15872, 15872, 14853, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 23305, 23433, 23561, 23689, 23817, 23945, 24073, 24201, 24329,
- 24457, 25099, 25099, 25099, 25099, 25099, 25099, 25099, 25099, 25099,
- 25099, 20252, 17798, 20252, 17798, 20252, 17798, 25877, 26006, 25877,
- 26006, 23176, 23176, 17798, 17798, 17798, 15872, 15872, 15872, 23176,
- 23176, 15872, 15872, 23176, 23176, 17798, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 17798, 23176, 15872, 15872, 15872, 15872,
- 14853, 14853, 15872, 14853, 14853, 14853, 14853, 14853, 15872, 14853,
- 14853, 15872, 23176, 17798, 17798, 17798, 17798, 23176, 17798, 15872,
- 15872, 15872, 17798, 17798, 23176, 17798, 15872, 15872, 15872, 15872,
- 15872, 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 23176, 23176, 23176, 17798, 17798, 17798, 17798, 17798,
- 17798, 17798, 23176, 23176, 15872, 15872, 15872, 23176, 23176, 23176,
- 15872, 23176, 23176, 23176, 17798, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 23176, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 14853, 14853, 14853, 14853, 14853, 15872, 17668,
- 15872, 17798, 17798, 17798, 17798, 17798, 17798, 15872, 15872, 23305,
- 23433, 23561, 23689, 23817, 23945, 24073, 24201, 24329, 24457, 15872,
- 15872, 14853, 14853, 15872, 15872, 15872, 15872, 23305, 23433, 23561,
- 23689, 23817, 23945, 24073, 24201, 24329, 24457, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 17798, 17798, 17798, 17798, 17798, 17798, 17798,
- 17798, 17798, 17798, 17798, 17798, 17798, 20359, 20359, 20359, 23176,
- 17798, 17798, 17798, 15872, 15872, 23176, 23176, 23176, 15872, 23176,
- 23176, 23176, 17798, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 23176, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 15872, 15872,
- 15872, 17798, 15872, 15872, 15872, 15872, 23176, 23176, 23176, 17798,
- 17798, 17798, 15872, 17798, 15872, 23176, 23176, 23176, 23176, 23176,
- 23176, 23176, 23176, 17798, 23176, 23176, 17798, 17798, 17798, 17798,
- 17798, 17798, 17798, 17798, 17798, 17798, 17798, 20632, 20632, 20632,
- 20632, 20632, 20632, 20632, 922, 20632, 15872, 15872, 15872, 14853,
- 14853, 14853, 14853, 14853, 14853, 17668, 17798, 17798, 17798, 17798,
- 17798, 17798, 17798, 17798, 20632, 23305, 23433, 23561, 23689, 23817,
- 23945, 24073, 24201, 24329, 24457, 20632, 20632, 15872, 15872, 15872,
- 15872, 14853, 20252, 20252, 20252, 20632, 20632, 20632, 20632, 20632,
- 20632, 20632, 20632, 25784, 20632, 20632, 20632, 20632, 20632, 20632,
- 20252, 20252, 20252, 20252, 20252, 17798, 17798, 20252, 20252, 20252,
- 20252, 20252, 20252, 17798, 20252, 20252, 20252, 20252, 20252, 20252,
- 15872, 15872, 20252, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 10396,
+ 11777, 11777, 11777, 11777, 11777, 11777, 12034, 12034, 12034, 12034,
+ 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034,
+ 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 3225,
+ 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12162, 12034, 12034,
+ 19074, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034,
+ 19202, 19330, 19330, 16000, 19458, 19586, 19713, 19713, 19713, 19842,
+ 19970, 10498, 16000, 16000, 12289, 12418, 12289, 12418, 12289, 12418,
+ 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418,
+ 11906, 15233, 15363, 15490, 12289, 12418, 15745, 15873, 12289, 12418,
+ 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418,
+ 12289, 12418, 12289, 12418, 12545, 12674, 12289, 12418, 12289, 12418,
+ 12289, 12418, 10498, 12289, 12418, 12289, 12418, 12289, 12418, 12289,
+ 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 20098,
+ 20226, 15618, 10498, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 23312, 23312, 23312, 23312, 23312,
+ 23312, 32523, 16000, 16000, 16000, 32651, 32779, 32907, 33035, 33163,
+ 33291, 1305, 1305, 3225, 1109, 1238, 10498, 13057, 12289, 12418,
+ 12289, 12418, 13185, 12289, 12418, 13313, 13313, 12289, 12418, 10498,
+ 13441, 13569, 13697, 12289, 12418, 13313, 13825, 13954, 14081, 14209,
+ 12289, 12418, 10498, 10498, 14081, 14337, 10498, 14465, 14981, 14981,
+ 14981, 14981, 15233, 15363, 15490, 15233, 15363, 15490, 15233, 15363,
+ 15490, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289,
+ 12418, 12289, 12418, 12289, 12418, 12289, 12418, 15618, 12289, 12418,
+ 20508, 17926, 17926, 17926, 17926, 16000, 20615, 20615, 16000, 16000,
+ 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418,
+ 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418,
+ 12289, 12418, 12289, 12418, 12801, 12289, 12418, 12289, 12418, 12289,
+ 12418, 12930, 12289, 12418, 12289, 12418, 12289, 12418, 14593, 12289,
+ 12418, 14593, 10498, 10498, 12289, 12418, 14593, 12289, 12418, 14721,
+ 14721, 12289, 12418, 12289, 12418, 14849, 12289, 12418, 10498, 14981,
+ 12289, 12418, 10498, 15106, 19713, 12289, 12418, 12289, 12418, 16000,
+ 16000, 12289, 12418, 16000, 16000, 12289, 12418, 16000, 16000, 16000,
+ 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418,
+ 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 1432, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 21400, 16000, 16000, 16000, 21400,
+ 21400, 21400, 21400, 21400, 21400, 21400, 21400, 21400, 21400, 21400,
+ 21400, 21400, 21400, 16000, 23312, 21509, 17926, 21509, 21509, 21509,
+ 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509,
+ 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509,
+ 21509, 21509, 21509, 21509, 21509, 21509, 16000, 16000, 23312, 19713,
+ 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713,
+ 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713,
+ 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713, 19713,
+ 19713, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000,
+ 14981, 16000, 16000, 16000, 16000, 16000, 23561, 23689, 23817, 23945,
+ 24073, 24201, 24329, 24457, 24585, 24713, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 10498, 10498,
+ 10498, 16130, 16258, 10498, 16386, 16386, 10498, 16514, 10498, 16642,
+ 10498, 10498, 10498, 10498, 16386, 10498, 10498, 16770, 10498, 10498,
+ 10498, 10498, 16898, 17026, 10498, 10498, 10498, 10498, 10498, 17026,
+ 10498, 10498, 17154, 10498, 10498, 17282, 10498, 10498, 10498, 10498,
+ 10498, 10498, 10498, 10498, 10498, 10498, 17410, 10498, 10498, 17410,
+ 10498, 10498, 10498, 10498, 17410, 10498, 17538, 17538, 10498, 10498,
+ 10498, 10498, 10498, 10498, 17666, 10498, 10498, 10498, 10498, 10498,
+ 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 16000,
+ 16000, 17796, 17796, 17796, 17796, 17796, 17796, 17796, 17796, 17796,
+ 6683, 6683, 17796, 17796, 17796, 17796, 17796, 6683, 6683, 6683,
+ 6683, 6683, 6683, 6683, 6683, 6683, 17796, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 20737, 20737, 20737, 20737, 20737, 20737,
+ 20737, 20737, 20737, 20737, 20737, 20737, 20737, 20737, 20737, 20737,
+ 20737, 20737, 20737, 20737, 20737, 20737, 20737, 16000, 16000, 17796,
+ 20888, 20888, 20888, 20888, 20888, 20888, 11777, 11777, 16000, 11777,
+ 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 18818, 18946,
+ 18946, 18946, 18690, 12034, 12034, 12034, 12034, 12034, 12034, 12034,
+ 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 20226,
+ 20226, 20226, 20226, 20226, 20226, 20226, 20226, 20226, 20226, 20226,
+ 20226, 20226, 20226, 20226, 20226, 17926, 17926, 17926, 17926, 17926,
+ 20888, 17926, 17926, 14981, 14981, 14981, 14981, 16000, 16000, 16000,
+ 16000, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 16000,
+ 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926,
+ 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926,
+ 17926, 17926, 17926, 16000, 17926, 17926, 17926, 21144, 17926, 17926,
+ 21144, 17926, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 21253, 21253, 21253, 21253, 21253, 21253, 21253,
+ 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 16000,
+ 16000, 16000, 16000, 16000, 21253, 21253, 21253, 21144, 21144, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 23689, 23817, 23945, 24073, 24201, 24329, 24457, 24585, 24713, 25611,
+ 25739, 25867, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 17926, 23432, 16000, 14981, 14981,
+ 14981, 14981, 14981, 14981, 16000, 16000, 16000, 14981, 14981, 14981,
+ 16000, 14981, 14981, 14981, 14981, 16000, 16000, 16000, 14981, 14981,
+ 16000, 14981, 16000, 14981, 14981, 14981, 14981, 16000, 16000, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 16000, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 16000, 16000, 16000, 16000, 16000, 16000,
+ 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926,
+ 17926, 17926, 17926, 17926, 23432, 23432, 23432, 23432, 16000, 17926,
+ 17926, 17926, 16000, 17926, 17926, 17926, 17926, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 17926, 17926, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 17926, 23432, 23432, 16000, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, 16000, 14981,
+ 14981, 16000, 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 16000, 16000, 16000, 16000,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 16000, 16000, 16000, 16000, 23432, 23432, 16000, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, 16000, 16000,
+ 14981, 14981, 14981, 14981, 14981, 14981, 16000, 16000, 14981, 14981,
+ 14981, 14981, 14981, 14981, 16000, 16000, 14981, 14981, 14981, 14981,
+ 14981, 14981, 16000, 16000, 14981, 14981, 14981, 16000, 16000, 16000,
+ 16000, 23561, 23689, 23817, 23945, 24073, 24201, 24329, 24457, 24585,
+ 24713, 20508, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 21769, 21897, 22025,
+ 22153, 22281, 22409, 22537, 22665, 22793, 22921, 792, 23064, 23064,
+ 21400, 16000, 16000, 17926, 21509, 21509, 21509, 21509, 21509, 21509,
+ 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509,
+ 16000, 16000, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509,
+ 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509,
+ 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509,
+ 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509,
+ 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509, 21509,
+ 21509, 21509, 21509, 21509, 26133, 26262, 21636, 21509, 21509, 21509,
+ 21509, 21509, 21509, 21509, 21509, 21509, 21509, 17926, 17926, 17926,
+ 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 23432,
+ 23432, 20888, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 17926, 17926, 23432, 16000, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 16000, 14981, 16000, 14981, 14981, 14981,
+ 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 20888, 20888, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 17926, 17926, 17926, 17926, 17926, 21636, 21636,
+ 17926, 17926, 10396, 17926, 17926, 17926, 17926, 16000, 16000, 1801,
+ 1929, 2057, 2185, 2313, 2441, 2569, 2697, 2825, 2953, 21509,
+ 21509, 21509, 23196, 23196, 16000, 14981, 14981, 14981, 16000, 14981,
+ 16000, 14981, 16000, 16000, 14981, 14981, 16000, 14981, 14981, 14981,
+ 14981, 17926, 14981, 14981, 17926, 17926, 17926, 17926, 17926, 17926,
+ 16000, 17926, 17926, 14981, 16000, 16000, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 14981,
+ 14981, 14981, 16000, 16000, 16000, 16000, 17926, 17926, 23432, 16000,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 16000, 16000, 17926, 14981, 23432, 23432, 23432, 23432,
+ 23432, 16000, 17926, 23432, 23432, 16000, 23432, 23432, 17926, 17926,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 23432, 23432, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 14981, 16000, 20888, 20888,
+ 20888, 20888, 20888, 20888, 20888, 20888, 23689, 23817, 23945, 24073,
+ 24201, 24329, 24457, 24585, 24713, 25611, 26379, 26507, 26635, 26763,
+ 26891, 27019, 27147, 27275, 25739, 27403, 16000, 16000, 16000, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 16000,
+ 16000, 14981, 14981, 14981, 14981, 16000, 16000, 17926, 14981, 23432,
+ 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 23432, 23432,
+ 23432, 23432, 17926, 16000, 16000, 14981, 17926, 17926, 17926, 17926,
+ 16000, 16000, 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 16000, 14981, 16000, 16000, 16000, 14981, 14981, 14981, 14981, 16000,
+ 16000, 17926, 16000, 23432, 23432, 23432, 16000, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 14981, 16000,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 16000, 14981, 16000, 14981, 14981,
+ 14981, 14981, 16000, 16000, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 16000, 14981, 16000, 14981, 14981, 14981, 14981, 16000, 16000,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 17926, 14981, 14981,
+ 17926, 17926, 17926, 17926, 17926, 17926, 17926, 16000, 16000, 16000,
+ 16000, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+ 922, 922, 922, 922, 922, 922, 922, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 14981, 14981, 17926, 17926, 20888, 20888, 23561,
+ 23689, 23817, 23945, 24073, 24201, 24329, 24457, 24585, 24713, 20888,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 664, 664, 792, 922, 792,
+ 664, 664, 26133, 26262, 664, 1305, 1432, 1556, 1432, 1688,
+ 1801, 1929, 2057, 2185, 2313, 2441, 2569, 2697, 2825, 2953,
+ 1432, 664, 3225, 3225, 3225, 664, 664, 664, 664, 664,
+ 664, 10772, 664, 664, 664, 664, 23312, 23312, 23312, 23312,
+ 16000, 23561, 23689, 23817, 23945, 24073, 24201, 24329, 24457, 24585,
+ 24713, 16000, 16000, 16000, 16000, 16000, 16000, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981,
+ 14981, 14981, 14981, 16000, 16000, 16000, 16000, 23432, 17926, 17926,
+ 17926, 17926, 16000, 16000, 23432, 23432, 16000, 16000, 23432, 23432,
+ 17926, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 23432, 16000, 16000, 16000, 16000, 14981, 14981, 16000, 14981, 16000,
+ 16000, 14981, 14981, 16000, 14981, 16000, 16000, 14981, 16000, 16000,
+ 16000, 16000, 16000, 16000, 14981, 14981, 14981, 14981, 16000, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 16000, 14981, 14981, 16000,
+ 14981, 14981, 16000, 14981, 14981, 16000, 16000, 17926, 16000, 23432,
+ 23432, 17926, 17926, 16000, 16000, 16000, 16000, 17926, 17926, 16000,
+ 16000, 17926, 17926, 17926, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 14981, 14981, 14981, 14981, 16000,
+ 14981, 16000, 14981, 14981, 17926, 17926, 16000, 16000, 23561, 23689,
+ 23817, 23945, 24073, 24201, 24329, 24457, 24585, 24713, 14981, 14981,
+ 922, 922, 24843, 24971, 25099, 25227, 25355, 25483, 20508, 16000,
+ 16000, 16000, 16000, 16000, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 16000, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 16000, 14981, 14981, 16000, 14981, 14981, 14981, 14981, 14981,
+ 16000, 16000, 17926, 14981, 23432, 23432, 17926, 17926, 17926, 17926,
+ 17926, 16000, 17926, 17926, 23432, 16000, 23432, 23432, 17926, 16000,
+ 16000, 14981, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 23561, 23689, 23817,
+ 23945, 24073, 24201, 24329, 24457, 24585, 24713, 25355, 25355, 25355,
+ 25355, 25355, 25355, 25355, 25355, 25355, 25355, 20508, 17926, 20508,
+ 17926, 20508, 17926, 26133, 26262, 26133, 26262, 23432, 23432, 17926,
+ 17926, 17926, 16000, 16000, 16000, 23432, 23432, 16000, 16000, 23432,
+ 23432, 17926, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 17926, 23432, 16000, 16000, 16000, 16000, 14981, 14981, 16000, 14981,
+ 14981, 14981, 14981, 14981, 16000, 14981, 14981, 16000, 23432, 17926,
+ 17926, 17926, 17926, 23432, 17926, 16000, 16000, 16000, 17926, 17926,
+ 23432, 17926, 16000, 16000, 16000, 16000, 16000, 16000, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 23432, 23432,
+ 23432, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 23432, 23432,
+ 16000, 16000, 16000, 23432, 23432, 23432, 16000, 23432, 23432, 23432,
+ 17926, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 23432, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 14981,
+ 14981, 14981, 14981, 14981, 16000, 17796, 16000, 17926, 17926, 17926,
+ 17926, 17926, 17926, 16000, 16000, 23561, 23689, 23817, 23945, 24073,
+ 24201, 24329, 24457, 24585, 24713, 16000, 16000, 14981, 14981, 16000,
+ 16000, 16000, 16000, 23561, 23689, 23817, 23945, 24073, 24201, 24329,
+ 24457, 24585, 24713, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 17926,
+ 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926,
+ 17926, 17926, 20615, 20615, 20615, 23432, 17926, 17926, 17926, 16000,
+ 16000, 23432, 23432, 23432, 16000, 23432, 23432, 23432, 17926, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 23432, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 16000, 16000, 16000, 17926, 16000, 16000,
+ 16000, 16000, 23432, 23432, 23432, 17926, 17926, 17926, 16000, 17926,
+ 16000, 23432, 23432, 23432, 23432, 23432, 23432, 23432, 23432, 17926,
+ 23432, 23432, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926,
+ 17926, 17926, 17926, 20888, 20888, 20888, 20888, 20888, 20888, 20888,
+ 922, 20888, 16000, 16000, 16000, 14981, 14981, 14981, 14981, 14981,
+ 14981, 17796, 17926, 17926, 17926, 17926, 17926, 17926, 17926, 17926,
+ 20888, 23561, 23689, 23817, 23945, 24073, 24201, 24329, 24457, 24585,
+ 24713, 20888, 20888, 16000, 16000, 16000, 16000, 14981, 20508, 20508,
+ 20508, 20888, 20888, 20888, 20888, 20888, 20888, 20888, 20888, 26040,
+ 20888, 20888, 20888, 20888, 20888, 20888, 20508, 20508, 20508, 20508,
+ 20508, 17926, 17926, 20508, 20508, 20508, 20508, 20508, 20508, 17926,
+ 20508, 20508, 20508, 20508, 20508, 20508, 16000, 16000, 20508, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 10396, 10396, 10396, 10396, 10396,
+ 10396, 10396, 10396, 10396, 10396, 10396, 10396, 16000, 16000, 16000,
+ 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 16000, 16000, 16000, 16000,
+ 16000, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 6807, 17796,
+ 17796, 17796, 16000, 23561, 23689, 23817, 23945, 24073, 24201, 24329,
+ 24457, 24585, 24713, 20888, 20888, 20888, 20888, 20888, 20888, 14981,
+ 14981, 14981, 14981, 14981, 14981, 23432, 23432, 17926, 17926, 16000,
+ 16000, 16000, 16000, 16000, 16000, 524, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 26133, 26262, 16000, 16000, 16000, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 20888, 20888,
+ 20888, 27531, 27659, 27787, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 17926, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289,
+ 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289,
+ 12418, 12289, 12418, 11906, 11906, 11906, 11906, 11906, 27906, 16000,
+ 16000, 16000, 16000, 28034, 28034, 28034, 28034, 28034, 28034, 28034,
+ 28034, 28161, 28161, 28161, 28161, 28161, 28161, 28161, 28161, 28034,
+ 28034, 28034, 28034, 28034, 28034, 28034, 28034, 28161, 28161, 28161,
+ 28161, 28161, 28161, 28161, 28161, 28034, 28034, 28034, 28034, 28034,
+ 28034, 16000, 16000, 28161, 28161, 28161, 28161, 28161, 28161, 16000,
+ 16000, 11906, 28034, 18690, 28034, 18690, 28034, 18690, 28034, 16000,
+ 28161, 16000, 28161, 16000, 28161, 16000, 28161, 28034, 28034, 28034,
+ 28034, 28034, 28034, 28034, 28034, 28161, 28161, 28161, 28161, 28161,
+ 28161, 28161, 28161, 28290, 28290, 28418, 28418, 28418, 28418, 28546,
+ 28546, 28674, 28674, 28802, 28802, 28930, 28930, 16000, 16000, 29058,
+ 29058, 29058, 29058, 29058, 29058, 29058, 29058, 29187, 29187, 29187,
+ 29187, 29187, 29187, 29187, 29187, 29058, 29058, 29058, 29058, 29058,
+ 29058, 29058, 29058, 29187, 29187, 29187, 29187, 29187, 29187, 29187,
+ 29187, 28034, 28034, 11906, 29314, 11906, 16000, 11906, 18690, 28161,
+ 28161, 29441, 29441, 29571, 6683, 29698, 6683, 6914, 7042, 7170,
+ 7298, 7426, 7554, 7682, 7810, 7938, 8066, 8194, 8322, 8450,
+ 8578, 8706, 8834, 8962, 9090, 9218, 9346, 9474, 9602, 9730,
+ 9858, 9986, 10114, 26133, 3225, 26262, 3225, 16000, 28034, 28034,
+ 18690, 18690, 11906, 30082, 11906, 18690, 28161, 28161, 30209, 30209,
+ 30337, 6683, 6683, 6683, 16000, 16000, 11906, 29314, 11906, 16000,
+ 11906, 18690, 30465, 30465, 30593, 30593, 29571, 6683, 6683, 16000,
+ 524, 524, 524, 524, 524, 524, 524, 30764, 524, 524,
+ 524, 30860, 23312, 23312, 30992, 31120, 10772, 31284, 10772, 10772,
+ 10772, 10772, 664, 664, 31389, 31518, 26133, 31389, 31389, 31518,
+ 26133, 31389, 664, 664, 664, 664, 664, 664, 664, 664,
+ 31629, 31758, 31888, 32016, 32144, 32272, 32400, 30764, 792, 792,
+ 792, 792, 792, 664, 664, 664, 664, 10717, 11614, 664,
+ 664, 664, 664, 6807, 32523, 11403, 11019, 11147, 32651, 32779,
+ 32907, 33035, 33163, 33291, 1305, 1305, 3225, 1109, 1238, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 16000,
+ 16000, 16000, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
- 10396, 15872, 15872, 15872, 15872, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 15872, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 15872, 15872, 15872, 15872, 15872, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 6807, 17668, 17668, 17668, 15872, 23305, 23433, 23561,
- 23689, 23817, 23945, 24073, 24201, 24329, 24457, 20632, 20632, 20632,
- 20632, 20632, 20632, 14853, 14853, 14853, 14853, 14853, 14853, 23176,
- 23176, 17798, 17798, 15872, 15872, 15872, 15872, 15872, 15872, 524,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 25877, 26006, 15872, 15872,
- 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 20632, 20632, 20632, 27275, 27403, 27531, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 17798, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 12161, 12290, 12161, 12290, 12161,
- 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161, 12290, 12161,
- 12290, 12161, 12290, 12161, 12290, 12161, 12290, 10498, 10498, 10498,
- 10498, 10498, 27650, 15872, 15872, 15872, 15872, 27778, 27778, 27778,
- 27778, 27778, 27778, 27778, 27778, 27905, 27905, 27905, 27905, 27905,
- 27905, 27905, 27905, 27778, 27778, 27778, 27778, 27778, 27778, 27778,
- 27778, 27905, 27905, 27905, 27905, 27905, 27905, 27905, 27905, 27778,
- 27778, 27778, 27778, 27778, 27778, 15872, 15872, 27905, 27905, 27905,
- 27905, 27905, 27905, 15872, 15872, 10498, 27778, 10498, 27778, 10498,
- 27778, 10498, 27778, 15872, 27905, 15872, 27905, 15872, 27905, 15872,
- 27905, 27778, 27778, 27778, 27778, 27778, 27778, 27778, 27778, 27905,
- 27905, 27905, 27905, 27905, 27905, 27905, 27905, 28034, 28034, 28162,
- 28162, 28162, 28162, 28290, 28290, 28418, 28418, 28546, 28546, 28674,
- 28674, 15872, 15872, 27778, 27778, 27778, 27778, 27778, 27778, 27778,
- 27778, 28803, 28803, 28803, 28803, 28803, 28803, 28803, 28803, 27778,
- 27778, 27778, 27778, 27778, 27778, 27778, 27778, 28803, 28803, 28803,
- 28803, 28803, 28803, 28803, 28803, 27778, 27778, 10498, 28930, 10498,
- 15872, 10498, 10498, 27905, 27905, 29057, 29057, 29187, 6683, 29314,
- 6683, 6914, 7042, 7170, 7298, 7426, 7554, 7682, 7810, 7938,
- 8066, 8194, 8322, 8450, 8578, 8706, 8834, 8962, 9090, 9218,
- 9346, 9474, 9602, 9730, 9858, 9986, 10114, 25877, 3225, 26006,
- 3225, 15872, 27778, 27778, 10498, 10498, 10498, 29698, 10498, 10498,
- 27905, 27905, 29825, 29825, 29953, 6683, 6683, 6683, 15872, 15872,
- 10498, 28930, 10498, 15872, 10498, 10498, 30081, 30081, 30209, 30209,
- 29187, 6683, 6683, 15872, 524, 524, 524, 524, 524, 524,
- 524, 30380, 524, 524, 524, 30476, 23056, 23056, 30608, 30736,
- 10772, 30900, 10772, 10772, 10772, 10772, 664, 664, 31005, 31134,
- 25877, 31005, 31005, 31134, 25877, 31005, 664, 664, 664, 664,
- 664, 664, 664, 664, 31245, 31374, 31504, 31632, 31760, 31888,
- 32016, 30380, 792, 792, 792, 792, 792, 664, 664, 664,
- 664, 10717, 11614, 664, 664, 664, 664, 6807, 32139, 11403,
- 11019, 11147, 32267, 32395, 32523, 32651, 32779, 32907, 1305, 1305,
- 3225, 1109, 1238, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 15872, 15872, 15872, 10396, 10396, 10396, 10396,
+ 10396, 10396, 16000, 16000, 16000, 16000, 16000, 10396, 10396, 10396,
+ 10396, 10396, 10396, 10396, 19713, 10396, 10396, 10396, 10396, 19713,
+ 10396, 10396, 10498, 19713, 19713, 19713, 10498, 10498, 19713, 19713,
+ 19713, 10498, 10396, 19713, 10396, 10396, 10396, 19713, 19713, 19713,
+ 19713, 19713, 10396, 10396, 41482, 41610, 41738, 41866, 41994, 42122,
+ 42250, 42378, 42506, 17926, 17926, 17926, 17926, 17926, 17926, 10772,
+ 17796, 17796, 17796, 17796, 17796, 10396, 10396, 42634, 42762, 42890,
+ 16000, 16000, 16000, 10396, 10396, 10396, 10396, 16000, 10396, 10396,
+ 10396, 10396, 16000, 16000, 10396, 10396, 10396, 10396, 10396, 10396,
10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
- 10396, 10396, 10396, 10396, 10396, 10396, 15872, 15872, 15872, 15872,
- 15872, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 19457, 10396,
- 10396, 10396, 10396, 19457, 10396, 10396, 10498, 19457, 19457, 19457,
- 10498, 10498, 19457, 19457, 19457, 10498, 10396, 19457, 10396, 10396,
- 10396, 19457, 19457, 19457, 19457, 19457, 10396, 10396, 41098, 41226,
- 41354, 41482, 41610, 41738, 41866, 41994, 42122, 17798, 17798, 17798,
- 17798, 17798, 17798, 10772, 17668, 17668, 17668, 17668, 17668, 10396,
- 10396, 42250, 42378, 42506, 15872, 15872, 15872, 10396, 10396, 10396,
- 10396, 15872, 10396, 10396, 10396, 10396, 15872, 15872, 10396, 10396,
+ 10396, 10396, 10396, 10396, 10396, 10396, 10396, 3225, 10396, 10396,
10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
+ 10396, 10396, 3225, 3225, 10396, 10396, 3225, 10396, 3225, 10396,
10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
- 10396, 3225, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
- 10396, 10396, 10396, 10396, 10396, 10396, 3225, 3225, 10396, 10396,
- 3225, 10396, 3225, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
- 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 3225, 10396,
- 10396, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 37642, 37770, 37898, 38026, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 3225, 3225, 3225, 3225, 3225, 10396, 10396, 10396, 10396,
- 10396, 3225, 3225, 10396, 10396, 10396, 10396, 19457, 10396, 33025,
- 10396, 19457, 10396, 33153, 33281, 19457, 19457, 10908, 10498, 19457,
- 19457, 10396, 19457, 10498, 14853, 14853, 14853, 14853, 10498, 10396,
- 15872, 15872, 15872, 15872, 15872, 33546, 33674, 33802, 33930, 34058,
- 34186, 34314, 34442, 34570, 34698, 34826, 34954, 35082, 35210, 35338,
- 35466, 35594, 35722, 35850, 35978, 36106, 36234, 36362, 36490, 36618,
- 36746, 36874, 37002, 37130, 37258, 37386, 37514, 3225, 3225, 3161,
- 3161, 3225, 3225, 3161, 3161, 3161, 3161, 3161, 3161, 3161,
+ 10396, 10396, 10396, 10396, 3225, 10396, 10396, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 38026, 38154, 38282, 38410, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 3225, 3225, 3225,
+ 3225, 3225, 10396, 10396, 10396, 10396, 10396, 3225, 3225, 10396,
+ 10396, 10396, 10396, 19713, 10396, 33409, 10396, 19713, 10396, 33537,
+ 33665, 19713, 19713, 10908, 10498, 19713, 19713, 10396, 19713, 10498,
+ 14981, 14981, 14981, 14981, 10498, 10396, 16000, 16000, 16000, 16000,
+ 16000, 33930, 34058, 34186, 34314, 34442, 34570, 34698, 34826, 34954,
+ 35082, 35210, 35338, 35466, 35594, 35722, 35850, 35978, 36106, 36234,
+ 36362, 36490, 36618, 36746, 36874, 37002, 37130, 37258, 37386, 37514,
+ 37642, 37770, 37898, 3225, 3225, 3161, 3161, 3225, 3225, 3161,
3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161,
- 3161, 3161, 3225, 3225, 3225, 3225, 3225, 3161, 3161, 3161,
- 3161, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
- 3161, 3161, 3161, 3161, 3161, 3225, 3225, 3161, 3161, 3225,
- 3225, 3225, 3225, 3161, 3161, 3161, 3161, 3161, 3161, 3161,
- 3161, 3161, 3161, 3161, 3161, 3161, 3225, 3225, 3161, 3161,
- 3161, 3161, 3225, 3225, 3225, 3225, 3225, 3161, 3225, 3225,
- 3225, 3225, 3225, 3225, 3225, 10396, 10396, 3225, 10396, 10396,
- 3225, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 3225, 10396,
- 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
+ 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3225, 3225,
+ 3225, 3225, 3225, 3161, 3161, 3161, 3161, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3161, 3161, 3161, 3161,
+ 3161, 3225, 3225, 3161, 3161, 3225, 3225, 3225, 3225, 3161,
+ 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161,
+ 3161, 3161, 3225, 3225, 3161, 3161, 3161, 3161, 3225, 3225,
+ 3225, 3225, 3225, 3161, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 10396, 10396, 3225, 10396, 10396, 3225, 10396, 10396, 10396,
+ 10396, 10396, 10396, 10396, 3225, 10396, 10396, 10396, 10396, 10396,
10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
- 10396, 15872, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
+ 10396, 10396, 10396, 10396, 10396, 10396, 10396, 16000, 10396, 10396,
10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
- 10396, 10396, 10396, 10396, 10396, 10396, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 3225, 3161, 3161, 3161, 3161, 3225, 3225, 3225, 3161,
- 3161, 3161, 3161, 3161, 3161, 3225, 3225, 3225, 3161, 1305,
- 1305, 3225, 3161, 3161, 3225, 3225, 3225, 3161, 3161, 3161,
- 3161, 3225, 3161, 3225, 3161, 3225, 3225, 3225, 3225, 3161,
- 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3225, 3225,
- 3225, 3225, 3225, 3161, 3225, 3161, 3161, 3161, 3161, 3161,
- 10396, 10396, 10396, 10396, 10396, 10396, 10396, 1109, 1238, 10396,
10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
- 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252,
- 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252,
- 20252, 20252, 20252, 15872, 15872, 15872, 15872, 20252, 20252, 20252,
- 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252,
- 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 39580,
- 39580, 39580, 39580, 39580, 39580, 39580, 39580, 39580, 39580, 39580,
- 39580, 39580, 39580, 39580, 39580, 39708, 39708, 39708, 39708, 39708,
- 39708, 39708, 39708, 39708, 39708, 39708, 39708, 39708, 39708, 39708,
- 39708, 32139, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 3161, 3225, 3161, 3225, 3161, 3161, 3161,
- 3161, 3161, 3161, 3161, 3161, 3225, 3225, 3161, 3161, 3161,
+ 10396, 10396, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 3225, 3161, 3161,
+ 3161, 3161, 3225, 3225, 3225, 3161, 3161, 3161, 3161, 3161,
+ 3161, 3225, 3225, 3225, 3161, 1305, 1305, 3225, 3161, 3161,
+ 3225, 3225, 3225, 3161, 3161, 3161, 3161, 3225, 3161, 3225,
+ 3161, 3225, 3225, 3225, 3225, 3161, 3161, 3161, 3161, 3161,
+ 3161, 3161, 3161, 3161, 3225, 3225, 3225, 3225, 3225, 3161,
+ 3225, 3161, 3161, 3161, 3161, 3161, 10396, 10396, 10396, 10396,
+ 10396, 10396, 10396, 1109, 1238, 10396, 10396, 10396, 10396, 10396,
+ 10396, 10396, 10396, 10396, 10396, 10396, 20508, 20508, 20508, 20508,
+ 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508,
+ 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 16000,
+ 16000, 16000, 16000, 20508, 20508, 20508, 20508, 20508, 20508, 20508,
+ 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508,
+ 20508, 20508, 20508, 20508, 20508, 39964, 39964, 39964, 39964, 39964,
+ 39964, 39964, 39964, 39964, 39964, 39964, 39964, 39964, 39964, 39964,
+ 39964, 40092, 40092, 40092, 40092, 40092, 40092, 40092, 40092, 40092,
+ 40092, 40092, 40092, 40092, 40092, 40092, 40092, 32523, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 3161,
+ 3225, 3161, 3225, 3161, 3161, 3161, 3161, 3161, 3161, 3161,
+ 3161, 3225, 3225, 3161, 3161, 3161, 3161, 3161, 3161, 3161,
3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161,
- 3161, 3161, 3161, 3161, 3161, 3225, 3225, 3161, 3161, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 922, 922, 3225, 6683, 10396, 922, 922,
- 15872, 10396, 3225, 3225, 3225, 3225, 10396, 10396, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 23056, 23056,
- 23056, 10396, 10396, 15872, 15872, 10396, 10396, 10396, 10396, 10396,
+ 3161, 3225, 3225, 3161, 3161, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 922,
+ 922, 3225, 6683, 10396, 922, 922, 16000, 10396, 3225, 3225,
+ 3225, 3225, 10396, 10396, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 23312, 23312, 23312, 10396, 10396, 16000,
+ 16000, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
+ 10396, 10396, 10396, 10396, 10396, 10396, 10396, 16000, 10396, 10396,
10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
- 10396, 15872, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
- 10396, 10396, 10396, 10396, 10396, 10396, 15872, 10396, 15872, 10396,
- 10396, 10396, 10396, 15872, 15872, 15872, 10396, 15872, 10396, 10396,
- 10396, 10396, 10396, 10396, 10396, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 33419,
- 39819, 39947, 40075, 40203, 40331, 40459, 40587, 40715, 40843, 33419,
- 39819, 39947, 40075, 40203, 40331, 40459, 40587, 40715, 40843, 10396,
- 15872, 15872, 15872, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
- 10396, 3161, 3161, 3161, 3161, 10396, 10396, 10396, 10396, 10396,
+ 10396, 10396, 16000, 10396, 16000, 10396, 10396, 10396, 10396, 16000,
+ 16000, 16000, 10396, 16000, 10396, 10396, 10396, 10396, 10396, 10396,
+ 10396, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 33803, 40203, 40331, 40459, 40587,
+ 40715, 40843, 40971, 41099, 41227, 33803, 40203, 40331, 40459, 40587,
+ 40715, 40843, 40971, 41099, 41227, 10396, 16000, 16000, 16000, 10396,
+ 10396, 10396, 10396, 10396, 10396, 10396, 10396, 3161, 3161, 3161,
+ 3161, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
- 10396, 10396, 10396, 10396, 10396, 10396, 20252, 10396, 10396, 10396,
- 10396, 10396, 15872, 15872, 15872, 15872, 15872, 25099, 25099, 25099,
- 25099, 25099, 25099, 25099, 25099, 25099, 25099, 20252, 20252, 20252,
- 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252,
- 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252,
- 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 15872,
- 15872, 15872, 20252, 24587, 24715, 24843, 24971, 42635, 42763, 42891,
- 43019, 43147, 25355, 20252, 20252, 20252, 20252, 20252, 20252, 20252,
- 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252,
- 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252,
- 10396, 15872, 10396, 10396, 10396, 15872, 10396, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 11403, 11019, 11147, 32267, 32395, 32523, 32651, 32779,
- 32907, 38155, 38283, 38411, 38539, 38667, 38795, 38923, 39051, 39179,
- 39307, 39435, 11403, 11019, 11147, 32267, 32395, 32523, 32651, 32779,
- 32907, 38155, 38283, 38411, 38539, 38667, 38795, 38923, 39051, 39179,
- 39307, 39435, 20252, 20252, 20252, 20252, 524, 664, 664, 664,
- 10396, 17668, 14853, 40970, 1109, 1238, 1109, 1238, 1109, 1238,
- 1109, 1238, 1109, 1238, 10396, 10396, 1109, 1238, 1109, 1238,
- 1109, 1238, 1109, 1238, 10772, 25877, 26006, 26006, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 15872,
- 15872, 15872, 15872, 17798, 17798, 6683, 6683, 17668, 17668, 15872,
- 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853, 14853,
- 14853, 14853, 14853, 14853, 14853, 15872, 20252, 20252, 25099, 25099,
- 25099, 25099, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252,
- 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 20252, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 43283, 43283, 43283,
- 43283, 43283, 43283, 43283, 43283, 43283, 43283, 43283, 43283, 43283,
- 43283, 43283, 43283, 43283, 43283, 43283, 43283, 43283, 43283, 43283,
- 43283, 43283, 43283, 43283, 43283, 43283, 43283, 43283, 43283, 43410,
- 43410, 43410, 43410, 43410, 43410, 43410, 43410, 43410, 43410, 43410,
- 43410, 43410, 43410, 43410, 43410, 43410, 43410, 43410, 43410, 43410,
- 43410, 43410, 43410, 43410, 43410, 43410, 43410, 43410, 43410, 43410,
- 43410, 20997, 20997, 20997, 20997, 20997, 20997, 20997, 20997, 20997,
- 1305, 20997, 20997, 20997, 20997, 20997, 20997, 20997, 20997, 20997,
- 20997, 20997, 20997, 20997, 15872, 20997, 20997, 20997, 20997, 20997,
- 15872, 20997, 15872, 17798, 17798, 17798, 17798, 15872, 15872, 15872,
- 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 15872, 664,
- 10772, 10772, 6807, 6807, 25877, 26006, 25877, 26006, 25877, 26006,
- 25877, 26006, 25877, 26006, 25877, 26006, 15872, 15872, 15872, 15872,
- 664, 664, 664, 664, 6807, 6807, 6807, 1432, 664, 1432,
- 15872, 664, 1432, 664, 664, 10772, 25877, 26006, 25877, 26006,
- 25877, 26006, 792, 664, 3329, 3457, 3585, 3713, 3841, 3969,
- 4097, 4225, 4353, 4481, 4609, 4737, 4865, 4993, 5121, 5249,
- 5377, 5505, 5633, 5761, 5889, 6017, 6145, 6273, 6401, 6529,
- 25877, 664, 26006, 6683, 6807,
+ 10396, 10396, 20508, 10396, 10396, 10396, 10396, 10396, 16000, 16000,
+ 16000, 16000, 16000, 25355, 25355, 25355, 25355, 25355, 25355, 25355,
+ 25355, 25355, 25355, 20508, 20508, 20508, 20508, 20508, 20508, 20508,
+ 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508,
+ 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508,
+ 20508, 20508, 20508, 20508, 20508, 16000, 16000, 16000, 20508, 24843,
+ 24971, 25099, 25227, 43019, 43147, 43275, 43403, 43531, 25611, 20508,
+ 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508,
+ 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508,
+ 20508, 20508, 20508, 20508, 20508, 20508, 10396, 16000, 10396, 10396,
+ 10396, 16000, 10396, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 11403, 11019,
+ 11147, 32651, 32779, 32907, 33035, 33163, 33291, 38539, 38667, 38795,
+ 38923, 39051, 39179, 39307, 39435, 39563, 39691, 39819, 11403, 11019,
+ 11147, 32651, 32779, 32907, 33035, 33163, 33291, 38539, 38667, 38795,
+ 38923, 39051, 39179, 39307, 39435, 39563, 39691, 39819, 20508, 20508,
+ 20508, 20508, 524, 664, 664, 664, 10396, 17796, 14981, 41354,
+ 1109, 1238, 1109, 1238, 1109, 1238, 1109, 1238, 1109, 1238,
+ 10396, 10396, 1109, 1238, 1109, 1238, 1109, 1238, 1109, 1238,
+ 10772, 26133, 26262, 26262, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 16000, 16000, 16000, 16000, 17926,
+ 17926, 6683, 6683, 17796, 17796, 16000, 14981, 14981, 14981, 14981,
+ 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981, 14981,
+ 14981, 16000, 20508, 20508, 25355, 25355, 25355, 25355, 20508, 20508,
+ 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508, 20508,
+ 20508, 20508, 20508, 20508, 20508, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 43667, 43667, 43667, 43667, 43667, 43667, 43667,
+ 43667, 43667, 43667, 43667, 43667, 43667, 43667, 43667, 43667, 43667,
+ 43667, 43667, 43667, 43667, 43667, 43667, 43667, 43667, 43667, 43667,
+ 43667, 43667, 43667, 43667, 43667, 43794, 43794, 43794, 43794, 43794,
+ 43794, 43794, 43794, 43794, 43794, 43794, 43794, 43794, 43794, 43794,
+ 43794, 43794, 43794, 43794, 43794, 43794, 43794, 43794, 43794, 43794,
+ 43794, 43794, 43794, 43794, 43794, 43794, 43794, 21253, 21253, 21253,
+ 21253, 21253, 21253, 21253, 21253, 21253, 1305, 21253, 21253, 21253,
+ 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253, 21253,
+ 16000, 21253, 21253, 21253, 21253, 21253, 16000, 21253, 16000, 17926,
+ 17926, 17926, 17926, 16000, 16000, 16000, 16000, 16000, 16000, 16000,
+ 16000, 16000, 16000, 16000, 16000, 664, 10772, 10772, 6807, 6807,
+ 26133, 26262, 26133, 26262, 26133, 26262, 26133, 26262, 26133, 26262,
+ 26133, 26262, 16000, 16000, 16000, 16000, 664, 664, 664, 664,
+ 6807, 6807, 6807, 1432, 664, 1432, 16000, 664, 1432, 664,
+ 664, 10772, 26133, 26262, 26133, 26262, 26133, 26262, 792, 664,
+ 3329, 3457, 3585, 3713, 3841, 3969, 4097, 4225, 4353, 4481,
+ 4609, 4737, 4865, 4993, 5121, 5249, 5377, 5505, 5633, 5761,
+ 5889, 6017, 6145, 6273, 6401, 6529, 26133, 664, 26262, 6683,
+ 6807,
};
/** Length of data. */
-static const int data_length = 5345;
+static const int data_length = 5351;
/**
* This is the attribute table for computing the numeric value of a
@@ -849,24 +850,24 @@ static const jshort numValue[] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3,
- 4, -1, 16, 10, 100, 1000, -1, -1, -1, 20, 30, 40, 50,
- 60, 70, 80, 90, 10000, 17, 18, 19, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1,
+ -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1,
+ 2, 3, 4, -1, 16, 10, 100, 1000, -1, -1, -1, 20, 30,
+ 40, 50, 60, 70, 80, 90, 10000, 17, 18, 19, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 0, 4, 5, 6, 7, 8, 9, -1, -1,
- -1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 50, 100, 500, 1000, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 50, 100, 500, 1000, 1000, 5000, 10000, -1, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, 2,
- 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 20, 30, 5, 6, 7, 8, 9,
- -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 0, 4, 5, 6, 7, 8,
+ 9, -1, -1, -1, 1, 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 50, 100, 500, 1000, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 50, 100, 500, 1000, 1000, 5000,
+ 10000, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ -1, -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1,
+ 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 5, 6,
+ 7, 8, 9, -1, -1,
};
/** Length of numValue. */
-static const int numValue_length = 340;
+static const int numValue_length = 343;
/**
* This is the attribute table for computing the uppercase representation
@@ -881,29 +882,29 @@ static const jshort upper[] = {
0, 0, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
-32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
-32, -32, 0, 0, 0, 0, 0, 0, 0, 0, 743, 0, 0,
- 0, 0, -32, 121, 0, -1, 0, -232, 0, -300, 0, 0, 0,
- 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0,
- 56, 0, -1, -2, -79, 0, 0, 0, -210, -206, -205, -202, -203,
- -207, -209, -211, -213, -214, -218, -217, -219, 0, 0, 84, 0, 0,
- 0, 0, -38, -37, -31, -64, -63, -62, -57, 0, -47, -54, -86,
- -80, 0, 0, 0, 0, 0, -48, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -32, 121, 0, -1, 0, -232, 0, -300, 0, 0,
+ 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 56, 0, -1, -2, -79, 0, 0, 0, -210, -206, -205, -202,
+ -203, -207, -209, -211, -213, -214, -218, -217, -219, 0, 0, 84, 0,
+ 0, 0, 0, 0, -38, -37, -31, -64, -63, -62, -57, 0, -47,
+ -54, -86, -80, 0, 0, 0, 0, 0, -48, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, -59, 8, 0, 74, 86,
- 100, 128, 112, 126, 0, 9, 0, 0, -7205, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -59, 8, 0,
+ 74, 86, 100, 128, 112, 126, 8, 0, 9, 0, 0, -7205, 0,
+ 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -16, -16, -16, -16, -16, -16, -16, -16,
- -16, -16, -16, -16, -16, -16, -16, -16, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0,
+ 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,
+ 0, 0, 0, 0, 0,
};
/** Length of upper. */
-static const int upper_length = 340;
+static const int upper_length = 343;
/**
* This is the attribute table for computing the lowercase representation
@@ -918,29 +919,29 @@ static const jshort lower[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 32, 0, 0, 1, 0, -199, 0, -121, 0, 210, 206, 205,
- 79, 202, 203, 207, 0, 211, 209, 213, 214, 218, 217, 219, 0,
- 0, 2, 1, 0, 0, -97, -56, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 37,
- 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 80, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 32, 0, 0, 0, 1, 0, -199, 0, -121, 0, 210, 206,
+ 205, 79, 202, 203, 207, 0, 211, 209, 213, 214, 218, 217, 219,
+ 0, 0, 2, 1, 0, 0, -97, -56, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38,
+ 37, 64, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 80, 0, 0, 48, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8,
+ 0, 0, 0, 0, 0, 0, 0, -8, 0, -74, -9, 0, -86,
+ -100, 0, -112, -7, -128, -126, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0,
- 0, 0, 0, 0, -8, 0, -74, -9, 0, -86, -100, 0, -112,
- -7, -128, -126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7517, -8383,
- -8262, 0, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -7517, -8383, -8262, 0, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,
+ 0, 0, 0, 0, 0,
};
/** Length of lower. */
-static const int lower_length = 340;
+static const int lower_length = 343;
/**
* This is the attribute table for computing the directionality class
@@ -948,26 +949,26 @@ static const int lower_length = 340;
* character has a direction, otherwise it is -1.
*/
static const jbyte direction[] = {
- 9, 11, 10, 12, 12, 13, 5, 5, 13, 13, 5, 7, 5, 4, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 13, 0, 13,
- 13, 5, 3, 3, 0, 3, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 1, 1, 2, 2, 2,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 2, 9, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 12, 9, 0, 1, 13, 13, 13, 12, 10, 14, 16, 18, 15, 17, 3,
- 3, 3, 3, 3, 3, 3, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 36, 44, 40, 48, 48, 52, 20, 20, 52, 52, 20, 28, 20, 16, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 52, 0, 52,
+ 52, 20, 12, 12, 0, 12, 52, 52, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 0, 0, 0, 0, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 4, 4, 8,
+ 8, 8, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 8, 36, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 48, 36, 0, 4, 52, 52, 52, 48, 40, 56, 64, 72,
+ 60, 68, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 13, 13, 13, 13,
- 13, 13, 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 52,
+ 52, 52, 52, 52, 52, 52, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
};
/** Length of direction. */
-static const int direction_length = 340;
+static const int direction_length = 343;
/**
* This is the listing of titlecase special cases (all other character
diff --git a/libjava/include/java-interp.h b/libjava/include/java-interp.h
index c57c146dacb..12bc21f2436 100644
--- a/libjava/include/java-interp.h
+++ b/libjava/include/java-interp.h
@@ -35,6 +35,7 @@ _Jv_IsInterpretedClass (jclass c)
struct _Jv_ResolvedMethod;
+void _Jv_InitInterpreter ();
void _Jv_DefineClass (jclass, jbyteArray, jint, jint);
void _Jv_InitField (jobject, jclass, int);
diff --git a/libjava/include/jvm.h b/libjava/include/jvm.h
index 398f854e783..b8592772923 100644
--- a/libjava/include/jvm.h
+++ b/libjava/include/jvm.h
@@ -79,12 +79,6 @@ struct _Jv_VTable
// to keep this up to date by hand.
#define NUM_OBJECT_METHODS 5
-// This structure is the type of an array's vtable.
-struct _Jv_ArrayVTable : public _Jv_VTable
-{
- vtable_elt extra_method[NUM_OBJECT_METHODS - 1];
-};
-
union _Jv_word
{
jobject o;
@@ -114,6 +108,18 @@ union _Jv_word2
jdouble d;
};
+union _Jv_value
+{
+ jbyte byte_value;
+ jshort short_value;
+ jchar char_value;
+ jint int_value;
+ jlong long_value;
+ jfloat float_value;
+ jdouble double_value;
+ jobject object_value;
+};
+
// An instance of this type is used to represent a single frame in a
// backtrace. If the interpreter has been built, we also include
// information about the interpreted method.
@@ -238,6 +244,9 @@ namespace gcj
/* Set to true by _Jv_CreateJavaVM. */
extern bool runtimeInitialized;
+
+ /* Print out class names as they are initialized. */
+ extern bool verbose_class_flag;
}
/* Type of pointer used as finalizer. */
diff --git a/libjava/include/s390-signal.h b/libjava/include/s390-signal.h
index 8b9adae05a0..fe965bd2b46 100644
--- a/libjava/include/s390-signal.h
+++ b/libjava/include/s390-signal.h
@@ -15,25 +15,170 @@ details. */
#include <signal.h>
#include <sys/syscall.h>
+#include <ucontext.h>
+#include <limits.h>
#define HANDLE_SEGV 1
-#undef HANDLE_FPE
+#define HANDLE_FPE 1
#define SIGNAL_HANDLER(_name) \
-static void _name (int /* _signal */, struct sigcontext _sc)
+static void _name (int, siginfo_t *_si __attribute__((unused)), \
+ ucontext_t *_uc __attribute__((unused)))
-#define MAKE_THROW_FRAME(_exception) \
+/* We no longer need to fiddle with the PSW address in the signal handler;
+ this is now all handled correctly in MD_FALLBACK_FRAME_STATE_FOR. */
+#define MAKE_THROW_FRAME(_exception)
+
+
+/* According to the JVM spec, "if the dividend is the negative integer
+ of the smallest magnitude and the divisor is -1, then overflow occurs
+ and the result is equal to the dividend. Despite the overflow, no
+ exception occurs".
+
+ We handle this by inspecting the instruction which generated the signal,
+ and if dividend and divisor are as above, we simply return from the signal
+ handler. This causes execution to continue after the instruction.
+ Before returning, we the set result registers as expected. */
+
+#define HANDLE_DIVIDE_OVERFLOW \
do \
{ \
- /* Advance the program counter so that it is after the start of the \
- instruction: the s390 exception handler expects the PSW to point \
- to the instruction after a call. */ \
- _sc.sregs->regs.psw.addr += 2; \
+ unsigned char *_eip = (unsigned char *) \
+ __builtin_extract_return_addr (_si->si_addr); \
+ unsigned long *_regs = _uc->uc_mcontext.gregs; \
+ int _r1, _r2, _d2, _x2, _b2; \
+ \
+ /* First, a couple of helper routines to decode instructions. */ \
+ struct _decode \
+ { \
+ /* Decode RR instruction format. */ \
+ static inline int _is_rr (unsigned char *_eip, \
+ unsigned char _op, \
+ int *_r1, int *_r2) \
+ { \
+ if (_eip[0] == _op) \
+ { \
+ *_r1 = _eip[1] >> 4; \
+ *_r2 = _eip[1] & 0xf; \
+ return 1; \
+ } \
+ return 0; \
+ } \
+ \
+ /* Decode RX instruction format. */ \
+ static inline int _is_rx (unsigned char *_eip, \
+ unsigned char _op, \
+ int *_r1, int *_d2, int *_x2, int *_b2) \
+ { \
+ if (_eip[0] == _op) \
+ { \
+ *_r1 = _eip[1] >> 4; \
+ *_x2 = _eip[1] & 0xf; \
+ *_b2 = _eip[2] >> 4; \
+ *_d2 = ((_eip[2] & 0xf) << 8) + _eip[3]; \
+ return 1; \
+ } \
+ return 0; \
+ } \
+ \
+ /* Decode RRE instruction format. */ \
+ static inline int _is_rre (unsigned char *_eip, \
+ unsigned char _op1, unsigned char _op2,\
+ int *_r1, int *_r2) \
+ { \
+ if (_eip[0] == _op1 && _eip[1] == _op2) \
+ { \
+ *_r1 = _eip[3] >> 4; \
+ *_r2 = _eip[3] & 0xf; \
+ return 1; \
+ } \
+ return 0; \
+ } \
+ \
+ /* Decode RXY instruction format. */ \
+ static inline int _is_rxy (unsigned char *_eip, \
+ unsigned char _op1, unsigned char _op2,\
+ int *_r1, int *_d2, int *_x2, int *_b2)\
+ { \
+ if (_eip[0] == _op1 && _eip[5] == _op2) \
+ { \
+ *_r1 = _eip[1] >> 4; \
+ *_x2 = _eip[1] & 0xf; \
+ *_b2 = _eip[2] >> 4; \
+ *_d2 = ((_eip[2] & 0xf) << 8) + _eip[3] + (_eip[4] << 12); \
+ /* We have a 20-bit signed displacement. */ \
+ *_d2 = (*_d2 ^ 0x80000) - 0x80000; \
+ return 1; \
+ } \
+ return 0; \
+ } \
+ \
+ /* Compute effective address. */ \
+ static inline unsigned long _eff (unsigned long *_regs, \
+ long _d, int _x, int _b) \
+ { \
+ return _d + (_x? _regs[_x] : 0) + (_b? _regs[_b] : 0); \
+ } \
+ }; \
+ \
+ \
+ /* DR r1,r2 */ \
+ if (_decode::_is_rr (_eip, 0x1d, &_r1, &_r2) \
+ && (int) _regs[_r1] == -1 && (int) _regs[_r1+1] == INT_MIN \
+ && (int) _regs[_r2] == -1) \
+ { \
+ _regs[_r1] &= ~0xffffffff; \
+ return; \
+ } \
+ \
+ /* D r1,d2(x2,b2) */ \
+ if (_decode::_is_rx (_eip, 0x5d, &_r1, &_d2, &_x2, &_b2) \
+ && (int) _regs[_r1] == -1 && (int) _regs[_r1+1] == INT_MIN \
+ && *(int *) _decode::_eff (_regs, _d2, _x2, _b2) == -1) \
+ { \
+ _regs[_r1] &= ~0xffffffff; \
+ return; \
+ } \
+ \
+ /* DSGR r1,r2 */ \
+ if (_decode::_is_rre (_eip, 0xb9, 0x0d, &_r1, &_r2) \
+ && (long) _regs[_r1+1] == LONG_MIN \
+ && (long) _regs[_r2] == -1L) \
+ { \
+ _regs[_r1] = 0; \
+ return; \
+ } \
+ \
+ /* DSGFR r1,r2 */ \
+ if (_decode::_is_rre (_eip, 0xb9, 0x1d, &_r1, &_r2) \
+ && (long) _regs[_r1+1] == LONG_MIN \
+ && (int) _regs[_r2] == -1) \
+ { \
+ _regs[_r1] = 0; \
+ return; \
+ } \
+ \
+ /* DSG r1,d2(x2,b2) */ \
+ if (_decode::_is_rxy (_eip, 0xe3, 0x0d, &_r1, &_d2, &_x2, &_b2) \
+ && (long) _regs[_r1+1] == LONG_MIN \
+ && *(long *) _decode::_eff (_regs, _d2, _x2, _b2) == -1L) \
+ { \
+ _regs[_r1] = 0; \
+ return; \
+ } \
+ \
+ /* DSGF r1,d2(x2,b2) */ \
+ if (_decode::_is_rxy (_eip, 0xe3, 0x1d, &_r1, &_d2, &_x2, &_b2) \
+ && (long) _regs[_r1+1] == LONG_MIN \
+ && *(int *) _decode::_eff (_regs, _d2, _x2, _b2) == -1) \
+ { \
+ _regs[_r1] = 0; \
+ return; \
+ } \
\
} \
while (0)
-
/* For an explanation why we cannot simply use sigaction to
install the handlers, see i386-signal.h. */
@@ -43,7 +188,7 @@ while (0)
visible to us in a header file so we define it here. */
struct old_s390_kernel_sigaction {
- void (*k_sa_handler) (int, struct sigcontext);
+ void (*k_sa_handler) (int, siginfo_t *, ucontext_t *);
unsigned long k_sa_mask;
unsigned long k_sa_flags;
void (*sa_restorer) (void);
@@ -55,7 +200,7 @@ do \
struct old_s390_kernel_sigaction kact; \
kact.k_sa_handler = catch_segv; \
kact.k_sa_mask = 0; \
- kact.k_sa_flags = 0; \
+ kact.k_sa_flags = SA_SIGINFO; \
syscall (SYS_sigaction, SIGSEGV, &kact, NULL); \
} \
while (0)
@@ -66,7 +211,7 @@ do \
struct old_s390_kernel_sigaction kact; \
kact.k_sa_handler = catch_fpe; \
kact.k_sa_mask = 0; \
- kact.k_sa_flags = 0; \
+ kact.k_sa_flags = SA_SIGINFO; \
syscall (SYS_sigaction, SIGFPE, &kact, NULL); \
} \
while (0)
diff --git a/libjava/include/win32.h b/libjava/include/win32.h
index 8dd2964e637..a660616ae4c 100644
--- a/libjava/include/win32.h
+++ b/libjava/include/win32.h
@@ -22,6 +22,8 @@ details. */
// Includes
#define WIN32_LEAN_AND_MEAN
+// Force Winsock 2 interface.
+#include <winsock2.h>
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN
#undef STRICT
diff --git a/libjava/interpret.cc b/libjava/interpret.cc
index 331424f0834..109ee10ff8b 100644
--- a/libjava/interpret.cc
+++ b/libjava/interpret.cc
@@ -54,6 +54,21 @@ static void throw_null_pointer_exception ()
__attribute__ ((__noreturn__));
#endif
+#ifdef DIRECT_THREADED
+// Lock to ensure that methods are not compiled concurrently.
+// We could use a finer-grained lock here, however it is not safe to use
+// the Class monitor as user code in another thread could hold it.
+static _Jv_Mutex_t compile_mutex;
+
+void
+_Jv_InitInterpreter()
+{
+ _Jv_MutexInit (&compile_mutex);
+}
+#else
+void _Jv_InitInterpreter() {}
+#endif
+
extern "C" double __ieee754_fmod (double,double);
// This represents a single slot in the "compiled" form of the
@@ -1032,9 +1047,14 @@ _Jv_InterpMethod::run (void *retp, ffi_raw *args)
#define PCVAL(unionval) unionval.p
#define AMPAMP(label) &&label
- // Compile if we must.
+ // Compile if we must. NOTE: Double-check locking.
if (prepared == NULL)
- compile (insn_target);
+ {
+ _Jv_MutexLock (&compile_mutex);
+ if (prepared == NULL)
+ compile (insn_target);
+ _Jv_MutexUnlock (&compile_mutex);
+ }
pc = (insn_slot *) prepared;
#else
@@ -1156,7 +1176,7 @@ _Jv_InterpMethod::run (void *retp, ffi_raw *args)
ffi_cif *cif = &rmeth->cif;
ffi_raw *raw = (ffi_raw*) sp;
- jdouble rvalue;
+ _Jv_value rvalue;
#if FFI_NATIVE_RAW_API
/* We assume that this is only implemented if it's correct */
@@ -1172,11 +1192,11 @@ _Jv_InterpMethod::run (void *retp, ffi_raw *args)
* so those are checked before the switch */
if (rtype == FFI_TYPE_POINTER)
{
- PUSHA (*(jobject*)&rvalue);
+ PUSHA (rvalue.object_value);
}
else if (rtype == FFI_TYPE_SINT32)
{
- PUSHI (*(jint*)&rvalue);
+ PUSHI (rvalue.int_value);
}
else if (rtype == FFI_TYPE_VOID)
{
@@ -1187,36 +1207,27 @@ _Jv_InterpMethod::run (void *retp, ffi_raw *args)
switch (rtype)
{
case FFI_TYPE_SINT8:
- {
- jbyte value = (*(jint*)&rvalue) & 0xff;
- PUSHI (value);
- }
+ PUSHI ((jbyte)(rvalue.int_value & 0xff));
break;
case FFI_TYPE_SINT16:
- {
- jshort value = (*(jint*)&rvalue) & 0xffff;
- PUSHI (value);
- }
+ PUSHI ((jshort)(rvalue.int_value & 0xffff));
break;
case FFI_TYPE_UINT16:
- {
- jint value = (*(jint*)&rvalue) & 0xffff;
- PUSHI (value);
- }
+ PUSHI (rvalue.int_value & 0xffff);
break;
case FFI_TYPE_FLOAT:
- PUSHF (*(jfloat*)&rvalue);
+ PUSHF (rvalue.float_value);
break;
case FFI_TYPE_DOUBLE:
- PUSHD (rvalue);
+ PUSHD (rvalue.double_value);
break;
case FFI_TYPE_SINT64:
- PUSHL (*(jlong*)&rvalue);
+ PUSHL (rvalue.long_value);
break;
default:
@@ -2408,37 +2419,37 @@ _Jv_InterpMethod::run (void *retp, ffi_raw *args)
switch (type->size_in_bytes)
{
case 1:
- PUSHI (*(jbyte*) (field->u.addr));
+ PUSHI (*field->u.byte_addr);
newinsn = AMPAMP (getstatic_resolved_1);
break;
case 2:
if (type == JvPrimClass (char))
{
- PUSHI(*(jchar*) (field->u.addr));
+ PUSHI (*field->u.char_addr);
newinsn = AMPAMP (getstatic_resolved_char);
}
else
{
- PUSHI(*(jshort*) (field->u.addr));
+ PUSHI (*field->u.short_addr);
newinsn = AMPAMP (getstatic_resolved_short);
}
break;
case 4:
- PUSHI(*(jint*) (field->u.addr));
+ PUSHI(*field->u.int_addr);
newinsn = AMPAMP (getstatic_resolved_4);
break;
case 8:
- PUSHL(*(jlong*) (field->u.addr));
+ PUSHL(*field->u.long_addr);
newinsn = AMPAMP (getstatic_resolved_8);
break;
}
}
else
{
- PUSHA(*(jobject*) (field->u.addr));
+ PUSHA(*field->u.object_addr);
newinsn = AMPAMP (getstatic_resolved_obj);
}
@@ -2494,42 +2505,43 @@ _Jv_InterpMethod::run (void *retp, ffi_raw *args)
NULLCHECK(obj);
void *newinsn = NULL;
+ _Jv_value *val = (_Jv_value *) ((char *)obj + field_offset);
if (type->isPrimitive ())
{
switch (type->size_in_bytes)
{
case 1:
- PUSHI (*(jbyte*) ((char*)obj + field_offset));
+ PUSHI (val->byte_value);
newinsn = AMPAMP (getfield_resolved_1);
break;
case 2:
if (type == JvPrimClass (char))
{
- PUSHI (*(jchar*) ((char*)obj + field_offset));
+ PUSHI (val->char_value);
newinsn = AMPAMP (getfield_resolved_char);
}
else
{
- PUSHI (*(jshort*) ((char*)obj + field_offset));
+ PUSHI (val->short_value);
newinsn = AMPAMP (getfield_resolved_short);
}
break;
case 4:
- PUSHI (*(jint*) ((char*)obj + field_offset));
+ PUSHI (val->int_value);
newinsn = AMPAMP (getfield_resolved_4);
break;
case 8:
- PUSHL(*(jlong*) ((char*)obj + field_offset));
+ PUSHL (val->long_value);
newinsn = AMPAMP (getfield_resolved_8);
break;
}
}
else
{
- PUSHA(*(jobject*) ((char*)obj + field_offset));
+ PUSHA (val->object_value);
newinsn = AMPAMP (getfield_resolved_obj);
}
@@ -2611,7 +2623,7 @@ _Jv_InterpMethod::run (void *retp, ffi_raw *args)
case 1:
{
jint value = POPI();
- *(jbyte*) (field->u.addr) = value;
+ *field->u.byte_addr = value;
newinsn = AMPAMP (putstatic_resolved_1);
break;
}
@@ -2619,7 +2631,7 @@ _Jv_InterpMethod::run (void *retp, ffi_raw *args)
case 2:
{
jint value = POPI();
- *(jchar*) (field->u.addr) = value;
+ *field->u.char_addr = value;
newinsn = AMPAMP (putstatic_resolved_2);
break;
}
@@ -2627,7 +2639,7 @@ _Jv_InterpMethod::run (void *retp, ffi_raw *args)
case 4:
{
jint value = POPI();
- *(jint*) (field->u.addr) = value;
+ *field->u.int_addr = value;
newinsn = AMPAMP (putstatic_resolved_4);
break;
}
@@ -2635,7 +2647,7 @@ _Jv_InterpMethod::run (void *retp, ffi_raw *args)
case 8:
{
jlong value = POPL();
- *(jlong*) (field->u.addr) = value;
+ *field->u.long_addr = value;
newinsn = AMPAMP (putstatic_resolved_8);
break;
}
@@ -2644,7 +2656,7 @@ _Jv_InterpMethod::run (void *retp, ffi_raw *args)
else
{
jobject value = POPA();
- *(jobject*) (field->u.addr) = value;
+ *field->u.object_addr = value;
newinsn = AMPAMP (putstatic_resolved_obj);
}
diff --git a/libjava/java/awt/Component.java b/libjava/java/awt/Component.java
index f3153da5911..5cb792b1de4 100644
--- a/libjava/java/awt/Component.java
+++ b/libjava/java/awt/Component.java
@@ -39,6 +39,7 @@ exception statement from your version. */
package java.awt;
import java.awt.dnd.DropTarget;
+import java.awt.event.ActionEvent;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.FocusEvent;
@@ -48,6 +49,7 @@ import java.awt.event.HierarchyEvent;
import java.awt.event.HierarchyListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
+import java.awt.event.InputEvent;
import java.awt.event.InputMethodEvent;
import java.awt.event.InputMethodListener;
import java.awt.event.MouseEvent;
@@ -1175,30 +1177,7 @@ public abstract class Component
*/
public void move(int x, int y)
{
- int oldx = this.x;
- int oldy = this.y;
-
- if (this.x == x && this.y == y)
- return;
- invalidate ();
- this.x = x;
- this.y = y;
- if (peer != null)
- peer.setBounds (x, y, width, height);
-
- // Erase old bounds and repaint new bounds for lightweights.
- if (isLightweight() && width != 0 && height !=0)
- {
- parent.repaint(oldx, oldy, width, height);
- repaint();
- }
-
- if (oldx != x || oldy != y)
- {
- ComponentEvent ce = new ComponentEvent(this,
- ComponentEvent.COMPONENT_MOVED);
- getToolkit().getSystemEventQueue().postEvent(ce);
- }
+ setBounds(x, y, this.width, this.height);
}
/**
@@ -1262,32 +1241,7 @@ public abstract class Component
*/
public void resize(int width, int height)
{
- int oldwidth = this.width;
- int oldheight = this.height;
-
- if (this.width == width && this.height == height)
- return;
- invalidate ();
- this.width = width;
- this.height = height;
- if (peer != null)
- peer.setBounds (x, y, width, height);
-
- // Erase old bounds and repaint new bounds for lightweights.
- if (isLightweight())
- {
- if (oldwidth != 0 && oldheight != 0 && parent != null)
- parent.repaint(x, y, oldwidth, oldheight);
- if (width != 0 && height != 0)
- repaint();
- }
-
- if (oldwidth != width || oldheight != height)
- {
- ComponentEvent ce =
- new ComponentEvent(this, ComponentEvent.COMPONENT_RESIZED);
- getToolkit().getSystemEventQueue().postEvent(ce);
- }
+ setBounds(this.x, this.y, width, height);
}
/**
@@ -1395,9 +1349,25 @@ public abstract class Component
// Erase old bounds and repaint new bounds for lightweights.
if (isLightweight())
{
- if (oldwidth != 0 && oldheight != 0 && parent != null)
+ boolean shouldRepaintParent = false;
+ boolean shouldRepaintSelf = false;
+
+ if (parent != null)
+ {
+ Rectangle parentBounds = parent.getBounds();
+ Rectangle oldBounds = new Rectangle(parent.getX() + oldx,
+ parent.getY() + oldy,
+ oldwidth, oldheight);
+ Rectangle newBounds = new Rectangle(parent.getX() + x,
+ parent.getY() + y,
+ width, height);
+ shouldRepaintParent = parentBounds.intersects(oldBounds);
+ shouldRepaintSelf = parentBounds.intersects(newBounds);
+ }
+
+ if (shouldRepaintParent)
parent.repaint(oldx, oldy, oldwidth, oldheight);
- if (width != 0 && height != 0)
+ if (shouldRepaintSelf)
repaint();
}
@@ -2255,14 +2225,17 @@ public abstract class Component
}
/**
- * AWT 1.0 event dispatcher.
+ * AWT 1.0 event delivery.
*
- * @param e the event to dispatch
+ * Deliver an AWT 1.0 event to this Component. This method simply
+ * calls {@link #postEvent}.
+ *
+ * @param e the event to deliver
* @deprecated use {@link #dispatchEvent(AWTEvent)} instead
*/
public void deliverEvent(Event e)
{
- // XXX Add backward compatibility handling.
+ postEvent (e);
}
/**
@@ -2284,16 +2257,24 @@ public abstract class Component
}
/**
- * AWT 1.0 event dispatcher.
+ * AWT 1.0 event handler.
*
- * @param e the event to dispatch
- * @return false: since the method was deprecated, the return has no meaning
+ * This method simply calls handleEvent and returns the result.
+ *
+ * @param e the event to handle
+ * @return the result of handling <code>e</code>
* @deprecated use {@link #dispatchEvent(AWTEvent)} instead
*/
public boolean postEvent(Event e)
{
- // XXX Add backward compatibility handling.
- return false;
+ boolean handled = handleEvent (e);
+
+ if (!handled)
+ // FIXME: need to translate event coordinates to parent's
+ // coordinate space.
+ handled = getParent ().postEvent (e);
+
+ return handled;
}
/**
@@ -3170,20 +3151,61 @@ public abstract class Component
}
/**
- * AWT 1.0 event processor.
+ * AWT 1.0 event handler.
+ *
+ * This method calls one of the event-specific handler methods. For
+ * example for key events, either {@link #keyDown (Event evt, int
+ * key)} or {@link keyUp (Event evt, int key)} is called. A derived
+ * component can override one of these event-specific methods if it
+ * only needs to handle certain event types. Otherwise it can
+ * override handleEvent itself and handle any event.
*
* @param evt the event to handle
- * @return false: since the method was deprecated, the return has no meaning
+ * @return true if the event was handled, false otherwise
* @deprecated use {@link #processEvent(AWTEvent)} instead
*/
public boolean handleEvent(Event evt)
{
- // XXX Add backward compatibility handling.
+ switch (evt.id)
+ {
+ // Handle key events.
+ case Event.KEY_ACTION:
+ case Event.KEY_PRESS:
+ return keyDown (evt, evt.key);
+ case Event.KEY_ACTION_RELEASE:
+ case Event.KEY_RELEASE:
+ return keyUp (evt, evt.key);
+
+ // Handle mouse events.
+ case Event.MOUSE_DOWN:
+ return mouseDown (evt, evt.x, evt.y);
+ case Event.MOUSE_UP:
+ return mouseUp (evt, evt.x, evt.y);
+ case Event.MOUSE_MOVE:
+ return mouseMove (evt, evt.x, evt.y);
+ case Event.MOUSE_DRAG:
+ return mouseDrag (evt, evt.x, evt.y);
+ case Event.MOUSE_ENTER:
+ return mouseEnter (evt, evt.x, evt.y);
+ case Event.MOUSE_EXIT:
+ return mouseExit (evt, evt.x, evt.y);
+
+ // Handle focus events.
+ case Event.GOT_FOCUS:
+ return gotFocus (evt, evt.arg);
+ case Event.LOST_FOCUS:
+ return lostFocus (evt, evt.arg);
+
+ // Handle action event.
+ case Event.ACTION_EVENT:
+ return action (evt, evt.arg);
+ }
+ // Unknown event.
return false;
}
/**
- * AWT 1.0 mouse event.
+ * AWT 1.0 mouse event handler.
*
* @param evt the event to handle
* @param x the x coordinate, ignored
@@ -3686,7 +3708,20 @@ public abstract class Component
// lightweight component. In either case we want to
// post a FOCUS_GAINED event.
EventQueue eq = Toolkit.getDefaultToolkit ().getSystemEventQueue ();
- eq.postEvent (new FocusEvent(this, FocusEvent.FOCUS_GAINED));
+ synchronized (eq)
+ {
+ KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager ();
+ Component currentFocusOwner = manager.getGlobalPermanentFocusOwner ();
+ if (currentFocusOwner != null)
+ {
+ eq.postEvent (new FocusEvent(currentFocusOwner, FocusEvent.FOCUS_LOST,
+ false, this));
+ eq.postEvent (new FocusEvent(this, FocusEvent.FOCUS_GAINED, false,
+ currentFocusOwner));
+ }
+ else
+ eq.postEvent (new FocusEvent(this, FocusEvent.FOCUS_GAINED, false));
+ }
}
}
else
@@ -3759,9 +3794,25 @@ public abstract class Component
// lightweight component. In either case we want to
// post a FOCUS_GAINED event.
EventQueue eq = Toolkit.getDefaultToolkit ().getSystemEventQueue ();
+ synchronized (eq)
+ {
+ KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager ();
+ Component currentFocusOwner = manager.getGlobalPermanentFocusOwner ();
+ if (currentFocusOwner != null)
+ {
+ eq.postEvent (new FocusEvent(currentFocusOwner,
+ FocusEvent.FOCUS_LOST,
+ temporary, this));
+ eq.postEvent (new FocusEvent(this,
+ FocusEvent.FOCUS_GAINED,
+ temporary,
+ currentFocusOwner));
+ }
+ else
eq.postEvent (new FocusEvent(this, FocusEvent.FOCUS_GAINED, temporary));
}
}
+ }
else
// FIXME: need to add a focus listener to our top-level
// ancestor, so that we can post this event when it becomes
@@ -3852,7 +3903,8 @@ public abstract class Component
// Check if top-level ancestor is currently focused window.
if (focusedWindow == toplevel)
{
- if (peer != null)
+ if (peer != null
+ && !(this instanceof Window))
// This call will cause a FOCUS_GAINED event to be
// posted to the system event queue if the native
// windowing system grants the focus request.
@@ -3863,9 +3915,21 @@ public abstract class Component
// lightweight component. In either case we want to
// post a FOCUS_GAINED event.
EventQueue eq = Toolkit.getDefaultToolkit ().getSystemEventQueue ();
+ synchronized (eq)
+ {
+ Component currentFocusOwner = manager.getGlobalPermanentFocusOwner ();
+ if (currentFocusOwner != null)
+ {
+ eq.postEvent (new FocusEvent(currentFocusOwner, FocusEvent.FOCUS_LOST,
+ temporary, this));
+ eq.postEvent (new FocusEvent(this, FocusEvent.FOCUS_GAINED, temporary,
+ currentFocusOwner));
+ }
+ else
eq.postEvent (new FocusEvent(this, FocusEvent.FOCUS_GAINED, temporary));
}
}
+ }
else
return false;
}
@@ -4041,8 +4105,8 @@ public abstract class Component
String name = getName();
if (name != null)
param.append(name).append(",");
- param.append(width).append("x").append(height).append("+").append(x)
- .append("+").append(y);
+ param.append(x).append(",").append(y).append(",").append(width)
+ .append("x").append(height);
if (! isValid())
param.append(",invalid");
if (! isVisible())
@@ -4410,13 +4474,212 @@ p * <li>the set of backward traversal keys
}
/**
- * Implementation of dispatchEvent. Allows trusted package classes to
- * dispatch additional events first.
+ * Translate an AWT 1.1 event ({@link AWTEvent}) into an AWT 1.0
+ * event ({@link Event}).
+ *
+ * @param e an AWT 1.1 event to translate
+ *
+ * @return an AWT 1.0 event representing e
+ */
+ private Event translateEvent (AWTEvent e)
+ {
+ Component target = (Component) e.getSource ();
+ Event translated = null;
+
+ if (e instanceof InputEvent)
+ {
+ InputEvent ie = (InputEvent) e;
+ long when = ie.getWhen ();
+
+ int oldID = 0;
+ int id = e.getID ();
+
+ int oldMods = 0;
+ int mods = ie.getModifiers ();
+
+ if ((mods & InputEvent.BUTTON2_MASK) != 0)
+ oldMods |= Event.META_MASK;
+ else if ((mods & InputEvent.BUTTON3_MASK) != 0)
+ oldMods |= Event.ALT_MASK;
+
+ if ((mods & (InputEvent.SHIFT_MASK | InputEvent.SHIFT_DOWN_MASK)) != 0)
+ oldMods |= Event.SHIFT_MASK;
+
+ if ((mods & (InputEvent.CTRL_MASK | InputEvent.CTRL_DOWN_MASK)) != 0)
+ oldMods |= Event.CTRL_MASK;
+
+ if ((mods & (InputEvent.META_MASK | InputEvent.META_DOWN_MASK)) != 0)
+ oldMods |= Event.META_MASK;
+
+ if ((mods & (InputEvent.ALT_MASK | InputEvent.ALT_DOWN_MASK)) != 0)
+ oldMods |= Event.ALT_MASK;
+
+ if (e instanceof MouseEvent)
+ {
+ if (id == MouseEvent.MOUSE_PRESSED)
+ oldID = Event.MOUSE_DOWN;
+ else if (id == MouseEvent.MOUSE_RELEASED)
+ oldID = Event.MOUSE_UP;
+ else if (id == MouseEvent.MOUSE_MOVED)
+ oldID = Event.MOUSE_MOVE;
+ else if (id == MouseEvent.MOUSE_DRAGGED)
+ oldID = Event.MOUSE_DRAG;
+ else if (id == MouseEvent.MOUSE_ENTERED)
+ oldID = Event.MOUSE_ENTER;
+ else if (id == MouseEvent.MOUSE_EXITED)
+ oldID = Event.MOUSE_EXIT;
+ else
+ // No analogous AWT 1.0 mouse event.
+ return null;
+
+ MouseEvent me = (MouseEvent) e;
+
+ translated = new Event (target, when, oldID,
+ me.getX (), me.getY (), 0, oldMods);
+ }
+ else if (e instanceof KeyEvent)
+ {
+ if (id == KeyEvent.KEY_PRESSED)
+ oldID = Event.KEY_PRESS;
+ else if (e.getID () == KeyEvent.KEY_RELEASED)
+ oldID = Event.KEY_RELEASE;
+ else
+ // No analogous AWT 1.0 key event.
+ return null;
+
+ int oldKey = 0;
+ int newKey = ((KeyEvent) e).getKeyCode ();
+ switch (newKey)
+ {
+ case KeyEvent.VK_BACK_SPACE:
+ oldKey = Event.BACK_SPACE;
+ break;
+ case KeyEvent.VK_CAPS_LOCK:
+ oldKey = Event.CAPS_LOCK;
+ break;
+ case KeyEvent.VK_DELETE:
+ oldKey = Event.DELETE;
+ break;
+ case KeyEvent.VK_DOWN:
+ case KeyEvent.VK_KP_DOWN:
+ oldKey = Event.DOWN;
+ break;
+ case KeyEvent.VK_END:
+ oldKey = Event.END;
+ break;
+ case KeyEvent.VK_ENTER:
+ oldKey = Event.ENTER;
+ break;
+ case KeyEvent.VK_ESCAPE:
+ oldKey = Event.ESCAPE;
+ break;
+ case KeyEvent.VK_F1:
+ oldKey = Event.F1;
+ break;
+ case KeyEvent.VK_F10:
+ oldKey = Event.F10;
+ break;
+ case KeyEvent.VK_F11:
+ oldKey = Event.F11;
+ break;
+ case KeyEvent.VK_F12:
+ oldKey = Event.F12;
+ break;
+ case KeyEvent.VK_F2:
+ oldKey = Event.F2;
+ break;
+ case KeyEvent.VK_F3:
+ oldKey = Event.F3;
+ break;
+ case KeyEvent.VK_F4:
+ oldKey = Event.F4;
+ break;
+ case KeyEvent.VK_F5:
+ oldKey = Event.F5;
+ break;
+ case KeyEvent.VK_F6:
+ oldKey = Event.F6;
+ break;
+ case KeyEvent.VK_F7:
+ oldKey = Event.F7;
+ break;
+ case KeyEvent.VK_F8:
+ oldKey = Event.F8;
+ break;
+ case KeyEvent.VK_F9:
+ oldKey = Event.F9;
+ break;
+ case KeyEvent.VK_HOME:
+ oldKey = Event.HOME;
+ break;
+ case KeyEvent.VK_INSERT:
+ oldKey = Event.INSERT;
+ break;
+ case KeyEvent.VK_LEFT:
+ case KeyEvent.VK_KP_LEFT:
+ oldKey = Event.LEFT;
+ break;
+ case KeyEvent.VK_NUM_LOCK:
+ oldKey = Event.NUM_LOCK;
+ break;
+ case KeyEvent.VK_PAUSE:
+ oldKey = Event.PAUSE;
+ break;
+ case KeyEvent.VK_PAGE_DOWN:
+ oldKey = Event.PGDN;
+ break;
+ case KeyEvent.VK_PAGE_UP:
+ oldKey = Event.PGUP;
+ break;
+ case KeyEvent.VK_PRINTSCREEN:
+ oldKey = Event.PRINT_SCREEN;
+ break;
+ case KeyEvent.VK_RIGHT:
+ case KeyEvent.VK_KP_RIGHT:
+ oldKey = Event.RIGHT;
+ break;
+ case KeyEvent.VK_SCROLL_LOCK:
+ oldKey = Event.SCROLL_LOCK;
+ break;
+ case KeyEvent.VK_TAB:
+ oldKey = Event.TAB;
+ break;
+ case KeyEvent.VK_UP:
+ case KeyEvent.VK_KP_UP:
+ oldKey = Event.UP;
+ break;
+ default:
+ oldKey = newKey;
+ }
+
+ translated = new Event (target, when, oldID,
+ 0, 0, oldKey, oldMods);
+ }
+ }
+ else if (e instanceof ActionEvent)
+ translated = new Event (target, Event.ACTION_EVENT,
+ ((ActionEvent) e).getActionCommand ());
+
+ return translated;
+ }
+
+ /**
+ * Implementation of dispatchEvent. Allows trusted package classes
+ * to dispatch additional events first. This implementation first
+ * translates <code>e</code> to an AWT 1.0 event and sends the
+ * result to {@link #postEvent}. If the AWT 1.0 event is not
+ * handled, and events of type <code>e</code> are enabled for this
+ * component, e is passed on to {@link #processEvent}.
*
* @param e the event to dispatch
*/
void dispatchEventImpl(AWTEvent e)
{
+ Event oldEvent = translateEvent (e);
+
+ if (oldEvent != null)
+ postEvent (oldEvent);
+
if (eventTypeEnabled (e.id))
processEvent(e);
}
diff --git a/libjava/java/awt/Container.java b/libjava/java/awt/Container.java
index ffd81b46802..6c70e940e8e 100644
--- a/libjava/java/awt/Container.java
+++ b/libjava/java/awt/Container.java
@@ -856,6 +856,16 @@ public class Container extends Component
*/
public void deliverEvent(Event e)
{
+ if (!handleEvent (e))
+ {
+ synchronized (getTreeLock ())
+ {
+ Component parent = getParent ();
+
+ if (parent != null)
+ parent.deliverEvent (e);
+ }
+ }
}
/**
@@ -1027,7 +1037,7 @@ public class Container extends Component
{
String param = super.paramString();
if (layoutMgr != null)
- param = param + "," + layoutMgr.getClass().getName();
+ param = param + ",layout=" + layoutMgr.getClass().getName();
return param;
}
diff --git a/libjava/java/awt/DefaultKeyboardFocusManager.java b/libjava/java/awt/DefaultKeyboardFocusManager.java
index c4dd7eac609..d4c8bdd4fa8 100644
--- a/libjava/java/awt/DefaultKeyboardFocusManager.java
+++ b/libjava/java/awt/DefaultKeyboardFocusManager.java
@@ -162,16 +162,41 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager
{
Component target = (Component) e.getSource ();
- if (e.id == FocusEvent.FOCUS_GAINED
- && !(target instanceof Window))
+ if (e.id == FocusEvent.FOCUS_GAINED)
{
if (((FocusEvent) e).isTemporary ())
setGlobalFocusOwner (target);
else
setGlobalPermanentFocusOwner (target);
}
+ else if (e.id == FocusEvent.FOCUS_LOST)
+ {
+ // We need to set the window's focus owner here; we can't
+ // set it when the window loses focus because by that time
+ // the previous focus owner has already lost focus
+ // (FOCUS_LOST events are delivered before
+ // WINDOW_LOST_FOCUS events).
+
+ // Find the target Component's top-level ancestor.
+ Container parent = target.getParent ();
+
+ while (parent != null
+ && !(parent instanceof Window))
+ parent = parent.getParent ();
+
+ Window toplevel = parent == null ?
+ (Window) target : (Window) parent;
+
+ Component focusOwner = getFocusOwner ();
+ if (focusOwner != null)
+ toplevel.setFocusOwner (focusOwner);
+
+ if (((FocusEvent) e).isTemporary ())
+ setGlobalFocusOwner (null);
+ else
+ setGlobalPermanentFocusOwner (null);
+ }
- if (!(target instanceof Window))
target.dispatchEvent (e);
return true;
@@ -192,6 +217,8 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager
// processKeyEvent checks if this event represents a focus
// traversal key stroke.
Component focusOwner = getGlobalPermanentFocusOwner ();
+
+ if (focusOwner != null)
processKeyEvent (focusOwner, (KeyEvent) e);
if (e.isConsumed ())
@@ -230,6 +257,7 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager
{
Component focusOwner = getGlobalPermanentFocusOwner ();
+ if (focusOwner != null)
focusOwner.dispatchEvent (e);
// Loop through all registered KeyEventPostProcessors, giving
diff --git a/libjava/java/awt/Event.java b/libjava/java/awt/Event.java
index 79be0e8c861..57e7c79f232 100644
--- a/libjava/java/awt/Event.java
+++ b/libjava/java/awt/Event.java
@@ -163,7 +163,8 @@ public class Event implements java.io.Serializable
protected String paramString ()
{
- return "id=" + id + ",x=" + x + ",y=" + y + "target=" + target;
+ return "id=" + id + ",x=" + x + ",y=" + y
+ + ",target=" + target + ",arg=" + arg;
}
public boolean shiftDown()
diff --git a/libjava/java/awt/Font.java b/libjava/java/awt/Font.java
index 4c70c735797..6a3514758b7 100644
--- a/libjava/java/awt/Font.java
+++ b/libjava/java/awt/Font.java
@@ -1268,10 +1268,9 @@ toString()
return(getClass().getName()
+ "(logical=" + getName ()
+ ",family=" + getFamily ()
- + ",face=" + getFontName ()
+ + ",name=" + getFontName ()
+ ",style=" + getStyle ()
- + ",size=" + getSize ()
- + ",transform=" + getTransform () + ")");
+ + ",size=" + getSize ());
}
diff --git a/libjava/java/awt/Frame.java b/libjava/java/awt/Frame.java
index c92585a6f6b..dd8cdeb00d1 100644
--- a/libjava/java/awt/Frame.java
+++ b/libjava/java/awt/Frame.java
@@ -50,11 +50,6 @@ import java.util.Vector;
*/
public class Frame extends Window implements MenuContainer
{
-
-/*
- * Static Variables
- */
-
/**
* Constant for the default cursor.
* @deprecated Replaced by <code>Cursor.DEFAULT_CURSOR</code> instead.
@@ -148,12 +143,6 @@ public static final int NORMAL = 0;
// Serialization version constant
private static final long serialVersionUID = 2673458971256075116L;
-/*************************************************************************/
-
-/*
- * Instance Variables
- */
-
/**
* @serial The version of the class data being serialized
* // FIXME: what is this value?
@@ -208,11 +197,10 @@ private String title = "";
*/
private boolean undecorated = false;
-/*************************************************************************/
-
/*
- * Constructors
+ * The number used to generate the name returned by getName.
*/
+ private static transient long next_frame_number = 0;
/**
* Initializes a new instance of <code>Frame</code> that is not visible
@@ -224,8 +212,6 @@ Frame()
this("");
}
-/*************************************************************************/
-
/**
* Initializes a new instance of <code>Frame</code> that is not visible
* and has the specified title.
@@ -256,12 +242,6 @@ Frame(String title, GraphicsConfiguration gc)
visible = false;
}
-/*************************************************************************/
-
-/*
- * Instance Methods
- */
-
/**
* Returns this frame's title string.
*
@@ -273,8 +253,6 @@ getTitle()
return(title);
}
-/*************************************************************************/
-
/*
* Sets this frame's title to the specified value.
*
@@ -288,8 +266,6 @@ setTitle(String title)
((FramePeer) peer).setTitle(title);
}
-/*************************************************************************/
-
/**
* Returns this frame's icon.
*
@@ -302,8 +278,6 @@ getIconImage()
return(icon);
}
-/*************************************************************************/
-
/**
* Sets this frame's icon to the specified value.
*
@@ -317,8 +291,6 @@ setIconImage(Image icon)
((FramePeer) peer).setIconImage(icon);
}
-/*************************************************************************/
-
/**
* Returns this frame's menu bar.
*
@@ -331,8 +303,6 @@ getMenuBar()
return(menuBar);
}
-/*************************************************************************/
-
/**
* Sets this frame's menu bar.
*
@@ -352,8 +322,6 @@ setMenuBar(MenuBar menuBar)
this.menuBar = menuBar;
}
-/*************************************************************************/
-
/**
* Tests whether or not this frame is resizable. This will be
* <code>true</code> by default.
@@ -367,8 +335,6 @@ isResizable()
return(resizable);
}
-/*************************************************************************/
-
/**
* Sets the resizability of this frame to the specified value.
*
@@ -383,8 +349,6 @@ setResizable(boolean resizable)
((FramePeer) peer).setResizable(resizable);
}
-/*************************************************************************/
-
/**
* Returns the cursor type of the cursor for this window. This will
* be one of the constants in this class.
@@ -399,8 +363,6 @@ getCursorType()
return(getCursor().getType());
}
-/*************************************************************************/
-
/**
* Sets the cursor for this window to the specified type. The specified
* type should be one of the constants in this class.
@@ -415,8 +377,6 @@ setCursor(int type)
setCursor(new Cursor(type));
}
-/*************************************************************************/
-
/**
* Removes the specified component from this frame's menu.
*
@@ -428,8 +388,6 @@ remove(MenuComponent menu)
menuBar.remove(menu);
}
-/*************************************************************************/
-
/**
* Notifies this frame that it should create its native peer.
*/
@@ -450,17 +408,40 @@ public void removeNotify()
super.removeNotify();
}
-/*************************************************************************/
-
/**
* Returns a debugging string describing this window.
*
* @return A debugging string describing this window.
*/
-protected String
-paramString()
+ protected String paramString ()
{
- return(getClass().getName());
+ String title = getTitle ();
+
+ String resizable = "";
+ if (isResizable ())
+ resizable = ",resizable";
+
+ String state = "";
+ switch (getState ())
+ {
+ case NORMAL:
+ state = ",normal";
+ break;
+ case ICONIFIED:
+ state = ",iconified";
+ break;
+ case MAXIMIZED_BOTH:
+ state = ",maximized-both";
+ break;
+ case MAXIMIZED_HORIZ:
+ state = ",maximized-horiz";
+ break;
+ case MAXIMIZED_VERT:
+ state = ",maximized-vert";
+ break;
+ }
+
+ return super.paramString () + ",title=" + title + resizable + state;
}
public static Frame[]
@@ -553,5 +534,19 @@ getFrames()
this.undecorated = undecorated;
}
-} // class Frame
+ /**
+ * Generate a unique name for this frame.
+ *
+ * @return A unique name for this frame.
+ */
+ String generateName ()
+ {
+ return "frame" + getUniqueLong ();
+ }
+
+ private static synchronized long getUniqueLong ()
+ {
+ return next_frame_number++;
+ }
+}
diff --git a/libjava/java/awt/GridBagLayout.java b/libjava/java/awt/GridBagLayout.java
index b98359c1bdb..1239f2cf7f4 100644
--- a/libjava/java/awt/GridBagLayout.java
+++ b/libjava/java/awt/GridBagLayout.java
@@ -340,7 +340,7 @@ public class GridBagLayout
if (components.length == 0)
return;
- GridBagLayoutInfo info = getLayoutInfo (parent, MINSIZE);
+ GridBagLayoutInfo info = getLayoutInfo (parent, PREFERREDSIZE);
if (info.cols == 0 && info.rows == 0)
return;
layoutInfo = info;
diff --git a/libjava/java/awt/KeyboardFocusManager.java b/libjava/java/awt/KeyboardFocusManager.java
index 8ebd9e1713c..e82c0d48825 100644
--- a/libjava/java/awt/KeyboardFocusManager.java
+++ b/libjava/java/awt/KeyboardFocusManager.java
@@ -246,7 +246,10 @@ public abstract class KeyboardFocusManager
*/
public Component getFocusOwner ()
{
- return (Component) getObject (currentFocusOwners);
+ Component owner = (Component) getObject (currentFocusOwners);
+ if (owner == null)
+ owner = (Component) getObject (currentPermanentFocusOwners);
+ return owner;
}
/**
diff --git a/libjava/java/awt/Panel.java b/libjava/java/awt/Panel.java
index b84c0d0a6a3..dbe322896d7 100644
--- a/libjava/java/awt/Panel.java
+++ b/libjava/java/awt/Panel.java
@@ -38,6 +38,7 @@ exception statement from your version. */
package java.awt;
+import java.awt.event.PaintEvent;
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
@@ -62,6 +63,19 @@ public class Panel extends Container implements Accessible
/** The cached accessible context. */
private transient AccessibleContext context;
+ /** Flag set when the first system-requested paint event is
+ dispatched. */
+ private transient boolean initialSystemUpdateDone;
+
+ /** Flag set when the first application-requested paint event is
+ consumed. */
+ private transient boolean initialUpdateConsumed;
+
+ /*
+ * The number used to generate the name returned by getName.
+ */
+ private static transient long next_panel_number = 0;
+
/**
* Initializes a new instance of <code>Panel</code> that has a default
* layout manager of <code>FlowLayout</code>.
@@ -84,6 +98,36 @@ public class Panel extends Container implements Accessible
}
/**
+ * Consume initial application-requested paint event if it has not
+ * already been consumed, and if the initial system-requested paint
+ * event has not already been handled. Otherwise, call
+ * super.dispatchEventImpl. These extra steps are required to
+ * prevent a Panel from being painted twice when it is initially
+ * shown.
+ *
+ * @param e the event to dispatch
+ */
+ void dispatchEventImpl (AWTEvent e)
+ {
+ if (e instanceof PaintEvent)
+ {
+ if (e.id == PaintEvent.UPDATE)
+ {
+ if (!initialUpdateConsumed
+ && !initialSystemUpdateDone)
+ {
+ e.consume ();
+ initialUpdateConsumed = true;
+ }
+ }
+ else if (e.id == PaintEvent.PAINT)
+ initialSystemUpdateDone = true;
+ }
+ else
+ super.dispatchEventImpl (e);
+ }
+
+ /**
* Notifies this object to create its native peer.
*
* @see #isDisplayable()
@@ -141,5 +185,20 @@ public class Panel extends Container implements Accessible
{
return AccessibleRole.PANEL;
}
- } // class AccessibleAWTPanel
-} // class Panel
+ }
+
+ /**
+ * Generate a unique name for this panel.
+ *
+ * @return A unique name for this panel.
+ */
+ String generateName ()
+ {
+ return "panel" + getUniqueLong ();
+ }
+
+ private static synchronized long getUniqueLong ()
+ {
+ return next_panel_number++;
+ }
+}
diff --git a/libjava/java/awt/ScrollPane.java b/libjava/java/awt/ScrollPane.java
index b772bee3878..457df0c0e26 100644
--- a/libjava/java/awt/ScrollPane.java
+++ b/libjava/java/awt/ScrollPane.java
@@ -157,6 +157,9 @@ ScrollPane(int scrollbarDisplayPolicy)
}
wheelScrollingEnabled = true;
+
+ // Default size.
+ setSize(100,100);
}
/*************************************************************************/
@@ -400,6 +403,15 @@ addNotify()
setPeer((ComponentPeer)getToolkit().createScrollPane(this));
super.addNotify();
+
+ Component[] list = getComponents();
+ if (list != null && list.length > 0 && ! (list[0] instanceof Panel))
+ {
+ Panel panel = new Panel();
+ panel.setLayout(new BorderLayout());
+ panel.add(list[0], BorderLayout.CENTER);
+ add(panel);
+ }
}
/*************************************************************************/
@@ -527,7 +539,19 @@ printComponents(Graphics graphics)
public String
paramString()
{
- return(getClass().getName());
+ Insets insets = getInsets();
+ return getName() + ","
+ + getX() + ","
+ + getY() + ","
+ + getWidth() + "x" + getHeight() + ","
+ + "ScrollPosition=(" + scrollPosition.getX() + ","
+ + scrollPosition.getY() + "),"
+ + "Insets=(" + insets.top + ","
+ + insets.left + ","
+ + insets.bottom + ","
+ + insets.right + "),"
+ + "ScrollbarDisplayPolicy=" + getScrollbarDisplayPolicy() + ","
+ + "wheelScrollingEnabled=" + isWheelScrollingEnabled();
}
/**
diff --git a/libjava/java/awt/Window.java b/libjava/java/awt/Window.java
index 2e198740b6f..7397a1c1c33 100644
--- a/libjava/java/awt/Window.java
+++ b/libjava/java/awt/Window.java
@@ -39,6 +39,8 @@ exception statement from your version. */
package java.awt;
import java.awt.event.ComponentEvent;
+import java.awt.event.FocusEvent;
+import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;
import java.awt.event.WindowListener;
@@ -85,6 +87,8 @@ public class Window extends Container implements Accessible
private transient boolean shown;
+ private transient Component windowFocusOwner;
+
/**
* This (package access) constructor is used by subclasses that want
* to build windows that do not have parents. Eg. toplevel
@@ -98,6 +102,33 @@ public class Window extends Container implements Accessible
// cycle roots.
focusCycleRoot = true;
setLayout(new BorderLayout());
+
+ addWindowFocusListener (new WindowAdapter ()
+ {
+ public void windowGainedFocus (WindowEvent event)
+ {
+ if (windowFocusOwner != null)
+ {
+ // FIXME: move this section and the other similar
+ // sections in Component into a separate method.
+ EventQueue eq = Toolkit.getDefaultToolkit ().getSystemEventQueue ();
+ synchronized (eq)
+ {
+ KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager ();
+ Component currentFocusOwner = manager.getGlobalPermanentFocusOwner ();
+ if (currentFocusOwner != null)
+ {
+ eq.postEvent (new FocusEvent (currentFocusOwner, FocusEvent.FOCUS_LOST,
+ false, windowFocusOwner));
+ eq.postEvent (new FocusEvent (windowFocusOwner, FocusEvent.FOCUS_GAINED,
+ false, currentFocusOwner));
+ }
+ else
+ eq.postEvent (new FocusEvent (windowFocusOwner, FocusEvent.FOCUS_GAINED, false));
+ }
+ }
+ }
+ });
}
Window(GraphicsConfiguration gc)
@@ -658,8 +689,22 @@ public class Window extends Container implements Accessible
// The currently-focused Component belongs to the active Window.
if (activeWindow == this)
return manager.getFocusOwner ();
+ else
+ return windowFocusOwner;
+ }
- return null;
+ /**
+ * Set the focus owner for this window. This method is used to
+ * remember which component was focused when this window lost
+ * top-level focus, so that when it regains top-level focus the same
+ * child component can be refocused.
+ *
+ * @param windowFocusOwner the component in this window that owns
+ * the focus.
+ */
+ void setFocusOwner (Component windowFocusOwner)
+ {
+ this.windowFocusOwner = windowFocusOwner;
}
/**
@@ -671,8 +716,7 @@ public class Window extends Container implements Accessible
*/
public boolean postEvent(Event e)
{
- // FIXME
- return false;
+ return handleEvent (e);
}
/**
@@ -704,7 +748,7 @@ public class Window extends Container implements Accessible
public void applyResourceBundle(String rbName)
{
ResourceBundle rb = ResourceBundle.getBundle(rbName, Locale.getDefault(),
- Window.class.getClassLoader());
+ ClassLoader.getSystemClassLoader());
if (rb != null)
applyResourceBundle(rb);
}
diff --git a/libjava/java/awt/event/InvocationEvent.java b/libjava/java/awt/event/InvocationEvent.java
index fbf7b5e9379..76d4a558244 100644
--- a/libjava/java/awt/event/InvocationEvent.java
+++ b/libjava/java/awt/event/InvocationEvent.java
@@ -189,8 +189,13 @@ public class InvocationEvent extends AWTEvent implements ActiveEvent
}
else
runnable.run();
- if (notifier != null)
- notifier.notifyAll();
+
+ Object o = notifier;
+ if (o != null)
+ synchronized(o)
+ {
+ o.notifyAll();
+ }
}
/**
diff --git a/libjava/java/awt/im/InputContext.java b/libjava/java/awt/im/InputContext.java
index c8e7cf35a4c..2c3c6aaafd1 100644
--- a/libjava/java/awt/im/InputContext.java
+++ b/libjava/java/awt/im/InputContext.java
@@ -100,8 +100,8 @@ public class InputContext
while (e.hasMoreElements())
{
URL url = (URL) e.nextElement();
- BufferedReader in;
- String line;
+ BufferedReader in = null;
+ String line = null;
try
{
in = new BufferedReader
diff --git a/libjava/java/awt/image/BufferedImage.java b/libjava/java/awt/image/BufferedImage.java
index 547301da8d8..b18779af146 100644
--- a/libjava/java/awt/image/BufferedImage.java
+++ b/libjava/java/awt/image/BufferedImage.java
@@ -47,6 +47,8 @@ import java.awt.Transparency;
import java.awt.color.ColorSpace;
import java.util.Hashtable;
import java.util.Vector;
+import java.util.HashSet;
+import java.util.Iterator;
import gnu.java.awt.ComponentDataBlitOp;
/**
@@ -442,7 +444,57 @@ public class BufferedImage extends Image
public ImageProducer getSource()
{
- throw new UnsupportedOperationException("not implemented");
+ return new ImageProducer() {
+
+ HashSet consumers = new HashSet();
+
+ public void addConsumer(ImageConsumer ic)
+ {
+ consumers.add(ic);
+ }
+
+ public boolean isConsumer(ImageConsumer ic)
+ {
+ return consumers.contains(ic);
+ }
+
+ public void removeConsumer(ImageConsumer ic)
+ {
+ consumers.remove(ic);
+ }
+
+ public void startProduction(ImageConsumer ic)
+ {
+ int x = 0;
+ int y = 0;
+ int width = getWidth();
+ int height = getHeight();
+ int stride = width;
+ int offset = 0;
+ int[] pixels = getRGB(x, y,
+ width, height,
+ (int[])null, offset, stride);
+ ColorModel model = getColorModel();
+
+ consumers.add(ic);
+
+ Iterator i = consumers.iterator();
+ while(i.hasNext())
+ {
+ ImageConsumer c = (ImageConsumer) i.next();
+ c.setHints(ImageConsumer.SINGLEPASS);
+ c.setDimensions(getWidth(), getHeight());
+ c.setPixels(x, y, width, height, model, pixels, offset, stride);
+ c.imageComplete(ImageConsumer.STATICIMAGEDONE);
+ }
+ }
+
+ public void requestTopDownLeftRightResend(ImageConsumer ic)
+ {
+ startProduction(ic);
+ }
+
+ };
}
public Vector getSources()
diff --git a/libjava/java/awt/image/ColorModel.java b/libjava/java/awt/image/ColorModel.java
index c73f4fd4e58..87ab942917a 100644
--- a/libjava/java/awt/image/ColorModel.java
+++ b/libjava/java/awt/image/ColorModel.java
@@ -37,6 +37,7 @@ exception statement from your version. */
package java.awt.image;
+import java.util.Arrays;
import java.awt.Point;
import java.awt.Transparency;
import java.awt.color.ColorSpace;
@@ -551,8 +552,8 @@ public abstract class ColorModel implements Transparency
(transferType == o.transferType) &&
(transparency == o.transparency) &&
(hasAlpha == o.hasAlpha) &&
- (isAlphaPremultiplied == isAlphaPremultiplied) &&
- (bits.equals(o.bits)) &&
+ (isAlphaPremultiplied == o.isAlphaPremultiplied) &&
+ Arrays.equals(bits, o.bits) &&
(cspace.equals(o.cspace));
}
diff --git a/libjava/java/awt/image/MemoryImageSource.java b/libjava/java/awt/image/MemoryImageSource.java
index d86119993ec..ddd5800f14f 100644
--- a/libjava/java/awt/image/MemoryImageSource.java
+++ b/libjava/java/awt/image/MemoryImageSource.java
@@ -41,6 +41,7 @@ package java.awt.image;
import java.awt.Image;
import java.util.Enumeration;
import java.util.Hashtable;
+import java.util.Vector;
public class MemoryImageSource implements ImageProducer
{
@@ -49,7 +50,8 @@ public class MemoryImageSource implements ImageProducer
private int pixeli[], width, height, offset, scansize;
private byte pixelb[];
private ColorModel cm;
- private Hashtable props, consumers = new Hashtable();
+ private Hashtable props = new Hashtable();
+ private Vector consumers = new Vector();
/**
Constructs an ImageProducer from memory
@@ -126,10 +128,10 @@ public class MemoryImageSource implements ImageProducer
* <code>ImageProducer</code>.
*/
public synchronized void addConsumer(ImageConsumer ic) {
- if (consumers.containsKey(ic))
+ if (consumers.contains(ic))
return;
- consumers.put(ic, ic);
+ consumers.addElement(ic);
}
/**
@@ -137,7 +139,7 @@ public class MemoryImageSource implements ImageProducer
* already registered with this <code>ImageProducer</code>.
*/
public synchronized boolean isConsumer(ImageConsumer ic) {
- if (consumers.containsKey(ic))
+ if (consumers.contains(ic))
return true;
return false;
}
@@ -147,7 +149,7 @@ public class MemoryImageSource implements ImageProducer
* registered consumers for this <code>ImageProducer</code>.
*/
public synchronized void removeConsumer(ImageConsumer ic) {
- consumers.remove(ic);
+ consumers.removeElement(ic);
}
/**
@@ -157,16 +159,16 @@ public class MemoryImageSource implements ImageProducer
* registered consumers.
*/
public void startProduction(ImageConsumer ic) {
- if (!(consumers.containsKey(ic))) {
- consumers.put(ic, ic);
+ if (!(consumers.contains(ic))) {
+ consumers.addElement(ic);
}
- Enumeration e = consumers.elements();
- for( ; e.hasMoreElements(); ) {
- ic = (ImageConsumer)e.nextElement();
+
+ Vector list = (Vector) consumers.clone();
+ for(int i = 0; i < list.size(); i++) {
+ ic = (ImageConsumer) list.elementAt(i);
sendPicture( ic );
- ic.imageComplete( ImageConsumer.SINGLEFRAME );
+ ic.imageComplete( ImageConsumer.STATICIMAGEDONE );
}
-
}
/**
@@ -210,9 +212,9 @@ public class MemoryImageSource implements ImageProducer
{
if( animated == true ) {
ImageConsumer ic;
- Enumeration e = consumers.elements();
- for( ; e.hasMoreElements(); ) {
- ic = (ImageConsumer)e.nextElement();
+ Vector list = (Vector) consumers.clone();
+ for(int i = 0; i < list.size(); i++) {
+ ic = (ImageConsumer) list.elementAt(i);
sendPicture( ic );
ic.imageComplete( ImageConsumer.SINGLEFRAME );
}
@@ -227,6 +229,7 @@ public class MemoryImageSource implements ImageProducer
ic.setProperties( props );
}
ic.setDimensions(width, height);
+ ic.setColorModel(cm);
if( pixeli != null ) {
ic.setPixels( 0, 0, width, height, cm, pixeli, offset, scansize );
} else {
@@ -249,9 +252,9 @@ public class MemoryImageSource implements ImageProducer
newPixels();
} else {
ImageConsumer ic;
- Enumeration e = consumers.elements();
- for( ; e.hasMoreElements(); ) {
- ic = (ImageConsumer)e.nextElement();
+ Vector list = (Vector) consumers.clone();
+ for(int i = 0; i < list.size(); i++) {
+ ic = (ImageConsumer) list.elementAt(i);
ic.setHints( ImageConsumer.TOPDOWNLEFTRIGHT );
if( props != null ) {
ic.setProperties( props );
@@ -294,9 +297,9 @@ public class MemoryImageSource implements ImageProducer
newPixels();
} else {
ImageConsumer ic;
- Enumeration e = consumers.elements();
- for( ; e.hasMoreElements(); ) {
- ic = (ImageConsumer)e.nextElement();
+ Vector list = (Vector) consumers.clone();
+ for(int i = 0; i < list.size(); i++) {
+ ic = (ImageConsumer) list.elementAt(i);
ic.setHints( ImageConsumer.TOPDOWNLEFTRIGHT );
if( props != null ) {
ic.setProperties( props );
diff --git a/libjava/java/awt/image/RGBImageFilter.java b/libjava/java/awt/image/RGBImageFilter.java
index 5718024e761..819580e0057 100644
--- a/libjava/java/awt/image/RGBImageFilter.java
+++ b/libjava/java/awt/image/RGBImageFilter.java
@@ -79,6 +79,10 @@ public abstract class RGBImageFilter extends ImageFilter
if( ( model instanceof IndexColorModel) && canFilterIndexColorModel ) {
newmodel = filterIndexColorModel( (IndexColorModel) model );
+ consumer.setColorModel(newmodel);
+ }
+ else {
+ consumer.setColorModel(ColorModel.getRGBdefault());
}
}
diff --git a/libjava/java/io/BufferedWriter.java b/libjava/java/io/BufferedWriter.java
index 009bdccc144..4beb5c54198 100644
--- a/libjava/java/io/BufferedWriter.java
+++ b/libjava/java/io/BufferedWriter.java
@@ -103,7 +103,7 @@ public class BufferedWriter extends Writer
*/
public BufferedWriter (Writer out, int size)
{
- super(out);
+ super(out.lock);
this.out = out;
this.buffer = new char[size];
this.count = 0;
diff --git a/libjava/java/io/File.java b/libjava/java/io/File.java
index 53ae529c6fe..1d930d59b84 100644
--- a/libjava/java/io/File.java
+++ b/libjava/java/io/File.java
@@ -40,6 +40,8 @@ exception statement from your version. */
package java.io;
import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.net.URL;
import gnu.classpath.Configuration;
import gnu.gcj.runtime.FileDeleter;
@@ -875,6 +877,27 @@ public class File implements Serializable, Comparable
}
/**
+ * @return A <code>URI</code> for this object.
+ */
+ public URI toURI()
+ {
+ String abspath = getAbsolutePath();
+
+ if (isDirectory())
+ abspath = abspath + separator;
+
+ try
+ {
+ return new URI("file", "", abspath.replace(separatorChar, '/'));
+ }
+ catch (URISyntaxException use)
+ {
+ // Can't happen.
+ throw new RuntimeException(use);
+ }
+ }
+
+ /**
* This method returns a <code>URL</code> with the <code>file:</code>
* protocol that represents this file. The exact form of this URL is
* system dependent.
diff --git a/libjava/java/io/FilterWriter.java b/libjava/java/io/FilterWriter.java
index 87bae4f0bd8..a717092d859 100644
--- a/libjava/java/io/FilterWriter.java
+++ b/libjava/java/io/FilterWriter.java
@@ -72,7 +72,7 @@ public abstract class FilterWriter extends Writer
*/
protected FilterWriter(Writer out)
{
- super(out);
+ super(out.lock);
this.out = out;
}
diff --git a/libjava/java/io/ObjectInputStream.java b/libjava/java/io/ObjectInputStream.java
index 292f841a657..809e9b1c941 100644
--- a/libjava/java/io/ObjectInputStream.java
+++ b/libjava/java/io/ObjectInputStream.java
@@ -1332,10 +1332,10 @@ public class ObjectInputStream extends InputStream
int off = field.getOffset();
- return (long)(((prim_field_data[off++] & 0xFF) << 56)
- | ((prim_field_data[off++] & 0xFF) << 48)
- | ((prim_field_data[off++] & 0xFF) << 40)
- | ((prim_field_data[off++] & 0xFF) << 32)
+ return (long)(((prim_field_data[off++] & 0xFFL) << 56)
+ | ((prim_field_data[off++] & 0xFFL) << 48)
+ | ((prim_field_data[off++] & 0xFFL) << 40)
+ | ((prim_field_data[off++] & 0xFFL) << 32)
| ((prim_field_data[off++] & 0xFF) << 24)
| ((prim_field_data[off++] & 0xFF) << 16)
| ((prim_field_data[off++] & 0xFF) << 8)
@@ -1369,10 +1369,10 @@ public class ObjectInputStream extends InputStream
int off = field.getOffset();
return Double.longBitsToDouble
- ( (long) (((prim_field_data[off++] & 0xFF) << 56)
- | ((prim_field_data[off++] & 0xFF) << 48)
- | ((prim_field_data[off++] & 0xFF) << 40)
- | ((prim_field_data[off++] & 0xFF) << 32)
+ ( (long) (((prim_field_data[off++] & 0xFFL) << 56)
+ | ((prim_field_data[off++] & 0xFFL) << 48)
+ | ((prim_field_data[off++] & 0xFFL) << 40)
+ | ((prim_field_data[off++] & 0xFFL) << 32)
| ((prim_field_data[off++] & 0xFF) << 24)
| ((prim_field_data[off++] & 0xFF) << 16)
| ((prim_field_data[off++] & 0xFF) << 8)
diff --git a/libjava/java/io/ObjectOutputStream.java b/libjava/java/io/ObjectOutputStream.java
index cc77976b492..2435b070d08 100644
--- a/libjava/java/io/ObjectOutputStream.java
+++ b/libjava/java/io/ObjectOutputStream.java
@@ -48,6 +48,7 @@ import java.util.Hashtable;
import gnu.java.io.ObjectIdentityWrapper;
import gnu.java.lang.reflect.TypeSignature;
+import gnu.java.security.action.SetAccessibleAction;
import gnu.classpath.Configuration;
/**
@@ -1516,20 +1517,14 @@ public class ObjectOutputStream extends OutputStream
}
}
- private static Field getField (Class klass, String name)
+ private Field getField (Class klass, String name)
throws java.io.InvalidClassException
{
try
{
final Field f = klass.getDeclaredField(name);
- AccessController.doPrivileged(new PrivilegedAction()
- {
- public Object run()
- {
- f.setAccessible(true);
- return null;
- }
- });
+ setAccessible.setMember(f);
+ AccessController.doPrivileged(setAccessible);
return f;
}
catch (java.lang.NoSuchFieldException e)
@@ -1539,18 +1534,12 @@ public class ObjectOutputStream extends OutputStream
}
}
- private static Method getMethod (Class klass, String name, Class[] args)
+ private Method getMethod (Class klass, String name, Class[] args)
throws java.lang.NoSuchMethodException
{
final Method m = klass.getDeclaredMethod(name, args);
- AccessController.doPrivileged(new PrivilegedAction()
- {
- public Object run()
- {
- m.setAccessible(true);
- return null;
- }
- });
+ setAccessible.setMember(m);
+ AccessController.doPrivileged(setAccessible);
return m;
}
@@ -1583,6 +1572,7 @@ public class ObjectOutputStream extends OutputStream
private Hashtable OIDLookupTable;
private int protocolVersion;
private boolean useSubclassMethod;
+ private SetAccessibleAction setAccessible = new SetAccessibleAction();
// The nesting depth for debugging output
private int depth = 0;
diff --git a/libjava/java/io/ObjectStreamClass.java b/libjava/java/io/ObjectStreamClass.java
index ee23f5996b5..08576cd1f7a 100644
--- a/libjava/java/io/ObjectStreamClass.java
+++ b/libjava/java/io/ObjectStreamClass.java
@@ -57,6 +57,7 @@ import java.util.Hashtable;
import java.util.Vector;
import gnu.java.io.NullOutputStream;
import gnu.java.lang.reflect.TypeSignature;
+import gnu.java.security.action.SetAccessibleAction;
import gnu.java.security.provider.Gnu;
@@ -470,14 +471,8 @@ outer:
}
}
final Method m = methods[i];
- AccessController.doPrivileged(new PrivilegedAction()
- {
- public Object run()
- {
- m.setAccessible(true);
- return null;
- }
- });
+ SetAccessibleAction setAccessible = new SetAccessibleAction(m);
+ AccessController.doPrivileged(setAccessible);
return m;
}
}
@@ -543,6 +538,8 @@ outer:
// clazz.
private void setFields(Class cl)
{
+ SetAccessibleAction setAccessible = new SetAccessibleAction();
+
if (!isSerializable() || isExternalizable())
{
fields = NO_FIELDS;
@@ -551,17 +548,11 @@ outer:
try
{
- final Field serialPersistentFields =
+ final Field f =
cl.getDeclaredField("serialPersistentFields");
- AccessController.doPrivileged(new PrivilegedAction()
- {
- public Object run()
- {
- serialPersistentFields.setAccessible(true);
- return null;
- }
- });
- int modifiers = serialPersistentFields.getModifiers();
+ setAccessible.setMember(f);
+ AccessController.doPrivileged(setAccessible);
+ int modifiers = f.getModifiers();
if (Modifier.isStatic(modifiers)
&& Modifier.isFinal(modifiers)
@@ -617,14 +608,8 @@ outer:
if (all_fields[from] != null)
{
final Field f = all_fields[from];
- AccessController.doPrivileged(new PrivilegedAction()
- {
- public Object run()
- {
- f.setAccessible(true);
- return null;
- }
- });
+ setAccessible.setMember(f);
+ AccessController.doPrivileged(setAccessible);
fields[to] = new ObjectStreamField(all_fields[from]);
to++;
}
@@ -651,14 +636,8 @@ outer:
// may not be public AND we only want the serialVersionUID of this
// class, not a superclass or interface.
final Field suid = cl.getDeclaredField("serialVersionUID");
- AccessController.doPrivileged(new PrivilegedAction()
- {
- public Object run()
- {
- suid.setAccessible(true);
- return null;
- }
- });
+ SetAccessibleAction setAccessible = new SetAccessibleAction(suid);
+ AccessController.doPrivileged(setAccessible);
int modifiers = suid.getModifiers();
if (Modifier.isStatic(modifiers)
diff --git a/libjava/java/io/ObjectStreamField.java b/libjava/java/io/ObjectStreamField.java
index 830a349344a..ab7c934e48c 100644
--- a/libjava/java/io/ObjectStreamField.java
+++ b/libjava/java/io/ObjectStreamField.java
@@ -65,7 +65,6 @@ public class ObjectStreamField implements Comparable
{
this (field.getName(), field.getType());
this.field = field;
- toset = !Modifier.isFinal(field.getModifiers());
}
/**
diff --git a/libjava/java/io/PrintWriter.java b/libjava/java/io/PrintWriter.java
index 9358ddaea5d..376b3c44e7b 100644
--- a/libjava/java/io/PrintWriter.java
+++ b/libjava/java/io/PrintWriter.java
@@ -86,7 +86,7 @@ public class PrintWriter extends Writer
*/
public PrintWriter(Writer wr)
{
- super(wr);
+ super(wr.lock);
this.out = wr;
}
@@ -102,7 +102,7 @@ public class PrintWriter extends Writer
*/
public PrintWriter(Writer wr, boolean autoflush)
{
- super(wr);
+ super(wr.lock);
this.out = wr;
this.autoflush = autoflush;
}
diff --git a/libjava/java/io/RandomAccessFile.java b/libjava/java/io/RandomAccessFile.java
index c20549c12df..7907d46f2fd 100644
--- a/libjava/java/io/RandomAccessFile.java
+++ b/libjava/java/io/RandomAccessFile.java
@@ -194,12 +194,14 @@ public class RandomAccessFile implements DataOutput, DataInput
}
/**
- * This method sets the length of the file to the specified length. If
- * the currently length of the file is longer than the specified length,
- * then the file is truncated to the specified length. If the current
- * length of the file is shorter than the specified length, the file
- * is extended with bytes of an undefined value.
- * <p>
+ * This method sets the length of the file to the specified length.
+ * If the currently length of the file is longer than the specified
+ * length, then the file is truncated to the specified length (the
+ * file position is set to the end of file in this case). If the
+ * current length of the file is shorter than the specified length,
+ * the file is extended with bytes of an undefined value (the file
+ * position is unchanged in this case).
+ * <p>
* The file must be open for write access for this operation to succeed.
*
* @param newlen The new length of the file
@@ -208,7 +210,19 @@ public class RandomAccessFile implements DataOutput, DataInput
*/
public void setLength (long newLen) throws IOException
{
- ch.truncate (newLen);
+ // FIXME: Extending a file should probably be done by one method call.
+
+ // FileChannel.truncate() can only shrink a file.
+ // To expand it we need to seek forward and write at least one byte.
+ if (newLen < length())
+ ch.truncate (newLen);
+ else if (newLen > length())
+ {
+ long pos = getFilePointer();
+ seek(newLen - 1);
+ write(0);
+ seek(pos);
+ }
}
/**
diff --git a/libjava/java/lang/Class.h b/libjava/java/lang/Class.h
index e93920c06b5..8d2b4a0cf24 100644
--- a/libjava/java/lang/Class.h
+++ b/libjava/java/lang/Class.h
@@ -39,10 +39,9 @@ enum
JV_STATE_PRELOADING = 1, // Can do _Jv_FindClass.
JV_STATE_LOADING = 3, // Has super installed.
- JV_STATE_LOADED = 5, // Is complete.
-
- JV_STATE_COMPILED = 6, // This was a compiled class.
+ JV_STATE_COMPILED = 5, // This was a compiled class.
+ JV_STATE_LOADED = 6, // Is complete.
JV_STATE_PREPARED = 7, // Layout & static init done.
JV_STATE_LINKED = 9, // Strings interned.
@@ -329,7 +328,7 @@ private:
friend void _Jv_InitNewClassFields (jclass klass);
// in prims.cc
- friend void _Jv_InitPrimClass (jclass, char *, char, int, _Jv_ArrayVTable *);
+ friend void _Jv_InitPrimClass (jclass, char *, char, int);
friend void _Jv_PrepareCompiledClass (jclass);
friend void _Jv_PrepareConstantTimeTables (jclass);
diff --git a/libjava/java/lang/Runtime.java b/libjava/java/lang/Runtime.java
index e14cd192f40..749aa36ac03 100644
--- a/libjava/java/lang/Runtime.java
+++ b/libjava/java/lang/Runtime.java
@@ -238,7 +238,7 @@ public class Runtime
}
try
{
- exitSequence.sleep(1); // Give other threads a chance.
+ Thread.sleep(1); // Give other threads a chance.
}
catch (InterruptedException e)
{
diff --git a/libjava/java/lang/String.java b/libjava/java/lang/String.java
index 6844405e34c..6c5f9490f77 100644
--- a/libjava/java/lang/String.java
+++ b/libjava/java/lang/String.java
@@ -39,8 +39,8 @@ exception statement from your version. */
package java.lang;
-import java.io.UnsupportedEncodingException;
import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
import java.lang.Comparable;
import java.util.Comparator;
import java.util.Locale;
@@ -68,8 +68,8 @@ import java.util.regex.PatternSyntaxException;
* literal in the object stream.
*
* @author Paul N. Fisher
- * @author Eric Blake <ebb9@email.byu.edu>
- * @author Per Bothner <bothner@cygnus.com>
+ * @author Eric Blake (ebb9@email.byu.edu)
+ * @author Per Bothner (bothner@cygnus.com)
* @since 1.0
* @status updated to 1.4
*/
@@ -207,7 +207,7 @@ public final class String implements Serializable, Comparable, CharSequence
* @param count the number of characters from data to copy
* @throws NullPointerException if data is null
* @throws IndexOutOfBoundsException if (offset &lt; 0 || count &lt; 0
- * || offset + count > data.length)
+ * || offset + count &gt; data.length)
* (while unspecified, this is a StringIndexOutOfBoundsException)
*/
public String(char[] data, int offset, int count)
@@ -221,7 +221,7 @@ public final class String implements Serializable, Comparable, CharSequence
* corresponding byte b, is created in the new String as if by performing:
*
* <pre>
- * c = (char) (((hibyte & 0xff) << 8) | (b & 0xff))
+ * c = (char) (((hibyte &amp; 0xff) &lt;&lt; 8) | (b &amp; 0xff))
* </pre>
*
* @param ascii array of integer values
@@ -230,7 +230,7 @@ public final class String implements Serializable, Comparable, CharSequence
* @param count the number of characters from ascii to copy
* @throws NullPointerException if ascii is null
* @throws IndexOutOfBoundsException if (offset &lt; 0 || count &lt; 0
- * || offset + count > ascii.length)
+ * || offset + count &gt; ascii.length)
* (while unspecified, this is a StringIndexOutOfBoundsException)
* @see #String(byte[])
* @see #String(byte[], String)
@@ -250,7 +250,7 @@ public final class String implements Serializable, Comparable, CharSequence
* as if by performing:
*
* <pre>
- * c = (char) (((hibyte & 0xff) << 8) | (b & 0xff))
+ * c = (char) (((hibyte &amp; 0xff) &lt;&lt; 8) | (b &amp; 0xff))
* </pre>
*
* @param ascii array of integer values
@@ -613,7 +613,7 @@ public final class String implements Serializable, Comparable, CharSequence
* character of the string. This is unsatisfactory for locale-based
* comparison, in which case you should use {@link java.text.Collator}.
*
- * @param s the string to compare against
+ * @param str the string to compare against
* @return the comparison
* @see Collator#compare(String, String)
* @since 1.2
@@ -632,7 +632,7 @@ public final class String implements Serializable, Comparable, CharSequence
*
* @param toffset index to start comparison at for this String
* @param other String to compare region to this String
- * @param oofset index to start comparison at for other
+ * @param ooffset index to start comparison at for other
* @param len number of characters to compare
* @return true if regions match (case sensitive)
* @throws NullPointerException if other is null
@@ -678,7 +678,7 @@ public final class String implements Serializable, Comparable, CharSequence
* Predicate which determines if this String starts with a given prefix.
* If the prefix is an empty String, true is returned.
*
- * @param prefex String to compare
+ * @param prefix String to compare
* @return true if this String starts with the prefix
* @throws NullPointerException if prefix is null
* @see #startsWith(String, int)
@@ -840,26 +840,26 @@ public final class String implements Serializable, Comparable, CharSequence
* @param end index to end at (exclusive)
* @return new String which is a substring of this String
* @throws IndexOutOfBoundsException if begin &lt; 0 || end &gt; length()
- * || begin > end (while unspecified, this is a
+ * || begin &gt; end (while unspecified, this is a
* StringIndexOutOfBoundsException)
*/
- public native String substring(int beginIndex, int endIndex);
+ public native String substring(int begin, int end);
/**
* Creates a substring of this String, starting at a specified index
* and ending at one character before a specified index. This behaves like
- * <code>substring(beginIndex, endIndex)</code>.
+ * <code>substring(begin, end)</code>.
*
- * @param beginIndex index to start substring (inclusive, base 0)
- * @param endIndex index to end at (exclusive)
+ * @param begin index to start substring (inclusive, base 0)
+ * @param end index to end at (exclusive)
* @return new String which is a substring of this String
* @throws IndexOutOfBoundsException if begin &lt; 0 || end &gt; length()
- * || begin > end
+ * || begin &gt; end
* @since 1.4
*/
- public CharSequence subSequence(int beginIndex, int endIndex)
+ public CharSequence subSequence(int begin, int end)
{
- return substring(beginIndex, endIndex);
+ return substring(begin, end);
}
/**
@@ -1129,7 +1129,7 @@ public final class String implements Serializable, Comparable, CharSequence
* @return String containing the chars from data[offset..offset+count]
* @throws NullPointerException if data is null
* @throws IndexOutOfBoundsException if (offset &lt; 0 || count &lt; 0
- * || offset + count > data.length)
+ * || offset + count &gt; data.length)
* (while unspecified, this is a StringIndexOutOfBoundsException)
* @see #String(char[], int, int)
*/
@@ -1146,7 +1146,7 @@ public final class String implements Serializable, Comparable, CharSequence
* @return String containing the chars from data[offset..offset+count]
* @throws NullPointerException if data is null
* @throws IndexOutOfBoundsException if (offset &lt; 0 || count &lt; 0
- * || offset + count > data.length)
+ * || offset + count &gt; data.length)
* (while unspecified, this is a StringIndexOutOfBoundsException)
* @see #String(char[], int, int)
*/
diff --git a/libjava/java/lang/System.java b/libjava/java/lang/System.java
index d7529871845..a8c0c23c0db 100644
--- a/libjava/java/lang/System.java
+++ b/libjava/java/lang/System.java
@@ -1,5 +1,6 @@
/* System.java -- useful methods to interface with the system
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -98,6 +99,20 @@ public final class System
defaultProperties.put("gnu.classpath.vm.shortname", value);
}
+ // Network properties
+ if (defaultProperties.get("http.agent") == null)
+ {
+ String userAgent
+ = ("gnu-classpath/"
+ + defaultProperties.getProperty("gnu.classpath.version")
+ + " ("
+ + defaultProperties.getProperty("gnu.classpath.vm.shortname")
+ + "/"
+ + defaultProperties.getProperty("java.vm.version")
+ + ")");
+ defaultProperties.put("http.agent", userAgent);
+ }
+
defaultProperties.put("gnu.cpu.endian",
isWordsBigEndian() ? "big" : "little");
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc
index ead9bce6b36..1b1a32d1bab 100644
--- a/libjava/java/lang/natClass.cc
+++ b/libjava/java/lang/natClass.cc
@@ -59,10 +59,13 @@ details. */
#include <java-cpool.h>
#include <java-interp.h>
+
using namespace gcj;
+bool gcj::verbose_class_flag;
+
jclass
java::lang::Class::forName (jstring className, jboolean initialize,
java::lang::ClassLoader *loader)
diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc
index ec48352c792..b38c2db1625 100644
--- a/libjava/java/lang/natClassLoader.cc
+++ b/libjava/java/lang/natClassLoader.cc
@@ -48,6 +48,12 @@ _Jv_WaitForState (jclass klass, int state)
_Jv_MonitorEnter (klass) ;
+ if (klass->state == JV_STATE_COMPILED)
+ {
+ klass->state = JV_STATE_LOADED;
+ if (gcj::verbose_class_flag)
+ fprintf (stderr, "[Loaded (pre-compiled) %s]\n", (const char*)(klass->name->data));
+ }
if (state == JV_STATE_LINKED)
{
// Must call _Jv_PrepareCompiledClass while holding the class
@@ -86,7 +92,8 @@ typedef unsigned int uaddr __attribute__ ((mode (pointer)));
void
_Jv_PrepareCompiledClass (jclass klass)
{
- if (klass->state >= JV_STATE_LINKED)
+ jint state = klass->state;
+ if (state >= JV_STATE_LINKED)
return;
// Short-circuit, so that mutually dependent classes are ok.
@@ -173,6 +180,10 @@ _Jv_PrepareCompiledClass (jclass klass)
if (klass->isInterface ())
_Jv_LayoutInterfaceMethods (klass);
+ if (state == JV_STATE_COMPILED && gcj::verbose_class_flag)
+ fprintf (stderr, "[Loaded (pre-compiled) %s]\n",
+ (const char*)(klass->name->data));
+
klass->notifyAll ();
_Jv_PushClass (klass);
diff --git a/libjava/java/net/DatagramPacket.java b/libjava/java/net/DatagramPacket.java
index 8ff64435c2b..549a3609a3d 100644
--- a/libjava/java/net/DatagramPacket.java
+++ b/libjava/java/net/DatagramPacket.java
@@ -278,9 +278,6 @@ public final class DatagramPacket
*/
public synchronized void setAddress(InetAddress address)
{
- if (address == null)
- throw new NullPointerException("Null address");
-
this.address = address;
}
diff --git a/libjava/java/net/DatagramSocket.java b/libjava/java/net/DatagramSocket.java
index 2808d82428b..d29d1223498 100644
--- a/libjava/java/net/DatagramSocket.java
+++ b/libjava/java/net/DatagramSocket.java
@@ -1,5 +1,6 @@
/* DatagramSocket.java -- A class to model UDP sockets
- Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004
+ Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -282,7 +283,7 @@ public class DatagramSocket
*/
public InetAddress getLocalAddress()
{
- if (isClosed())
+ if (! isBound())
return null;
InetAddress localAddr;
diff --git a/libjava/java/net/Socket.java b/libjava/java/net/Socket.java
index 43c6f3c3d50..8855958cff0 100644
--- a/libjava/java/net/Socket.java
+++ b/libjava/java/net/Socket.java
@@ -311,8 +311,7 @@ public class Socket
// that default. JDK 1.2 doc infers not to do a bind.
}
- // This has to be accessible from java.net.ServerSocket.
- SocketImpl getImpl() throws SocketException
+ private SocketImpl getImpl() throws SocketException
{
try
{
@@ -488,6 +487,9 @@ public class Socket
*/
public InetAddress getLocalAddress()
{
+ if (! isBound())
+ return null;
+
InetAddress addr = null;
try
@@ -523,12 +525,11 @@ public class Socket
public int getPort()
{
if (! isConnected())
- return 0;
+ return -1;
try
{
- if (getImpl() != null)
- return getImpl().getPort();
+ return getImpl().getPort();
}
catch (SocketException e)
{
@@ -1155,6 +1156,9 @@ public class Socket
*/
public void setReuseAddress(boolean reuseAddress) throws SocketException
{
+ if (isClosed())
+ throw new SocketException("socket is closed");
+
getImpl().setOption(SocketOptions.SO_REUSEADDR,
Boolean.valueOf(reuseAddress));
}
@@ -1217,6 +1221,9 @@ public class Socket
{
try
{
+ if (getImpl() == null)
+ return false;
+
return getImpl().getInetAddress() != null;
}
catch (SocketException e)
diff --git a/libjava/java/net/URL.java b/libjava/java/net/URL.java
index 623f6601770..7357c7529b8 100644
--- a/libjava/java/net/URL.java
+++ b/libjava/java/net/URL.java
@@ -262,7 +262,8 @@ public final class URL implements Serializable
{
if (protocol == null)
throw new MalformedURLException("null protocol");
- this.protocol = protocol.toLowerCase();
+ protocol = protocol.toLowerCase();
+ this.protocol = protocol;
if (ph != null)
{
@@ -512,7 +513,7 @@ public final class URL implements Serializable
* Defined as <code>path[?query]</code>.
* Returns the empty string if there is no file portion.
*
- * @return The filename specified in this URL.
+ * @return The filename specified in this URL, or an empty string if empty.
*/
public String getFile()
{
@@ -523,13 +524,15 @@ public final class URL implements Serializable
* Returns the path of the URL. This is the part of the file before any '?'
* character.
*
- * @return The path specified in this URL.
+ * @return The path specified in this URL, or null if empty.
*
* @since 1.3
*/
public String getPath()
{
- int quest = (file == null) ? -1 : file.indexOf('?');
+ if (file == null)
+ return null;
+ int quest = file.indexOf('?');
return quest < 0 ? getFile() : file.substring(0, quest);
}
@@ -699,8 +702,12 @@ public final class URL implements Serializable
// invalid protocol. It will cause the handler to be set to null
// thus overriding a valid handler. Callers of this method should
// be aware of this.
- this.ph = getURLStreamHandler(protocol);
- this.protocol = protocol.toLowerCase();
+ protocol = protocol.toLowerCase ();
+ if (! this.protocol.equals (protocol))
+ {
+ this.ph = getURLStreamHandler(protocol);
+ this.protocol = protocol;
+ }
this.authority = "";
this.port = port;
this.host = host;
@@ -738,8 +745,12 @@ public final class URL implements Serializable
// invalid protocol. It will cause the handler to be set to null
// thus overriding a valid handler. Callers of this method should
// be aware of this.
- this.ph = getURLStreamHandler(protocol);
- this.protocol = protocol.toLowerCase();
+ protocol = protocol.toLowerCase ();
+ if (! this.protocol.equals (protocol))
+ {
+ this.ph = getURLStreamHandler(protocol);
+ this.protocol = protocol;
+ }
this.host = host;
this.userInfo = userInfo;
this.port = port;
diff --git a/libjava/java/net/URLConnection.java b/libjava/java/net/URLConnection.java
index 867a53450c8..4bf52b860cd 100644
--- a/libjava/java/net/URLConnection.java
+++ b/libjava/java/net/URLConnection.java
@@ -116,6 +116,9 @@ public abstract class URLConnection
*/
private static boolean defaultUseCaches = true;
+ private static ContentHandlerFactory defaultFactory
+ = new gnu.java.net.DefaultContentHandlerFactory();
+
/**
* This variable determines whether or not interaction is allowed with
* the user. For example, to prompt for a username and password.
@@ -165,11 +168,12 @@ public abstract class URLConnection
protected URL url;
private static Hashtable handlers = new Hashtable();
- private static SimpleDateFormat dateFormat1;
- private static SimpleDateFormat dateFormat2;
- private static SimpleDateFormat dateFormat3;
+ private static SimpleDateFormat[] dateFormats;
private static boolean dateformats_initialized;
+ /* Cached ParsePosition, used when parsing dates. */
+ private ParsePosition position;
+
/**
* Creates a URL connection to a given URL. A real connection is not made.
* Use #connect to do this.
@@ -366,19 +370,24 @@ public abstract class URLConnection
{
if (! dateformats_initialized)
initializeDateFormats();
+
+ if (position == null)
+ position = new ParsePosition(0);
long result = defaultValue;
String str = getHeaderField(name);
if (str != null)
{
- Date date;
- if ((date = dateFormat1.parse(str, new ParsePosition(0))) != null)
- result = date.getTime();
- else if ((date = dateFormat2.parse(str, new ParsePosition(0))) != null)
- result = date.getTime();
- else if ((date = dateFormat3.parse(str, new ParsePosition(0))) != null)
- result = date.getTime();
+ for (int i = 0; i < dateFormats.length; i++)
+ {
+ SimpleDateFormat df = dateFormats[i];
+ position.setIndex(0);
+ position.setErrorIndex(0);
+ Date date = df.parse(str, position);
+ if (date != null)
+ return date.getTime();
+ }
}
return result;
@@ -430,7 +439,7 @@ public abstract class URLConnection
// guessContentTypeFromName() and guessContentTypeFromStream methods
// as well as FileNameMap class & fileNameMap field & get/set methods.
String type = getContentType();
- ContentHandler ch = setContentHandler(type);
+ ContentHandler ch = getContentHandler(type);
if (ch == null)
return getInputStream();
@@ -957,7 +966,7 @@ public abstract class URLConnection
fileNameMap = map;
}
- private ContentHandler setContentHandler(String contentType)
+ private ContentHandler getContentHandler(String contentType)
{
ContentHandler handler;
@@ -975,12 +984,17 @@ public abstract class URLConnection
else
return null;
- // If a non-default factory has been set, use it to find the content type.
+ // If a non-default factory has been set, use it.
if (factory != null)
handler = factory.createContentHandler(contentType);
- // Non-default factory may have returned null or a factory wasn't set.
- // Use the default search algorithm to find a handler for this content type.
+ // Now try default factory. Using this factory to instantiate built-in
+ // content handlers is preferable
+ if (handler == null)
+ handler = defaultFactory.createContentHandler(contentType);
+
+ // User-set factory has not returned a handler. Use the default search
+ // algorithm.
if (handler == null)
{
// Get the list of packages to check and append our default handler
@@ -989,7 +1003,7 @@ public abstract class URLConnection
// ever be needed (or available).
String propVal = System.getProperty("java.content.handler.pkgs");
propVal = (propVal == null) ? "" : (propVal + "|");
- propVal = propVal + "gnu.gcj.content|sun.net.www.content";
+ propVal = propVal + "gnu.java.net.content|sun.net.www.content";
// Replace the '/' character in the content type with '.' and
// all other non-alphabetic, non-numeric characters with '_'.
@@ -1040,17 +1054,18 @@ public abstract class URLConnection
// We don't put these in a static initializer, because it creates problems
// with initializer co-dependency: SimpleDateFormat's constructors eventually
// depend on URLConnection (via the java.text.*Symbols classes).
- private synchronized void initializeDateFormats()
+ private static synchronized void initializeDateFormats()
{
if (dateformats_initialized)
return;
Locale locale = new Locale("En", "Us", "Unix");
- dateFormat1 =
+ dateFormats = new SimpleDateFormat[3];
+ dateFormats[0] =
new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss 'GMT'", locale);
- dateFormat2 =
+ dateFormats[1] =
new SimpleDateFormat("EEEE, dd-MMM-yy hh:mm:ss 'GMT'", locale);
- dateFormat3 = new SimpleDateFormat("EEE MMM d hh:mm:ss yyyy", locale);
+ dateFormats[2] = new SimpleDateFormat("EEE MMM d hh:mm:ss yyyy", locale);
dateformats_initialized = true;
}
}
diff --git a/libjava/java/net/URLStreamHandler.java b/libjava/java/net/URLStreamHandler.java
index d224ff556e9..aca62612f66 100644
--- a/libjava/java/net/URLStreamHandler.java
+++ b/libjava/java/net/URLStreamHandler.java
@@ -1,5 +1,5 @@
/* URLStreamHandler.java -- Abstract superclass for all protocol handlers
- Copyright (C) 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -131,8 +131,12 @@ public abstract class URLStreamHandler
String query = null;
// On Windows we need to change \ to / for file URLs
- if (url.getProtocol().equals("file"))
- spec = spec.replace(File.separatorChar, '/');
+ char separator = File.separatorChar;
+ if (url.getProtocol().equals("file") && separator != '/')
+ {
+ file = file.replace(separator, '/');
+ spec = spec.replace(separator, '/');
+ }
if (spec.regionMatches(start, "//", 0, 2))
{
@@ -204,9 +208,11 @@ public abstract class URLStreamHandler
{
// Context is available, but only override it if there is a new file.
int lastSlash = file.lastIndexOf('/');
-
- file =
- file.substring(0, lastSlash) + '/' + spec.substring(start, end);
+ if (lastSlash < 0)
+ file = spec.substring(start, end);
+ else
+ file = (file.substring(0, lastSlash)
+ + '/' + spec.substring(start, end));
if (url.getProtocol().equals("file"))
{
@@ -216,7 +222,7 @@ public abstract class URLStreamHandler
{
boolean endsWithSlash = file.charAt(file.length() - 1) == '/';
file = new File(file).getCanonicalPath();
- file = file.replace(File.separatorChar, '/');
+ file = file.replace(separator, '/');
if (endsWithSlash && file.charAt(file.length() - 1) != '/')
file += '/';
}
diff --git a/libjava/java/nio/Buffer.java b/libjava/java/nio/Buffer.java
index c7f01b67116..e7173852be2 100644
--- a/libjava/java/nio/Buffer.java
+++ b/libjava/java/nio/Buffer.java
@@ -233,7 +233,7 @@ public abstract class Buffer
* Rewinds this buffer. The position is set to zero and the mark
* is discarded.
*
- * @this buffer
+ * @return this buffer
*/
public final Buffer rewind()
{
@@ -241,4 +241,115 @@ public abstract class Buffer
mark = -1;
return this;
}
+
+ /**
+ * Checks for underflow. This method is used internally to check
+ * whether a buffer has enough elements left to satisfy a read
+ * request.
+ *
+ * @exception BufferUnderflowException If there are no remaining
+ * elements in this buffer.
+ */
+ final void checkForUnderflow()
+ {
+ if (!hasRemaining())
+ throw new BufferUnderflowException();
+ }
+
+ /**
+ * Checks for underflow. This method is used internally to check
+ * whether a buffer has enough elements left to satisfy a read
+ * request for a given number of elements.
+ *
+ * @param length The length of a sequence of elements.
+ *
+ * @exception BufferUnderflowException If there are not enough
+ * remaining elements in this buffer.
+ */
+ final void checkForUnderflow(int length)
+ {
+ if (remaining() < length)
+ throw new BufferUnderflowException();
+ }
+
+ /**
+ * Checks for overflow. This method is used internally to check
+ * whether a buffer has enough space left to satisfy a write
+ * request.
+ *
+ * @exception BufferOverflowException If there is no remaining
+ * space in this buffer.
+ */
+ final void checkForOverflow()
+ {
+ if (!hasRemaining())
+ throw new BufferOverflowException();
+ }
+
+ /**
+ * Checks for overflow. This method is used internally to check
+ * whether a buffer has enough space left to satisfy a write
+ * request for a given number of elements.
+ *
+ * @param length The length of a sequence of elements.
+ *
+ * @exception BufferUnderflowException If there is not enough
+ * remaining space in this buffer.
+ */
+ final void checkForOverflow(int length)
+ {
+ if (remaining() < length)
+ throw new BufferOverflowException();
+ }
+
+ /**
+ * Checks if index is negative or not smaller than the buffer's
+ * limit. This method is used internally to check whether
+ * an indexed request can be fulfilled.
+ *
+ * @param index The requested position in the buffer.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ */
+ final void checkIndex(int index)
+ {
+ if (index < 0
+ || index >= limit ())
+ throw new IndexOutOfBoundsException ();
+ }
+
+ /**
+ * Checks if buffer is read-only. This method is used internally to
+ * check if elements can be put into a buffer.
+ *
+ * @exception ReadOnlyBufferException If this buffer is read-only.
+ */
+ final void checkIfReadOnly()
+ {
+ if (isReadOnly())
+ throw new ReadOnlyBufferException ();
+ }
+
+ /**
+ * Checks whether an array is large enough to hold the given number of
+ * elements at the given offset. This method is used internally to
+ * check if an array is big enough.
+ *
+ * @param arraylength The length of the array.
+ * @param offset The offset within the array of the first byte to be read;
+ * must be non-negative and no larger than arraylength.
+ * @param length The number of bytes to be read from the given array;
+ * must be non-negative and no larger than arraylength - offset.
+ *
+ * @exception IndexOutOfBoundsException If the preconditions on the offset
+ * and length parameters do not hold
+ */
+ final static void checkArraySize(int arraylength, int offset, int length)
+ {
+ if ((offset < 0) ||
+ (length < 0) ||
+ (arraylength < length + offset))
+ throw new IndexOutOfBoundsException ();
+ }
}
diff --git a/libjava/java/nio/ByteBuffer.java b/libjava/java/nio/ByteBuffer.java
index 8b43da57910..34e3db9b7c7 100644
--- a/libjava/java/nio/ByteBuffer.java
+++ b/libjava/java/nio/ByteBuffer.java
@@ -100,8 +100,9 @@ public abstract class ByteBuffer extends Buffer
}
/**
- * This method transfers <code>bytes<code> from this buffer into the given
- * destination array.
+ * This method transfers <code>byte</code>s from this buffer into the given
+ * destination array. Before the transfer, it checks if there are fewer than
+ * length <code>byte</code>s remaining in this buffer.
*
* @param dst The destination array
* @param offset The offset within the array of the first <code>byte</code>
@@ -110,16 +111,14 @@ public abstract class ByteBuffer extends Buffer
* must be non-negative and no larger than dst.length - offset.
*
* @exception BufferUnderflowException If there are fewer than length
- * <code>bytes</code> remaining in this buffer.
+ * <code>byte</code>s remaining in this buffer.
* @exception IndexOutOfBoundsException If the preconditions on the offset
* and length parameters do not hold.
*/
public ByteBuffer get (byte[] dst, int offset, int length)
{
- if (offset < 0 || length < 0 || offset + length > dst.length)
- throw new IndexOutOfBoundsException ();
- if (length > remaining())
- throw new BufferUnderflowException();
+ checkArraySize(dst.length, offset, length);
+ checkForUnderflow(length);
for (int i = offset; i < offset + length; i++)
{
@@ -130,13 +129,13 @@ public abstract class ByteBuffer extends Buffer
}
/**
- * This method transfers <code>bytes<code> from this buffer into the given
+ * This method transfers <code>byte</code>s from this buffer into the given
* destination array.
*
* @param dst The byte array to write into.
*
* @exception BufferUnderflowException If there are fewer than dst.length
- * <code>bytes</code> remaining in this buffer.
+ * <code>byte</code>s remaining in this buffer.
*/
public ByteBuffer get (byte[] dst)
{
@@ -145,12 +144,13 @@ public abstract class ByteBuffer extends Buffer
/**
* Writes the content of the the <code>ByteBUFFER</code> src
- * into the buffer.
+ * into the buffer. Before the transfer, it checks if there is fewer than
+ * <code>src.remaining()</code> space remaining in this buffer.
*
* @param src The source data.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>bytes<code> in the source buffer.
+ * buffer for the remaining <code>byte</code>s in the source buffer.
* @exception IllegalArgumentException If the source buffer is this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
@@ -159,8 +159,7 @@ public abstract class ByteBuffer extends Buffer
if (src == this)
throw new IllegalArgumentException ();
- if (src.remaining () > remaining ())
- throw new BufferOverflowException ();
+ checkForOverflow(src.remaining());
if (src.remaining () > 0)
{
@@ -174,7 +173,8 @@ public abstract class ByteBuffer extends Buffer
/**
* Writes the content of the the <code>byte array</code> src
- * into the buffer.
+ * into the buffer. Before the transfer, it checks if there is fewer than
+ * length space remaining in this buffer.
*
* @param src The array to copy into the buffer.
* @param offset The offset within the array of the first byte to be read;
@@ -183,18 +183,15 @@ public abstract class ByteBuffer extends Buffer
* must be non-negative and no larger than src.length - offset.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>bytes<code> in the source array.
+ * buffer for the remaining <code>byte</code>s in the source array.
* @exception IndexOutOfBoundsException If the preconditions on the offset
* and length parameters do not hold
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public ByteBuffer put (byte[] src, int offset, int length)
{
- if ((offset < 0) ||
- (offset > src.length) ||
- (length < 0) ||
- (length > src.length - offset))
- throw new IndexOutOfBoundsException ();
+ checkArraySize(src.length, offset, length);
+ checkForOverflow(length);
for (int i = offset; i < offset + length; i++)
put (src [i]);
@@ -209,7 +206,7 @@ public abstract class ByteBuffer extends Buffer
* @param src The array to copy into the buffer.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>bytes<code> in the source array.
+ * buffer for the remaining <code>byte</code>s in the source array.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public final ByteBuffer put (byte[] src)
@@ -239,8 +236,7 @@ public abstract class ByteBuffer extends Buffer
if (backing_buffer == null)
throw new UnsupportedOperationException ();
- if (isReadOnly ())
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
return backing_buffer;
}
@@ -257,8 +253,7 @@ public abstract class ByteBuffer extends Buffer
if (backing_buffer == null)
throw new UnsupportedOperationException ();
- if (isReadOnly ())
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
return array_offset;
}
@@ -338,7 +333,7 @@ public abstract class ByteBuffer extends Buffer
* and then increments the position.
*
* @exception BufferUnderflowException If there are no remaining
- * <code>bytes</code> in this buffer.
+ * <code>byte</code>s in this buffer.
*/
public abstract byte get ();
@@ -347,7 +342,7 @@ public abstract class ByteBuffer extends Buffer
* and then increments the position.
*
* @exception BufferOverflowException If there no remaining
- * <code>bytes</code> in this buffer.
+ * <code>byte</code>s in this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public abstract ByteBuffer put (byte b);
diff --git a/libjava/java/nio/ByteBufferHelper.java b/libjava/java/nio/ByteBufferHelper.java
index c3dcfbe4f2f..e5c522acd4d 100644
--- a/libjava/java/nio/ByteBufferHelper.java
+++ b/libjava/java/nio/ByteBufferHelper.java
@@ -42,32 +42,6 @@ package java.nio;
*/
final class ByteBufferHelper
{
- private static void checkRemainingForRead (ByteBuffer buffer, int bytes)
- {
- if (buffer.remaining() < bytes)
- throw new BufferUnderflowException();
- }
-
- private static void checkRemainingForWrite (ByteBuffer buffer, int bytes)
- {
- if (buffer.remaining() < bytes)
- throw new BufferOverflowException();
- }
-
- private static void checkAvailableForRead (ByteBuffer buffer,
- int index, int bytes)
- {
- if (buffer.limit() < (index + bytes))
- throw new BufferUnderflowException();
- }
-
- private static void checkAvailableForWrite (ByteBuffer buffer,
- int index, int bytes)
- {
- if (buffer.limit() < (index + bytes))
- throw new BufferOverflowException();
- }
-
public static char getChar (ByteBuffer buffer, ByteOrder order)
{
return (char) getShort (buffer, order);
@@ -91,7 +65,7 @@ final class ByteBufferHelper
public static short getShort (ByteBuffer buffer, ByteOrder order)
{
- checkRemainingForRead (buffer, 2);
+ buffer.checkForUnderflow(2);
if (order == ByteOrder.LITTLE_ENDIAN)
{
@@ -105,7 +79,7 @@ final class ByteBufferHelper
public static void putShort (ByteBuffer buffer, short value, ByteOrder order)
{
- checkRemainingForWrite (buffer, 2);
+ buffer.checkForOverflow(2);
if (order == ByteOrder.LITTLE_ENDIAN)
{
@@ -122,8 +96,6 @@ final class ByteBufferHelper
public static short getShort (ByteBuffer buffer,
int index, ByteOrder order)
{
- checkAvailableForRead (buffer, index, 2);
-
if (order == ByteOrder.LITTLE_ENDIAN)
{
return (short) ((buffer.get (index) & 0xff)
@@ -137,8 +109,6 @@ final class ByteBufferHelper
public static void putShort (ByteBuffer buffer, int index,
short value, ByteOrder order)
{
- checkAvailableForWrite (buffer, index, 2);
-
if (order == ByteOrder.LITTLE_ENDIAN)
{
buffer.put (index, (byte) value);
@@ -153,7 +123,7 @@ final class ByteBufferHelper
public static int getInt (ByteBuffer buffer, ByteOrder order)
{
- checkRemainingForRead (buffer, 4);
+ buffer.checkForUnderflow(4);
if (order == ByteOrder.LITTLE_ENDIAN)
{
@@ -171,7 +141,7 @@ final class ByteBufferHelper
public static void putInt (ByteBuffer buffer, int value, ByteOrder order)
{
- checkRemainingForWrite (buffer, 4);
+ buffer.checkForOverflow(4);
if (order == ByteOrder.LITTLE_ENDIAN)
{
@@ -191,8 +161,6 @@ final class ByteBufferHelper
public static int getInt (ByteBuffer buffer, int index, ByteOrder order)
{
- checkAvailableForRead (buffer, index, 4);
-
if (order == ByteOrder.LITTLE_ENDIAN)
{
return ((buffer.get (index) & 0xff)
@@ -210,8 +178,6 @@ final class ByteBufferHelper
public static void putInt (ByteBuffer buffer, int index,
int value, ByteOrder order)
{
- checkAvailableForWrite (buffer, index, 4);
-
if (order == ByteOrder.LITTLE_ENDIAN)
{
buffer.put (index, (byte) value);
@@ -230,7 +196,7 @@ final class ByteBufferHelper
public static long getLong (ByteBuffer buffer, ByteOrder order)
{
- checkRemainingForRead (buffer, 8);
+ buffer.checkForUnderflow(8);
if (order == ByteOrder.LITTLE_ENDIAN)
{
@@ -256,7 +222,7 @@ final class ByteBufferHelper
public static void putLong (ByteBuffer buffer, long value, ByteOrder order)
{
- checkRemainingForWrite (buffer, 8);
+ buffer.checkForOverflow(8);
if (order == ByteOrder.LITTLE_ENDIAN)
{
@@ -284,8 +250,6 @@ final class ByteBufferHelper
public static long getLong (ByteBuffer buffer, int index, ByteOrder order)
{
- checkAvailableForRead (buffer, index, 8);
-
if (order == ByteOrder.LITTLE_ENDIAN)
{
return ((buffer.get (index) & 0xff)
@@ -311,8 +275,6 @@ final class ByteBufferHelper
public static void putLong (ByteBuffer buffer, int index,
long value, ByteOrder order)
{
- checkAvailableForWrite (buffer, index, 8);
-
if (order == ByteOrder.LITTLE_ENDIAN)
{
buffer.put (index, (byte) value);
diff --git a/libjava/java/nio/ByteBufferImpl.java b/libjava/java/nio/ByteBufferImpl.java
index f79ae630acb..7734dbf12cd 100644
--- a/libjava/java/nio/ByteBufferImpl.java
+++ b/libjava/java/nio/ByteBufferImpl.java
@@ -129,10 +129,16 @@ final class ByteBufferImpl extends ByteBuffer
}
/**
- * Relative get method. Reads the next <code>byte</code> from the buffer.
+ * Reads the <code>byte</code> at this buffer's current position,
+ * and then increments the position.
+ *
+ * @exception BufferUnderflowException If there are no remaining
+ * <code>bytes</code> in this buffer.
*/
public byte get ()
{
+ checkForUnderflow();
+
byte result = backing_buffer [position () + array_offset];
position (position () + 1);
return result;
@@ -141,13 +147,15 @@ final class ByteBufferImpl extends ByteBuffer
/**
* Relative put method. Writes <code>value</code> to the next position
* in the buffer.
- *
+ *
+ * @exception BufferOverflowException If there is no remaining
+ * space in this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public ByteBuffer put (byte value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
+ checkForOverflow();
int pos = position();
backing_buffer [pos + array_offset] = value;
@@ -164,6 +172,8 @@ final class ByteBufferImpl extends ByteBuffer
*/
public byte get (int index)
{
+ checkIndex(index);
+
return backing_buffer [index + array_offset];
}
@@ -177,9 +187,9 @@ final class ByteBufferImpl extends ByteBuffer
*/
public ByteBuffer put (int index, byte value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
+ checkIfReadOnly();
+ checkIndex(index);
+
backing_buffer [index + array_offset] = value;
return this;
}
diff --git a/libjava/java/nio/ByteOrder.java b/libjava/java/nio/ByteOrder.java
index ad0b09ec56e..671336af8dc 100644
--- a/libjava/java/nio/ByteOrder.java
+++ b/libjava/java/nio/ByteOrder.java
@@ -46,22 +46,13 @@ import gnu.classpath.Configuration;
*/
public final class ByteOrder
{
- public static final ByteOrder BIG_ENDIAN = new ByteOrder();
+ public static final ByteOrder BIG_ENDIAN = new ByteOrder();
public static final ByteOrder LITTLE_ENDIAN = new ByteOrder();
- static
- {
- // load the shared library needed for native methods.
- if (Configuration.INIT_LOAD_LIBRARY)
- {
- System.loadLibrary ("javanio");
- }
- }
-
/**
* Returns the native byte order of the platform currently running.
*/
- public static ByteOrder nativeOrder ()
+ public static ByteOrder nativeOrder()
{
return (System.getProperty ("gnu.cpu.endian").equals("big")
? BIG_ENDIAN : LITTLE_ENDIAN);
@@ -76,7 +67,7 @@ public final class ByteOrder
}
// This class can only be instantiated here.
- private ByteOrder ()
+ private ByteOrder()
{
}
}
diff --git a/libjava/java/nio/CharBuffer.java b/libjava/java/nio/CharBuffer.java
index 5116c254811..e33c5651188 100644
--- a/libjava/java/nio/CharBuffer.java
+++ b/libjava/java/nio/CharBuffer.java
@@ -137,8 +137,9 @@ public abstract class CharBuffer extends Buffer
}
/**
- * This method transfers <code>chars<code> from this buffer into the given
- * destination array.
+ * This method transfers <code>char</code>s from this buffer into the given
+ * destination array. Before the transfer, it checks if there are fewer than
+ * length <code>char</code>s remaining in this buffer.
*
* @param dst The destination array
* @param offset The offset within the array of the first <code>char</code>
@@ -147,12 +148,15 @@ public abstract class CharBuffer extends Buffer
* must be non-negative and no larger than dst.length - offset.
*
* @exception BufferUnderflowException If there are fewer than length
- * <code>chars</code> remaining in this buffer.
+ * <code>char</code>s remaining in this buffer.
* @exception IndexOutOfBoundsException If the preconditions on the offset
* and length parameters do not hold.
*/
public CharBuffer get (char[] dst, int offset, int length)
{
+ checkArraySize(dst.length, offset, length);
+ checkForUnderflow(length);
+
for (int i = offset; i < offset + length; i++)
{
dst [i] = get ();
@@ -162,13 +166,13 @@ public abstract class CharBuffer extends Buffer
}
/**
- * This method transfers <code>chars<code> from this buffer into the given
+ * This method transfers <code>char</code>s from this buffer into the given
* destination array.
*
* @param dst The byte array to write into.
*
* @exception BufferUnderflowException If there are fewer than dst.length
- * <code>chars</code> remaining in this buffer.
+ * <code>char</code>s remaining in this buffer.
*/
public CharBuffer get (char[] dst)
{
@@ -177,12 +181,13 @@ public abstract class CharBuffer extends Buffer
/**
* Writes the content of the the <code>CharBUFFER</code> src
- * into the buffer.
+ * into the buffer. Before the transfer, it checks if there is fewer than
+ * <code>src.remaining()</code> space remaining in this buffer.
*
* @param src The source data.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>chars<code> in the source buffer.
+ * buffer for the remaining <code>char</code>s in the source buffer.
* @exception IllegalArgumentException If the source buffer is this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
@@ -191,8 +196,7 @@ public abstract class CharBuffer extends Buffer
if (src == this)
throw new IllegalArgumentException ();
- if (src.remaining () > remaining ())
- throw new BufferOverflowException ();
+ checkForOverflow(src.remaining());
if (src.remaining () > 0)
{
@@ -206,7 +210,8 @@ public abstract class CharBuffer extends Buffer
/**
* Writes the content of the the <code>char array</code> src
- * into the buffer.
+ * into the buffer. Before the transfer, it checks if there is fewer than
+ * length space remaining in this buffer.
*
* @param src The array to copy into the buffer.
* @param offset The offset within the array of the first byte to be read;
@@ -215,22 +220,15 @@ public abstract class CharBuffer extends Buffer
* must be non-negative and no larger than src.length - offset.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>chars<code> in the source array.
+ * buffer for the remaining <code>char</code>s in the source array.
* @exception IndexOutOfBoundsException If the preconditions on the offset
* and length parameters do not hold
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public CharBuffer put (char[] src, int offset, int length)
{
- if (offset < 0
- || offset >= src.length
- || length < 0
- || length > (src.length - offset))
- throw new IndexOutOfBoundsException ();
-
- // Put nothing into this buffer when not enough space left.
- if (length > remaining ())
- throw new BufferOverflowException ();
+ checkArraySize(src.length, offset, length);
+ checkForOverflow(length);
for (int i = offset; i < offset + length; i++)
put (src [i]);
@@ -245,7 +243,7 @@ public abstract class CharBuffer extends Buffer
* @param src The array to copy into the buffer.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>chars<code> in the source array.
+ * buffer for the remaining <code>char</code>s in the source array.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public final CharBuffer put (char[] src)
@@ -275,9 +273,8 @@ public abstract class CharBuffer extends Buffer
if (backing_buffer == null)
throw new UnsupportedOperationException ();
- if (isReadOnly ())
- throw new ReadOnlyBufferException ();
-
+ checkIfReadOnly();
+
return backing_buffer;
}
@@ -293,8 +290,7 @@ public abstract class CharBuffer extends Buffer
if (backing_buffer == null)
throw new UnsupportedOperationException ();
- if (isReadOnly ())
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
return array_offset;
}
@@ -362,7 +358,7 @@ public abstract class CharBuffer extends Buffer
* and then increments the position.
*
* @exception BufferUnderflowException If there are no remaining
- * <code>chars</code> in this buffer.
+ * <code>char</code>s in this buffer.
*/
public abstract char get ();
@@ -371,7 +367,7 @@ public abstract class CharBuffer extends Buffer
* and then increments the position.
*
* @exception BufferOverflowException If there no remaining
- * <code>chars</code> in this buffer.
+ * <code>char</code>s in this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public abstract CharBuffer put (char b);
diff --git a/libjava/java/nio/CharBufferImpl.java b/libjava/java/nio/CharBufferImpl.java
index 1a8dff1d07c..2ca44d94459 100644
--- a/libjava/java/nio/CharBufferImpl.java
+++ b/libjava/java/nio/CharBufferImpl.java
@@ -1,5 +1,5 @@
/* CharBufferImpl.java --
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -116,10 +116,16 @@ final class CharBufferImpl extends CharBuffer
}
/**
- * Relative get method. Reads the next <code>char</code> from the buffer.
+ * Reads the <code>char</code> at this buffer's current position,
+ * and then increments the position.
+ *
+ * @exception BufferUnderflowException If there are no remaining
+ * <code>char</code>s in this buffer.
*/
public char get ()
{
+ checkForUnderflow();
+
char result = backing_buffer [position ()];
position (position () + 1);
return result;
@@ -133,8 +139,7 @@ final class CharBufferImpl extends CharBuffer
*/
public CharBuffer put (char value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
backing_buffer [position ()] = value;
position (position () + 1);
@@ -145,20 +150,20 @@ final class CharBufferImpl extends CharBuffer
* Absolute get method. Reads the <code>char</code> at position
* <code>index</code>.
*
+ * @param index Position to read the <code>char</code> from.
+ *
* @exception IndexOutOfBoundsException If index is negative or not smaller
* than the buffer's limit.
*/
public char get (int index)
{
- if (index < 0
- || index >= limit ())
- throw new IndexOutOfBoundsException ();
+ checkIndex(index);
return backing_buffer [index];
}
/**
- * Absolute put method. Writes <code>value</value> to position
+ * Absolute put method. Writes <code>value</code> to position
* <code>index</code> in the buffer.
*
* @exception IndexOutOfBoundsException If index is negative or not smaller
@@ -167,12 +172,8 @@ final class CharBufferImpl extends CharBuffer
*/
public CharBuffer put (int index, char value)
{
- if (index < 0
- || index >= limit ())
- throw new IndexOutOfBoundsException ();
-
- if (readOnly)
- throw new ReadOnlyBufferException ();
+ checkIndex(index);
+ checkIfReadOnly();
backing_buffer [index] = value;
return this;
diff --git a/libjava/java/nio/CharViewBufferImpl.java b/libjava/java/nio/CharViewBufferImpl.java
index ee99cfbe069..3c02108debc 100644
--- a/libjava/java/nio/CharViewBufferImpl.java
+++ b/libjava/java/nio/CharViewBufferImpl.java
@@ -66,6 +66,13 @@ class CharViewBufferImpl extends CharBuffer
this.endian = endian;
}
+ /**
+ * Reads the <code>char</code> at this buffer's current position,
+ * and then increments the position.
+ *
+ * @exception BufferUnderflowException If there are no remaining
+ * <code>char</code>s in this buffer.
+ */
public char get ()
{
int p = position();
@@ -74,6 +81,15 @@ class CharViewBufferImpl extends CharBuffer
return result;
}
+ /**
+ * Absolute get method. Reads the <code>char</code> at position
+ * <code>index</code>.
+ *
+ * @param index Position to read the <code>char</code> from.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ */
public char get (int index)
{
return ByteBufferHelper.getChar(bb, (index << 1) + offset, endian);
diff --git a/libjava/java/nio/DirectByteBufferImpl.java b/libjava/java/nio/DirectByteBufferImpl.java
index be0fc52c07d..aad5dca1e5d 100644
--- a/libjava/java/nio/DirectByteBufferImpl.java
+++ b/libjava/java/nio/DirectByteBufferImpl.java
@@ -86,9 +86,9 @@ final class DirectByteBufferImpl extends ByteBuffer
public byte get ()
{
+ checkForUnderflow();
+
int pos = position();
- if (pos >= limit())
- throw new BufferUnderflowException();
byte result = getImpl (address, pos);
position (pos + 1);
return result;
@@ -96,8 +96,8 @@ final class DirectByteBufferImpl extends ByteBuffer
public byte get (int index)
{
- if (index >= limit())
- throw new BufferUnderflowException();
+ checkIndex(index);
+
return getImpl (address, index);
}
@@ -106,10 +106,8 @@ final class DirectByteBufferImpl extends ByteBuffer
public ByteBuffer get (byte[] dst, int offset, int length)
{
- if (offset < 0 || length < 0 || offset + length > dst.length)
- throw new IndexOutOfBoundsException ();
- if (length > remaining())
- throw new BufferUnderflowException();
+ checkArraySize(dst.length, offset, length);
+ checkForUnderflow(length);
int index = position();
getImpl(address, index, dst, offset, length);
@@ -120,9 +118,10 @@ final class DirectByteBufferImpl extends ByteBuffer
public ByteBuffer put (byte value)
{
+ checkIfReadOnly();
+ checkForOverflow();
+
int pos = position();
- if (pos >= limit())
- throw new BufferUnderflowException();
putImpl (address, pos, value);
position (pos + 1);
return this;
@@ -130,8 +129,9 @@ final class DirectByteBufferImpl extends ByteBuffer
public ByteBuffer put (int index, byte value)
{
- if (index >= limit())
- throw new BufferUnderflowException();
+ checkIfReadOnly();
+ checkIndex(index);
+
putImpl (address, index, value);
return this;
}
diff --git a/libjava/java/nio/DoubleBuffer.java b/libjava/java/nio/DoubleBuffer.java
index 1ad8baede02..820016b8308 100644
--- a/libjava/java/nio/DoubleBuffer.java
+++ b/libjava/java/nio/DoubleBuffer.java
@@ -83,8 +83,9 @@ public abstract class DoubleBuffer extends Buffer
}
/**
- * This method transfers <code>doubles<code> from this buffer into the given
- * destination array.
+ * This method transfers <code>double</code>s from this buffer into the given
+ * destination array. Before the transfer, it checks if there are fewer than
+ * length <code>double</code>s remaining in this buffer.
*
* @param dst The destination array
* @param offset The offset within the array of the first <code>double</code>
@@ -93,12 +94,15 @@ public abstract class DoubleBuffer extends Buffer
* must be non-negative and no larger than dst.length - offset.
*
* @exception BufferUnderflowException If there are fewer than length
- * <code>doubles</code> remaining in this buffer.
+ * <code>double</code>s remaining in this buffer.
* @exception IndexOutOfBoundsException If the preconditions on the offset
* and length parameters do not hold.
*/
public DoubleBuffer get (double[] dst, int offset, int length)
{
+ checkArraySize(dst.length, offset, length);
+ checkForUnderflow(length);
+
for (int i = offset; i < offset + length; i++)
{
dst [i] = get ();
@@ -108,13 +112,13 @@ public abstract class DoubleBuffer extends Buffer
}
/**
- * This method transfers <code>doubles<code> from this buffer into the given
+ * This method transfers <code>double</code>s from this buffer into the given
* destination array.
*
* @param dst The byte array to write into.
*
* @exception BufferUnderflowException If there are fewer than dst.length
- * <code>doubles</code> remaining in this buffer.
+ * <code>double</code>s remaining in this buffer.
*/
public DoubleBuffer get (double[] dst)
{
@@ -123,12 +127,13 @@ public abstract class DoubleBuffer extends Buffer
/**
* Writes the content of the the <code>DoubleBUFFER</code> src
- * into the buffer.
+ * into the buffer. Before the transfer, it checks if there is fewer than
+ * <code>src.remaining()</code> space remaining in this buffer.
*
* @param src The source data.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>doubles<code> in the source buffer.
+ * buffer for the remaining <code>double</code>s in the source buffer.
* @exception IllegalArgumentException If the source buffer is this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
@@ -137,8 +142,7 @@ public abstract class DoubleBuffer extends Buffer
if (src == this)
throw new IllegalArgumentException ();
- if (src.remaining () > remaining ())
- throw new BufferOverflowException ();
+ checkForOverflow(src.remaining ());
if (src.remaining () > 0)
{
@@ -152,7 +156,8 @@ public abstract class DoubleBuffer extends Buffer
/**
* Writes the content of the the <code>double array</code> src
- * into the buffer.
+ * into the buffer. Before the transfer, it checks if there is fewer than
+ * length space remaining in this buffer.
*
* @param src The array to copy into the buffer.
* @param offset The offset within the array of the first byte to be read;
@@ -161,13 +166,16 @@ public abstract class DoubleBuffer extends Buffer
* must be non-negative and no larger than src.length - offset.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>doubles<code> in the source array.
+ * buffer for the remaining <code>double</code>s in the source array.
* @exception IndexOutOfBoundsException If the preconditions on the offset
* and length parameters do not hold
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public DoubleBuffer put (double[] src, int offset, int length)
{
+ checkArraySize(src.length, offset, length);
+ checkForOverflow(length);
+
for (int i = offset; i < offset + length; i++)
put (src [i]);
@@ -181,7 +189,7 @@ public abstract class DoubleBuffer extends Buffer
* @param src The array to copy into the buffer.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>doubles<code> in the source array.
+ * buffer for the remaining <code>double</code>s in the source array.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public final DoubleBuffer put (double[] src)
@@ -211,8 +219,7 @@ public abstract class DoubleBuffer extends Buffer
if (backing_buffer == null)
throw new UnsupportedOperationException ();
- if (isReadOnly ())
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
return backing_buffer;
}
@@ -229,8 +236,7 @@ public abstract class DoubleBuffer extends Buffer
if (backing_buffer == null)
throw new UnsupportedOperationException ();
- if (isReadOnly ())
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
return array_offset;
}
@@ -298,7 +304,7 @@ public abstract class DoubleBuffer extends Buffer
* and then increments the position.
*
* @exception BufferUnderflowException If there are no remaining
- * <code>doubles</code> in this buffer.
+ * <code>double</code>s in this buffer.
*/
public abstract double get ();
@@ -307,7 +313,7 @@ public abstract class DoubleBuffer extends Buffer
* and then increments the position.
*
* @exception BufferOverflowException If there no remaining
- * <code>doubles</code> in this buffer.
+ * <code>double</code>s in this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public abstract DoubleBuffer put (double b);
diff --git a/libjava/java/nio/DoubleBufferImpl.java b/libjava/java/nio/DoubleBufferImpl.java
index 81fde6db6e6..504ee8d61b0 100644
--- a/libjava/java/nio/DoubleBufferImpl.java
+++ b/libjava/java/nio/DoubleBufferImpl.java
@@ -1,5 +1,5 @@
/* DoubleBufferImpl.java --
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -98,10 +98,16 @@ final class DoubleBufferImpl extends DoubleBuffer
}
/**
- * Relative get method. Reads the next <code>double</code> from the buffer.
+ * Reads the <code>double</code> at this buffer's current position,
+ * and then increments the position.
+ *
+ * @exception BufferUnderflowException If there are no remaining
+ * <code>double</code>s in this buffer.
*/
public double get ()
{
+ checkForUnderflow();
+
double result = backing_buffer [position ()];
position (position () + 1);
return result;
@@ -110,13 +116,15 @@ final class DoubleBufferImpl extends DoubleBuffer
/**
* Relative put method. Writes <code>value</code> to the next position
* in the buffer.
- *
+ *
+ * @exception BufferOverflowException If there no remaining
+ * space in this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public DoubleBuffer put (double value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
+ checkForOverflow();
backing_buffer [position ()] = value;
position (position () + 1);
@@ -132,6 +140,8 @@ final class DoubleBufferImpl extends DoubleBuffer
*/
public double get (int index)
{
+ checkIndex(index);
+
return backing_buffer [index];
}
@@ -145,9 +155,9 @@ final class DoubleBufferImpl extends DoubleBuffer
*/
public DoubleBuffer put (int index, double value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
+ checkIfReadOnly();
+ checkIndex(index);
+
backing_buffer [index] = value;
return this;
}
diff --git a/libjava/java/nio/DoubleViewBufferImpl.java b/libjava/java/nio/DoubleViewBufferImpl.java
index 7b04e4ca108..d23b14ab472 100644
--- a/libjava/java/nio/DoubleViewBufferImpl.java
+++ b/libjava/java/nio/DoubleViewBufferImpl.java
@@ -66,6 +66,13 @@ final class DoubleViewBufferImpl extends DoubleBuffer
this.endian = endian;
}
+ /**
+ * Reads the <code>double</code> at this buffer's current position,
+ * and then increments the position.
+ *
+ * @exception BufferUnderflowException If there are no remaining
+ * <code>double</code>s in this buffer.
+ */
public double get ()
{
int p = position();
@@ -74,6 +81,13 @@ final class DoubleViewBufferImpl extends DoubleBuffer
return result;
}
+ /**
+ * Absolute get method. Reads the <code>double</code> at position
+ * <code>index</code>.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ */
public double get (int index)
{
return ByteBufferHelper.getDouble(bb, (index << 3) + offset, endian);
diff --git a/libjava/java/nio/FloatBuffer.java b/libjava/java/nio/FloatBuffer.java
index ab87b7f898f..2425f0c71d6 100644
--- a/libjava/java/nio/FloatBuffer.java
+++ b/libjava/java/nio/FloatBuffer.java
@@ -83,8 +83,9 @@ public abstract class FloatBuffer extends Buffer
}
/**
- * This method transfers <code>floats<code> from this buffer into the given
- * destination array.
+ * This method transfers <code>float</code>s from this buffer into the given
+ * destination array. Before the transfer, it checks if there are fewer than
+ * length <code>float</code>s remaining in this buffer.
*
* @param dst The destination array
* @param offset The offset within the array of the first <code>float</code>
@@ -93,12 +94,15 @@ public abstract class FloatBuffer extends Buffer
* must be non-negative and no larger than dst.length - offset.
*
* @exception BufferUnderflowException If there are fewer than length
- * <code>floats</code> remaining in this buffer.
+ * <code>float</code>s remaining in this buffer.
* @exception IndexOutOfBoundsException If the preconditions on the offset
* and length parameters do not hold.
*/
public FloatBuffer get (float[] dst, int offset, int length)
{
+ checkArraySize(dst.length, offset, length);
+ checkForUnderflow(length);
+
for (int i = offset; i < offset + length; i++)
{
dst [i] = get ();
@@ -108,13 +112,13 @@ public abstract class FloatBuffer extends Buffer
}
/**
- * This method transfers <code>floats<code> from this buffer into the given
+ * This method transfers <code>float</code>s from this buffer into the given
* destination array.
*
* @param dst The byte array to write into.
*
* @exception BufferUnderflowException If there are fewer than dst.length
- * <code>floats</code> remaining in this buffer.
+ * <code>float</code>s remaining in this buffer.
*/
public FloatBuffer get (float[] dst)
{
@@ -123,12 +127,13 @@ public abstract class FloatBuffer extends Buffer
/**
* Writes the content of the the <code>FloatBUFFER</code> src
- * into the buffer.
+ * into the buffer. Before the transfer, it checks if there is fewer than
+ * <code>src.remaining()</code> space remaining in this buffer.
*
* @param src The source data.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>floats<code> in the source buffer.
+ * buffer for the remaining <code>float</code>s in the source buffer.
* @exception IllegalArgumentException If the source buffer is this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
@@ -137,8 +142,7 @@ public abstract class FloatBuffer extends Buffer
if (src == this)
throw new IllegalArgumentException ();
- if (src.remaining () > remaining ())
- throw new BufferOverflowException ();
+ checkForOverflow(src.remaining());
if (src.remaining () > 0)
{
@@ -152,7 +156,8 @@ public abstract class FloatBuffer extends Buffer
/**
* Writes the content of the the <code>float array</code> src
- * into the buffer.
+ * into the buffer. Before the transfer, it checks if there is fewer than
+ * length space remaining in this buffer.
*
* @param src The array to copy into the buffer.
* @param offset The offset within the array of the first byte to be read;
@@ -161,13 +166,16 @@ public abstract class FloatBuffer extends Buffer
* must be non-negative and no larger than src.length - offset.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>floats<code> in the source array.
+ * buffer for the remaining <code>float</code>s in the source array.
* @exception IndexOutOfBoundsException If the preconditions on the offset
* and length parameters do not hold
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public FloatBuffer put (float[] src, int offset, int length)
{
+ checkArraySize(src.length, offset, length);
+ checkForOverflow(length);
+
for (int i = offset; i < offset + length; i++)
put (src [i]);
@@ -181,7 +189,7 @@ public abstract class FloatBuffer extends Buffer
* @param src The array to copy into the buffer.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>floats<code> in the source array.
+ * buffer for the remaining <code>float</code>s in the source array.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public final FloatBuffer put (float[] src)
@@ -211,8 +219,7 @@ public abstract class FloatBuffer extends Buffer
if (backing_buffer == null)
throw new UnsupportedOperationException ();
- if (isReadOnly ())
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
return backing_buffer;
}
@@ -229,8 +236,7 @@ public abstract class FloatBuffer extends Buffer
if (backing_buffer == null)
throw new UnsupportedOperationException ();
- if (isReadOnly ())
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
return array_offset;
}
@@ -298,7 +304,7 @@ public abstract class FloatBuffer extends Buffer
* and then increments the position.
*
* @exception BufferUnderflowException If there are no remaining
- * <code>floats</code> in this buffer.
+ * <code>float</code>s in this buffer.
*/
public abstract float get ();
@@ -307,7 +313,7 @@ public abstract class FloatBuffer extends Buffer
* and then increments the position.
*
* @exception BufferOverflowException If there no remaining
- * <code>floats</code> in this buffer.
+ * <code>float</code>s in this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public abstract FloatBuffer put (float b);
diff --git a/libjava/java/nio/FloatBufferImpl.java b/libjava/java/nio/FloatBufferImpl.java
index 47479845da6..a9eb7c1de8a 100644
--- a/libjava/java/nio/FloatBufferImpl.java
+++ b/libjava/java/nio/FloatBufferImpl.java
@@ -1,5 +1,5 @@
/* FloatBufferImpl.java --
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -98,10 +98,16 @@ final class FloatBufferImpl extends FloatBuffer
}
/**
- * Relative get method. Reads the next <code>float</code> from the buffer.
+ * Reads the <code>float</code> at this buffer's current position,
+ * and then increments the position.
+ *
+ * @exception BufferUnderflowException If there are no remaining
+ * <code>floats</code> in this buffer.
*/
public float get ()
{
+ checkForUnderflow();
+
float result = backing_buffer [position ()];
position (position () + 1);
return result;
@@ -111,13 +117,15 @@ final class FloatBufferImpl extends FloatBuffer
* Relative put method. Writes <code>value</code> to the next position
* in the buffer.
*
+ * @exception BufferOverflowException If there no remaining
+ * space in this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public FloatBuffer put (float value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
+ checkIfReadOnly();
+ checkForOverflow();
+
backing_buffer [position ()] = value;
position (position () + 1);
return this;
@@ -132,6 +140,8 @@ final class FloatBufferImpl extends FloatBuffer
*/
public float get (int index)
{
+ checkIndex(index);
+
return backing_buffer [index];
}
@@ -145,9 +155,9 @@ final class FloatBufferImpl extends FloatBuffer
*/
public FloatBuffer put (int index, float value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
+ checkIfReadOnly();
+ checkIndex(index);
+
backing_buffer [index] = value;
return this;
}
diff --git a/libjava/java/nio/FloatViewBufferImpl.java b/libjava/java/nio/FloatViewBufferImpl.java
index 08c59097d37..40b7339dd4e 100644
--- a/libjava/java/nio/FloatViewBufferImpl.java
+++ b/libjava/java/nio/FloatViewBufferImpl.java
@@ -66,6 +66,13 @@ final class FloatViewBufferImpl extends FloatBuffer
this.endian = endian;
}
+ /**
+ * Reads the <code>float</code> at this buffer's current position,
+ * and then increments the position.
+ *
+ * @exception BufferUnderflowException If there are no remaining
+ * <code>floats</code> in this buffer.
+ */
public float get ()
{
int p = position();
@@ -74,6 +81,13 @@ final class FloatViewBufferImpl extends FloatBuffer
return result;
}
+ /**
+ * Absolute get method. Reads the <code>float</code> at position
+ * <code>index</code>.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ */
public float get (int index)
{
return ByteBufferHelper.getFloat(bb, (index << 2) + offset, endian);
diff --git a/libjava/java/nio/IntBuffer.java b/libjava/java/nio/IntBuffer.java
index 52d822aa81d..825132430e6 100644
--- a/libjava/java/nio/IntBuffer.java
+++ b/libjava/java/nio/IntBuffer.java
@@ -83,8 +83,9 @@ public abstract class IntBuffer extends Buffer
}
/**
- * This method transfers <code>ints<code> from this buffer into the given
- * destination array.
+ * This method transfers <code>int</code>s from this buffer into the given
+ * destination array. Before the transfer, it checks if there are fewer than
+ * length <code>int</code>s remaining in this buffer.
*
* @param dst The destination array
* @param offset The offset within the array of the first <code>int</code>
@@ -93,12 +94,15 @@ public abstract class IntBuffer extends Buffer
* must be non-negative and no larger than dst.length - offset.
*
* @exception BufferUnderflowException If there are fewer than length
- * <code>ints</code> remaining in this buffer.
+ * <code>int</code>s remaining in this buffer.
* @exception IndexOutOfBoundsException If the preconditions on the offset
* and length parameters do not hold.
*/
public IntBuffer get (int[] dst, int offset, int length)
{
+ checkArraySize(dst.length, offset, length);
+ checkForUnderflow(length);
+
for (int i = offset; i < offset + length; i++)
{
dst [i] = get ();
@@ -108,13 +112,13 @@ public abstract class IntBuffer extends Buffer
}
/**
- * This method transfers <code>ints<code> from this buffer into the given
+ * This method transfers <code>int</code>s from this buffer into the given
* destination array.
*
* @param dst The byte array to write into.
*
* @exception BufferUnderflowException If there are fewer than dst.length
- * <code>ints</code> remaining in this buffer.
+ * <code>int</code>s remaining in this buffer.
*/
public IntBuffer get (int[] dst)
{
@@ -123,12 +127,13 @@ public abstract class IntBuffer extends Buffer
/**
* Writes the content of the the <code>IntBUFFER</code> src
- * into the buffer.
+ * into the buffer. Before the transfer, it checks if there is fewer than
+ * <code>src.remaining()</code> space remaining in this buffer.
*
* @param src The source data.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>ints<code> in the source buffer.
+ * buffer for the remaining <code>int</code>s in the source buffer.
* @exception IllegalArgumentException If the source buffer is this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
@@ -137,8 +142,7 @@ public abstract class IntBuffer extends Buffer
if (src == this)
throw new IllegalArgumentException ();
- if (src.remaining () > remaining ())
- throw new BufferOverflowException ();
+ checkForOverflow(src.remaining ());
if (src.remaining () > 0)
{
@@ -152,7 +156,8 @@ public abstract class IntBuffer extends Buffer
/**
* Writes the content of the the <code>int array</code> src
- * into the buffer.
+ * into the buffer. Before the transfer, it checks if there is fewer than
+ * length space remaining in this buffer.
*
* @param src The array to copy into the buffer.
* @param offset The offset within the array of the first byte to be read;
@@ -161,13 +166,16 @@ public abstract class IntBuffer extends Buffer
* must be non-negative and no larger than src.length - offset.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>ints<code> in the source array.
+ * buffer for the remaining <code>int</code>s in the source array.
* @exception IndexOutOfBoundsException If the preconditions on the offset
* and length parameters do not hold
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public IntBuffer put (int[] src, int offset, int length)
{
+ checkArraySize(src.length, offset, length);
+ checkForOverflow(length);
+
for (int i = offset; i < offset + length; i++)
put (src [i]);
@@ -181,7 +189,7 @@ public abstract class IntBuffer extends Buffer
* @param src The array to copy into the buffer.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>ints<code> in the source array.
+ * buffer for the remaining <code>int</code>s in the source array.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public final IntBuffer put (int[] src)
@@ -211,8 +219,7 @@ public abstract class IntBuffer extends Buffer
if (backing_buffer == null)
throw new UnsupportedOperationException ();
- if (isReadOnly ())
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
return backing_buffer;
}
@@ -229,8 +236,7 @@ public abstract class IntBuffer extends Buffer
if (backing_buffer == null)
throw new UnsupportedOperationException ();
- if (isReadOnly ())
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
return array_offset;
}
@@ -298,7 +304,7 @@ public abstract class IntBuffer extends Buffer
* and then increments the position.
*
* @exception BufferUnderflowException If there are no remaining
- * <code>ints</code> in this buffer.
+ * <code>int</code>s in this buffer.
*/
public abstract int get ();
@@ -307,7 +313,7 @@ public abstract class IntBuffer extends Buffer
* and then increments the position.
*
* @exception BufferOverflowException If there no remaining
- * <code>ints</code> in this buffer.
+ * <code>int</code>s in this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public abstract IntBuffer put (int b);
diff --git a/libjava/java/nio/IntBufferImpl.java b/libjava/java/nio/IntBufferImpl.java
index a491c1105c4..f68dd92fa04 100644
--- a/libjava/java/nio/IntBufferImpl.java
+++ b/libjava/java/nio/IntBufferImpl.java
@@ -1,5 +1,5 @@
/* IntBufferImpl.java --
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -98,10 +98,16 @@ final class IntBufferImpl extends IntBuffer
}
/**
- * Relative get method. Reads the next <code>int</code> from the buffer.
+ * Reads the <code>int</code> at this buffer's current position,
+ * and then increments the position.
+ *
+ * @exception BufferUnderflowException If there are no remaining
+ * <code>ints</code> in this buffer.
*/
public int get ()
{
+ checkForUnderflow();
+
int result = backing_buffer [position ()];
position (position () + 1);
return result;
@@ -110,14 +116,16 @@ final class IntBufferImpl extends IntBuffer
/**
* Relative put method. Writes <code>value</code> to the next position
* in the buffer.
- *
+ *
+ * @exception BufferOverflowException If there no remaining
+ * space in this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public IntBuffer put (int value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
+ checkIfReadOnly();
+ checkForOverflow();
+
backing_buffer [position ()] = value;
position (position () + 1);
return this;
@@ -132,6 +140,8 @@ final class IntBufferImpl extends IntBuffer
*/
public int get (int index)
{
+ checkIndex(index);
+
return backing_buffer [index];
}
@@ -145,9 +155,9 @@ final class IntBufferImpl extends IntBuffer
*/
public IntBuffer put (int index, int value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
+ checkIfReadOnly();
+ checkIndex(index);
+
backing_buffer [index] = value;
return this;
}
diff --git a/libjava/java/nio/IntViewBufferImpl.java b/libjava/java/nio/IntViewBufferImpl.java
index 074953793be..1f3f9348aae 100644
--- a/libjava/java/nio/IntViewBufferImpl.java
+++ b/libjava/java/nio/IntViewBufferImpl.java
@@ -66,6 +66,13 @@ final class IntViewBufferImpl extends IntBuffer
this.endian = endian;
}
+ /**
+ * Reads the <code>int</code> at this buffer's current position,
+ * and then increments the position.
+ *
+ * @exception BufferUnderflowException If there are no remaining
+ * <code>ints</code> in this buffer.
+ */
public int get ()
{
int p = position();
@@ -74,6 +81,13 @@ final class IntViewBufferImpl extends IntBuffer
return result;
}
+ /**
+ * Absolute get method. Reads the <code>int</code> at position
+ * <code>index</code>.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ */
public int get (int index)
{
return ByteBufferHelper.getInt(bb, (index << 2) + offset, endian);
diff --git a/libjava/java/nio/LongBuffer.java b/libjava/java/nio/LongBuffer.java
index 1b420eb5ed4..f22ab14de2f 100644
--- a/libjava/java/nio/LongBuffer.java
+++ b/libjava/java/nio/LongBuffer.java
@@ -83,8 +83,9 @@ public abstract class LongBuffer extends Buffer
}
/**
- * This method transfers <code>longs<code> from this buffer into the given
- * destination array.
+ * This method transfers <code>long</code>s from this buffer into the given
+ * destination array. Before the transfer, it checks if there are fewer than
+ * length <code>long</code>s remaining in this buffer.
*
* @param dst The destination array
* @param offset The offset within the array of the first <code>long</code>
@@ -93,12 +94,15 @@ public abstract class LongBuffer extends Buffer
* must be non-negative and no larger than dst.length - offset.
*
* @exception BufferUnderflowException If there are fewer than length
- * <code>longs</code> remaining in this buffer.
+ * <code>long</code>s remaining in this buffer.
* @exception IndexOutOfBoundsException If the preconditions on the offset
* and length parameters do not hold.
*/
public LongBuffer get (long[] dst, int offset, int length)
{
+ checkArraySize(dst.length, offset, length);
+ checkForUnderflow(length);
+
for (int i = offset; i < offset + length; i++)
{
dst [i] = get ();
@@ -108,13 +112,13 @@ public abstract class LongBuffer extends Buffer
}
/**
- * This method transfers <code>longs<code> from this buffer into the given
+ * This method transfers <code>long</code>s from this buffer into the given
* destination array.
*
* @param dst The byte array to write into.
*
* @exception BufferUnderflowException If there are fewer than dst.length
- * <code>longs</code> remaining in this buffer.
+ * <code>long</code>s remaining in this buffer.
*/
public LongBuffer get (long[] dst)
{
@@ -123,12 +127,13 @@ public abstract class LongBuffer extends Buffer
/**
* Writes the content of the the <code>LongBUFFER</code> src
- * into the buffer.
+ * into the buffer. Before the transfer, it checks if there is fewer than
+ * <code>src.remaining()</code> space remaining in this buffer.
*
* @param src The source data.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>longs<code> in the source buffer.
+ * buffer for the remaining <code>long</code>s in the source buffer.
* @exception IllegalArgumentException If the source buffer is this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
@@ -137,8 +142,7 @@ public abstract class LongBuffer extends Buffer
if (src == this)
throw new IllegalArgumentException ();
- if (src.remaining () > remaining ())
- throw new BufferOverflowException ();
+ checkForOverflow(src.remaining ());
if (src.remaining () > 0)
{
@@ -152,7 +156,8 @@ public abstract class LongBuffer extends Buffer
/**
* Writes the content of the the <code>long array</code> src
- * into the buffer.
+ * into the buffer. Before the transfer, it checks if there is fewer than
+ * length space remaining in this buffer.
*
* @param src The array to copy into the buffer.
* @param offset The offset within the array of the first byte to be read;
@@ -161,13 +166,16 @@ public abstract class LongBuffer extends Buffer
* must be non-negative and no larger than src.length - offset.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>longs<code> in the source array.
+ * buffer for the remaining <code>long</code>s in the source array.
* @exception IndexOutOfBoundsException If the preconditions on the offset
* and length parameters do not hold
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public LongBuffer put (long[] src, int offset, int length)
{
+ checkArraySize(src.length, offset, length);
+ checkForOverflow(length);
+
for (int i = offset; i < offset + length; i++)
put (src [i]);
@@ -181,7 +189,7 @@ public abstract class LongBuffer extends Buffer
* @param src The array to copy into the buffer.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>longs<code> in the source array.
+ * buffer for the remaining <code>long</code>s in the source array.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public final LongBuffer put (long[] src)
@@ -211,8 +219,7 @@ public abstract class LongBuffer extends Buffer
if (backing_buffer == null)
throw new UnsupportedOperationException ();
- if (isReadOnly ())
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
return backing_buffer;
}
@@ -229,8 +236,7 @@ public abstract class LongBuffer extends Buffer
if (backing_buffer == null)
throw new UnsupportedOperationException ();
- if (isReadOnly ())
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
return array_offset;
}
@@ -298,7 +304,7 @@ public abstract class LongBuffer extends Buffer
* and then increments the position.
*
* @exception BufferUnderflowException If there are no remaining
- * <code>longs</code> in this buffer.
+ * <code>long</code>s in this buffer.
*/
public abstract long get ();
@@ -307,7 +313,7 @@ public abstract class LongBuffer extends Buffer
* and then increments the position.
*
* @exception BufferOverflowException If there no remaining
- * <code>longs</code> in this buffer.
+ * <code>long</code>s in this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public abstract LongBuffer put (long b);
diff --git a/libjava/java/nio/LongBufferImpl.java b/libjava/java/nio/LongBufferImpl.java
index 88a9d8c5415..df720eec62c 100644
--- a/libjava/java/nio/LongBufferImpl.java
+++ b/libjava/java/nio/LongBufferImpl.java
@@ -1,5 +1,5 @@
/* LongBufferImpl.java --
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -98,10 +98,16 @@ final class LongBufferImpl extends LongBuffer
}
/**
- * Relative get method. Reads the next <code>long</code> from the buffer.
+ * Reads the <code>long</code> at this buffer's current position,
+ * and then increments the position.
+ *
+ * @exception BufferUnderflowException If there are no remaining
+ * <code>longs</code> in this buffer.
*/
public long get ()
{
+ checkForUnderflow();
+
long result = backing_buffer [position ()];
position (position () + 1);
return result;
@@ -110,14 +116,16 @@ final class LongBufferImpl extends LongBuffer
/**
* Relative put method. Writes <code>value</code> to the next position
* in the buffer.
- *
+ *
+ * @exception BufferOverflowException If there is insufficient space in this
+ * buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public LongBuffer put (long value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
+ checkIfReadOnly();
+ checkForOverflow();
+
backing_buffer [position ()] = value;
position (position () + 1);
return this;
@@ -132,6 +140,8 @@ final class LongBufferImpl extends LongBuffer
*/
public long get (int index)
{
+ checkIndex(index);
+
return backing_buffer [index];
}
@@ -145,9 +155,9 @@ final class LongBufferImpl extends LongBuffer
*/
public LongBuffer put (int index, long value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
+ checkIfReadOnly();
+ checkIndex(index);
+
backing_buffer [index] = value;
return this;
}
diff --git a/libjava/java/nio/LongViewBufferImpl.java b/libjava/java/nio/LongViewBufferImpl.java
index d1dd060d311..8762578a7bf 100644
--- a/libjava/java/nio/LongViewBufferImpl.java
+++ b/libjava/java/nio/LongViewBufferImpl.java
@@ -66,6 +66,13 @@ final class LongViewBufferImpl extends LongBuffer
this.endian = endian;
}
+ /**
+ * Reads the <code>long</code> at this buffer's current position,
+ * and then increments the position.
+ *
+ * @exception BufferUnderflowException If there are no remaining
+ * <code>longs</code> in this buffer.
+ */
public long get ()
{
int p = position();
@@ -74,6 +81,13 @@ final class LongViewBufferImpl extends LongBuffer
return result;
}
+ /**
+ * Absolute get method. Reads the <code>long</code> at position
+ * <code>index</code>.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ */
public long get (int index)
{
return ByteBufferHelper.getLong(bb, (index << 3) + offset, endian);
diff --git a/libjava/java/nio/MappedByteBufferImpl.java b/libjava/java/nio/MappedByteBufferImpl.java
index 5932c99f6d0..5ed579bb0e9 100644
--- a/libjava/java/nio/MappedByteBufferImpl.java
+++ b/libjava/java/nio/MappedByteBufferImpl.java
@@ -68,9 +68,9 @@ final class MappedByteBufferImpl extends MappedByteBuffer
public byte get ()
{
+ checkForUnderflow();
+
int pos = position();
- if (pos >= limit())
- throw new BufferUnderflowException();
byte result = DirectByteBufferImpl.getImpl(address, pos);
position (pos + 1);
return result;
@@ -78,9 +78,10 @@ final class MappedByteBufferImpl extends MappedByteBuffer
public ByteBuffer put (byte value)
{
+ checkIfReadOnly();
+ checkForOverflow();
+
int pos = position();
- if (pos >= limit())
- throw new BufferUnderflowException();
DirectByteBufferImpl.putImpl(address, pos, value);
position(pos + 1);
return this;
@@ -88,17 +89,15 @@ final class MappedByteBufferImpl extends MappedByteBuffer
public byte get (int index)
{
- if (index >= limit())
- throw new BufferUnderflowException();
+ checkIndex(index);
+
return DirectByteBufferImpl.getImpl(address, index);
}
public ByteBuffer get (byte[] dst, int offset, int length)
{
- if (offset < 0 || length < 0 || offset + length > dst.length)
- throw new IndexOutOfBoundsException ();
- if (length > remaining())
- throw new BufferUnderflowException();
+ checkArraySize(dst.length, offset, length);
+ checkForUnderflow(length);
int index = position();
DirectByteBufferImpl.getImpl(address, index, dst, offset, length);
@@ -109,8 +108,9 @@ final class MappedByteBufferImpl extends MappedByteBuffer
public ByteBuffer put (int index, byte value)
{
- if (index >= limit())
- throw new BufferUnderflowException();
+ checkIfReadOnly();
+ checkIndex(index);
+
DirectByteBufferImpl.putImpl(address, index, value);
return this;
}
diff --git a/libjava/java/nio/ShortBuffer.java b/libjava/java/nio/ShortBuffer.java
index 9f542769fac..03ddb73e5ae 100644
--- a/libjava/java/nio/ShortBuffer.java
+++ b/libjava/java/nio/ShortBuffer.java
@@ -83,8 +83,9 @@ public abstract class ShortBuffer extends Buffer
}
/**
- * This method transfers <code>shorts<code> from this buffer into the given
- * destination array.
+ * This method transfers <code>short</code>s from this buffer into the given
+ * destination array. Before the transfer, it checks if there are fewer than
+ * length <code>short</code>s remaining in this buffer.
*
* @param dst The destination array
* @param offset The offset within the array of the first <code>short</code>
@@ -93,12 +94,15 @@ public abstract class ShortBuffer extends Buffer
* must be non-negative and no larger than dst.length - offset.
*
* @exception BufferUnderflowException If there are fewer than length
- * <code>shorts</code> remaining in this buffer.
+ * <code>short</code>s remaining in this buffer.
* @exception IndexOutOfBoundsException If the preconditions on the offset
* and length parameters do not hold.
*/
public ShortBuffer get (short[] dst, int offset, int length)
{
+ checkArraySize(dst.length, offset, length);
+ checkForUnderflow(length);
+
for (int i = offset; i < offset + length; i++)
{
dst [i] = get ();
@@ -108,13 +112,13 @@ public abstract class ShortBuffer extends Buffer
}
/**
- * This method transfers <code>shorts<code> from this buffer into the given
+ * This method transfers <code>short</code>s from this buffer into the given
* destination array.
*
* @param dst The byte array to write into.
*
* @exception BufferUnderflowException If there are fewer than dst.length
- * <code>shorts</code> remaining in this buffer.
+ * <code>short</code>s remaining in this buffer.
*/
public ShortBuffer get (short[] dst)
{
@@ -123,12 +127,13 @@ public abstract class ShortBuffer extends Buffer
/**
* Writes the content of the the <code>ShortBUFFER</code> src
- * into the buffer.
+ * into the buffer. Before the transfer, it checks if there is fewer than
+ * <code>src.remaining()</code> space remaining in this buffer.
*
* @param src The source data.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>shorts<code> in the source buffer.
+ * buffer for the remaining <code>short</code>s in the source buffer.
* @exception IllegalArgumentException If the source buffer is this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
@@ -137,8 +142,7 @@ public abstract class ShortBuffer extends Buffer
if (src == this)
throw new IllegalArgumentException ();
- if (src.remaining () > remaining ())
- throw new BufferOverflowException ();
+ checkForOverflow(src.remaining ());
if (src.remaining () > 0)
{
@@ -152,7 +156,8 @@ public abstract class ShortBuffer extends Buffer
/**
* Writes the content of the the <code>short array</code> src
- * into the buffer.
+ * into the buffer. Before the transfer, it checks if there is fewer than
+ * length space remaining in this buffer.
*
* @param src The array to copy into the buffer.
* @param offset The offset within the array of the first byte to be read;
@@ -161,13 +166,16 @@ public abstract class ShortBuffer extends Buffer
* must be non-negative and no larger than src.length - offset.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>shorts<code> in the source array.
+ * buffer for the remaining <code>short</code>s in the source array.
* @exception IndexOutOfBoundsException If the preconditions on the offset
* and length parameters do not hold
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public ShortBuffer put (short[] src, int offset, int length)
{
+ checkArraySize(src.length, offset, length);
+ checkForOverflow(length);
+
for (int i = offset; i < offset + length; i++)
put (src [i]);
@@ -181,7 +189,7 @@ public abstract class ShortBuffer extends Buffer
* @param src The array to copy into the buffer.
*
* @exception BufferOverflowException If there is insufficient space in this
- * buffer for the remaining <code>shorts<code> in the source array.
+ * buffer for the remaining <code>short</code>s in the source array.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public final ShortBuffer put (short[] src)
@@ -211,8 +219,7 @@ public abstract class ShortBuffer extends Buffer
if (backing_buffer == null)
throw new UnsupportedOperationException ();
- if (isReadOnly ())
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
return backing_buffer;
}
@@ -229,8 +236,7 @@ public abstract class ShortBuffer extends Buffer
if (backing_buffer == null)
throw new UnsupportedOperationException ();
- if (isReadOnly ())
- throw new ReadOnlyBufferException ();
+ checkIfReadOnly();
return array_offset;
}
@@ -298,7 +304,7 @@ public abstract class ShortBuffer extends Buffer
* and then increments the position.
*
* @exception BufferUnderflowException If there are no remaining
- * <code>shorts</code> in this buffer.
+ * <code>short</code>s in this buffer.
*/
public abstract short get ();
@@ -307,7 +313,7 @@ public abstract class ShortBuffer extends Buffer
* and then increments the position.
*
* @exception BufferOverflowException If there no remaining
- * <code>shorts</code> in this buffer.
+ * <code>short</code>s in this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public abstract ShortBuffer put (short b);
diff --git a/libjava/java/nio/ShortBufferImpl.java b/libjava/java/nio/ShortBufferImpl.java
index 6871f096e9d..28f6efbd804 100644
--- a/libjava/java/nio/ShortBufferImpl.java
+++ b/libjava/java/nio/ShortBufferImpl.java
@@ -1,5 +1,5 @@
/* ShortBufferImpl.java --
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -98,10 +98,16 @@ final class ShortBufferImpl extends ShortBuffer
}
/**
- * Relative get method. Reads the next <code>short</code> from the buffer.
+ * Reads the <code>short</code> at this buffer's current position,
+ * and then increments the position.
+ *
+ * @exception BufferUnderflowException If there are no remaining
+ * <code>short</code>s in this buffer.
*/
public short get ()
{
+ checkForUnderflow();
+
short result = backing_buffer [position ()];
position (position () + 1);
return result;
@@ -110,14 +116,16 @@ final class ShortBufferImpl extends ShortBuffer
/**
* Relative put method. Writes <code>value</code> to the next position
* in the buffer.
- *
+ *
+ * @exception BufferOverflowException If there no remaining
+ * space in this buffer.
* @exception ReadOnlyBufferException If this buffer is read-only.
*/
public ShortBuffer put (short value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
+ checkIfReadOnly();
+ checkForOverflow();
+
backing_buffer [position ()] = value;
position (position () + 1);
return this;
@@ -132,6 +140,8 @@ final class ShortBufferImpl extends ShortBuffer
*/
public short get (int index)
{
+ checkIndex(index);
+
return backing_buffer [index];
}
@@ -145,9 +155,9 @@ final class ShortBufferImpl extends ShortBuffer
*/
public ShortBuffer put (int index, short value)
{
- if (readOnly)
- throw new ReadOnlyBufferException ();
-
+ checkIfReadOnly();
+ checkIndex(index);
+
backing_buffer [index] = value;
return this;
}
diff --git a/libjava/java/nio/ShortViewBufferImpl.java b/libjava/java/nio/ShortViewBufferImpl.java
index 26aabad519c..a9d086d2127 100644
--- a/libjava/java/nio/ShortViewBufferImpl.java
+++ b/libjava/java/nio/ShortViewBufferImpl.java
@@ -66,6 +66,13 @@ final class ShortViewBufferImpl extends ShortBuffer
this.endian = endian;
}
+ /**
+ * Reads the <code>short</code> at this buffer's current position,
+ * and then increments the position.
+ *
+ * @exception BufferUnderflowException If there are no remaining
+ * <code>short</code>s in this buffer.
+ */
public short get ()
{
int p = position();
@@ -74,6 +81,13 @@ final class ShortViewBufferImpl extends ShortBuffer
return result;
}
+ /**
+ * Absolute get method. Reads the <code>short</code> at position
+ * <code>index</code>.
+ *
+ * @exception IndexOutOfBoundsException If index is negative or not smaller
+ * than the buffer's limit.
+ */
public short get (int index)
{
return ByteBufferHelper.getShort(bb, (index << 1) + offset, endian);
diff --git a/libjava/java/nio/charset/CharsetDecoder.java b/libjava/java/nio/charset/CharsetDecoder.java
index 185de149fd4..620ff130d32 100644
--- a/libjava/java/nio/charset/CharsetDecoder.java
+++ b/libjava/java/nio/charset/CharsetDecoder.java
@@ -129,6 +129,7 @@ public abstract class CharsetDecoder
if (cr.isError ())
cr.throwException ();
+ reset();
out.flip ();
return out;
}
diff --git a/libjava/java/security/AccessControlContext.java b/libjava/java/security/AccessControlContext.java
index 5b9ac4a2548..62370224d11 100644
--- a/libjava/java/security/AccessControlContext.java
+++ b/libjava/java/security/AccessControlContext.java
@@ -1,5 +1,5 @@
/* AccessControlContext.java --- Access Control Context Class
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -38,18 +38,18 @@ exception statement from your version. */
package java.security;
/**
- AccessControlContext makes system resource access decsion
- based on permission rights.
-
- It is used for a specific context and has only one method
- checkPermission. It is similar to AccessController except
- that it makes decsions based on the current context instead
- of the the current thread.
-
- It is created by call AccessController.getContext method.
-
- @author Mark Benvenuto
- @since JDK 1.2
+ * AccessControlContext makes system resource access decsion
+ * based on permission rights.
+ *
+ * It is used for a specific context and has only one method
+ * checkPermission. It is similar to AccessController except
+ * that it makes decsions based on the current context instead
+ * of the the current thread.
+ *
+ * It is created by call AccessController.getContext method.
+ *
+ * @author Mark Benvenuto
+ * @since 1.2
*/
public final class AccessControlContext
{
@@ -57,11 +57,11 @@ public final class AccessControlContext
private DomainCombiner combiner;
/**
- Construct a new AccessControlContext with the specified
- ProtectionDomains. <code>context</code> must not be
- null and duplicates will be removed.
-
- @param context The ProtectionDomains to use
+ * Construct a new AccessControlContext with the specified
+ * ProtectionDomains. <code>context</code> must not be
+ * null and duplicates will be removed.
+ *
+ * @param context The ProtectionDomains to use
*/
public AccessControlContext(ProtectionDomain[]context)
{
@@ -91,12 +91,10 @@ public final class AccessControlContext
}
/**
- Construct a new AccessControlContext with the specified
- ProtectionDomains and DomainCombiner
-
- @param context The ProtectionDomains to use
-
- @since JDK 1.3
+ * Construct a new AccessControlContext with the specified
+ * ProtectionDomains and DomainCombiner
+ *
+ * @since 1.3
*/
public AccessControlContext(AccessControlContext acc,
DomainCombiner combiner)
@@ -106,9 +104,9 @@ public final class AccessControlContext
}
/**
- Returns the Domain Combiner associated with the AccessControlContext
-
- @returns the DomainCombiner
+ * Returns the Domain Combiner associated with the AccessControlContext
+ *
+ * @return the DomainCombiner
*/
public DomainCombiner getDomainCombiner()
{
@@ -116,12 +114,12 @@ public final class AccessControlContext
}
/**
- Determines whether or not the specific permission is granted
- depending on the context it is within.
-
- @param perm a permission to check
-
- @throws AccessControlException if the permssion is not permitted
+ * Determines whether or not the specific permission is granted
+ * depending on the context it is within.
+ *
+ * @param perm a permission to check
+ *
+ * @throws AccessControlException if the permssion is not permitted
*/
public void checkPermission(Permission perm) throws AccessControlException
{
@@ -133,14 +131,14 @@ public final class AccessControlContext
}
/**
- Checks if two AccessControlContexts are equal.
-
- It first checks if obj is an AccessControlContext class, and
- then checks if each ProtectionDomain matches.
-
- @param obj The object to compare this class to
-
- @return true if equal, false otherwise
+ * Checks if two AccessControlContexts are equal.
+ *
+ * It first checks if obj is an AccessControlContext class, and
+ * then checks if each ProtectionDomain matches.
+ *
+ * @param obj The object to compare this class to
+ *
+ * @return true if equal, false otherwise
*/
public boolean equals(Object obj)
{
@@ -160,9 +158,9 @@ public final class AccessControlContext
}
/**
- Computes a hash code of this class
-
- @return a hash code representing this class
+ * Computes a hash code of this class
+ *
+ * @return a hash code representing this class
*/
public int hashCode()
{
diff --git a/libjava/java/security/SecureClassLoader.java b/libjava/java/security/SecureClassLoader.java
index 5f7ac211bf0..1f67a33dc2c 100644
--- a/libjava/java/security/SecureClassLoader.java
+++ b/libjava/java/security/SecureClassLoader.java
@@ -1,5 +1,5 @@
/* SecureClassLoader.java --- A Secure Class Loader
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -38,13 +38,13 @@ exception statement from your version. */
package java.security;
/**
- A Secure Class Loader for loading classes with additional
- support for specifying code source and permissions when
- they are retrieved by the system policy handler.
-
- @since JDK 1.2
-
- @author Mark Benvenuto
+ * A Secure Class Loader for loading classes with additional
+ * support for specifying code source and permissions when
+ * they are retrieved by the system policy handler.
+ *
+ * @since 1.2
+ *
+ * @author Mark Benvenuto
*/
public class SecureClassLoader extends ClassLoader
{
@@ -64,18 +64,18 @@ public class SecureClassLoader extends ClassLoader
}
/**
- Creates a class using an array of bytes and a
- CodeSource.
-
- @param name the name to give the class. null if unknown.
- @param b the data representing the classfile, in classfile format.
- @param off the offset into the data where the classfile starts.
- @param len the length of the classfile data in the array.
- @param cs the CodeSource for the class or null when unknown.
-
- @return the class that was defined and optional CodeSource.
-
- @exception ClassFormatError if the byte array is not in proper classfile format.
+ * Creates a class using an array of bytes and a
+ * CodeSource.
+ *
+ * @param name the name to give the class. null if unknown.
+ * @param b the data representing the classfile, in classfile format.
+ * @param off the offset into the data where the classfile starts.
+ * @param len the length of the classfile data in the array.
+ * @param cs the CodeSource for the class or null when unknown.
+ *
+ * @return the class that was defined and optional CodeSource.
+ *
+ * @exception ClassFormatError if the byte array is not in proper classfile format.
*/
protected final Class defineClass(String name, byte[] b, int off, int len,
CodeSource cs)
@@ -92,14 +92,13 @@ public class SecureClassLoader extends ClassLoader
}
/**
- Returns a PermissionCollection for the specified CodeSource.
- The default implementation invokes
- java.security.Policy.getPermissions.
-
- This method is called by defineClass that takes a CodeSource
- arguement to build a proper ProtectionDomain for the class
- being defined.
-
+ * Returns a PermissionCollection for the specified CodeSource.
+ * The default implementation invokes
+ * java.security.Policy.getPermissions.
+ *
+ * This method is called by defineClass that takes a CodeSource
+ * arguement to build a proper ProtectionDomain for the class
+ * being defined.
*/
protected PermissionCollection getPermissions(CodeSource cs)
{
diff --git a/libjava/java/security/Security.java b/libjava/java/security/Security.java
index 6c8d2b4c04c..e89103fd5b8 100644
--- a/libjava/java/security/Security.java
+++ b/libjava/java/security/Security.java
@@ -57,7 +57,7 @@ import java.util.Vector;
* This class centralizes all security properties and common security methods.
* One of its primary uses is to manage providers.
*
- * @author Mark Benvenuto <ivymccough@worldnet.att.net>
+ * @author Mark Benvenuto (ivymccough@worldnet.att.net)
*/
public final class Security
{
@@ -411,7 +411,7 @@ public final class Security
* MessageDigest, Cipher, Mac, KeyStore). Returns an empty Set if there is no
* provider that supports the specified service. For a complete list of Java
* cryptographic services, please see the Java Cryptography Architecture API
- * Specification & Reference. Note: the returned set is immutable.
+ * Specification &amp; Reference. Note: the returned set is immutable.
*
* @param serviceName the name of the Java cryptographic service (e.g.,
* Signature, MessageDigest, Cipher, Mac, KeyStore). Note: this parameter is
@@ -466,7 +466,7 @@ public final class Security
* formats:</p>
*
* <ul>
- * <li><p>&lt;crypto_service>.&lt;algorithm_or_type></p>
+ * <li><p>&lt;crypto_service&gt;.&lt;algorithm_or_type&gt;</p>
* <p>The cryptographic service name must not contain any dots.</p>
* <p>A provider satisfies the specified selection criterion iff the
* provider implements the specified algorithm or type for the specified
@@ -475,10 +475,10 @@ public final class Security
* provider that supplied a CertificateFactory implementation for X.509
* certificates.</p></li>
*
- * <li><p>&lt;crypto_service>.&lt;algorithm_or_type> &lt;attribute_name>:&lt;attribute_value></p>
+ * <li><p>&lt;crypto_service&gt;.&lt;algorithm_or_type&gt; &lt;attribute_name&gt;:&lt;attribute_value&gt;</p>
* <p>The cryptographic service name must not contain any dots. There must
- * be one or more space charaters between the the &lt;algorithm_or_type>
- * and the &lt;attribute_name>.</p>
+ * be one or more space charaters between the the &lt;algorithm_or_type&gt;
+ * and the &lt;attribute_name&gt;.</p>
* <p>A provider satisfies this selection criterion iff the provider
* implements the specified algorithm or type for the specified
* cryptographic service and its implementation meets the constraint
@@ -530,17 +530,17 @@ public final class Security
* of the following two formats:</p>
*
* <ul>
- * <li><p>&lt;crypto_service>.&lt;algorithm_or_type></p>
+ * <li><p>&lt;crypto_service&gt;.&lt;algorithm_or_type&gt;</p>
* <p>The cryptographic service name must not contain any dots.</p>
* <p>The value associated with the key must be an empty string.</p>
* <p>A provider satisfies this selection criterion iff the provider
* implements the specified algorithm or type for the specified
* cryptographic service.</p></li>
*
- * <li><p>&lt;crypto_service>.&lt;algorithm_or_type> &lt;attribute_name></p>
+ * <li><p>&lt;crypto_service&gt;.&lt;algorithm_or_type&gt; &lt;attribute_name&gt;</p>
* <p>The cryptographic service name must not contain any dots. There must
- * be one or more space charaters between the &lt;algorithm_or_type> and
- * the &lt;attribute_name>.</p>
+ * be one or more space charaters between the &lt;algorithm_or_type&gt; and
+ * the &lt;attribute_name&gt;.</p>
* <p>The value associated with the key must be a non-empty string. A
* provider satisfies this selection criterion iff the provider implements
* the specified algorithm or type for the specified cryptographic service
diff --git a/libjava/java/sql/Timestamp.java b/libjava/java/sql/Timestamp.java
index 22108f58f93..e480fff6be8 100644
--- a/libjava/java/sql/Timestamp.java
+++ b/libjava/java/sql/Timestamp.java
@@ -39,6 +39,7 @@ exception statement from your version. */
package java.sql;
import java.text.ParseException;
+import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
/**
@@ -58,8 +59,10 @@ public class Timestamp extends java.util.Date
/**
* Used for parsing and formatting this date.
*/
- private static SimpleDateFormat sdf =
+ private static SimpleDateFormat dateFormat =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ private static DecimalFormat decimalFormat = new DecimalFormat("000000000");
+ private static StringBuffer sbuf = new StringBuffer(29);
/**
* The nanosecond value for this object
@@ -96,7 +99,7 @@ public class Timestamp extends java.util.Date
try
{
- java.util.Date d = (java.util.Date)sdf.parseObject(str);
+ java.util.Date d = (java.util.Date) dateFormat.parseObject(str);
if (d == null)
throw new IllegalArgumentException(str);
@@ -133,14 +136,24 @@ public class Timestamp extends java.util.Date
/**
* This method initializes a new instance of this class with the
- * specified time value representing the number of seconds since
+ * specified time value representing the number of milliseconds since
* Jan 1, 1970 at 12:00 midnight GMT.
*
* @param time The time value to intialize this <code>Time</code> to.
*/
public Timestamp(long date)
{
- super(date);
+ super(date - (date % 1000));
+ nanos = (int) (date % 1000) * 1000000;
+ }
+
+ /**
+ * Return the value of this Timestamp as the number of milliseconds
+ * since Jan 1, 1970 at 12:00 midnight GMT.
+ */
+ public long getTime()
+ {
+ return super.getTime() + (nanos / 1000000);
}
/**
@@ -150,7 +163,17 @@ public class Timestamp extends java.util.Date
*/
public String toString()
{
- return sdf.format(this) + "." + getNanos();
+ synchronized (dateFormat)
+ {
+ sbuf.setLength(0);
+ dateFormat.format(this, sbuf, null);
+ sbuf.append('.');
+ decimalFormat.format(nanos, sbuf, null);
+ int end = sbuf.length() - 1;
+ while (end > 20 && sbuf.charAt(end) == '0')
+ end--;
+ return sbuf.substring(0, end + 1);
+ }
}
/**
@@ -182,12 +205,10 @@ public class Timestamp extends java.util.Date
*/
public boolean before(Timestamp ts)
{
- if (ts.getTime() > getTime())
+ long time1 = getTime();
+ long time2 = ts.getTime();
+ if (time1 < time2 || (time1 == time2 && getNanos() < ts.getNanos()))
return true;
-
- if (ts.getNanos() > getNanos())
- return true;
-
return false;
}
@@ -202,12 +223,10 @@ public class Timestamp extends java.util.Date
*/
public boolean after(Timestamp ts)
{
- if (ts.getTime() < getTime())
+ long time1 = getTime();
+ long time2 = ts.getTime();
+ if (time1 > time2 || (time1 == time2 && getNanos() > ts.getNanos()))
return true;
-
- if (ts.getNanos() < getNanos())
- return true;
-
return false;
}
diff --git a/libjava/java/text/BreakIterator.java b/libjava/java/text/BreakIterator.java
index e97b6587707..92037a3bf55 100644
--- a/libjava/java/text/BreakIterator.java
+++ b/libjava/java/text/BreakIterator.java
@@ -136,7 +136,7 @@ public abstract class BreakIterator implements Cloneable
{
ResourceBundle res
= ResourceBundle.getBundle("gnu.java.locale.LocaleInformation",
- loc, BreakIterator.class.getClassLoader());
+ loc, ClassLoader.getSystemClassLoader());
className = res.getString(type);
}
catch (MissingResourceException x)
diff --git a/libjava/java/text/CollationElementIterator.java b/libjava/java/text/CollationElementIterator.java
index a4c21005211..90091e34884 100644
--- a/libjava/java/text/CollationElementIterator.java
+++ b/libjava/java/text/CollationElementIterator.java
@@ -38,7 +38,7 @@ exception statement from your version. */
package java.text;
-import java.util.Vector;
+import java.util.ArrayList;
/* Written using "Java Class Libraries", 2nd edition, plus online
* API docs for JDK 1.2 from http://www.javasoft.com.
@@ -89,7 +89,7 @@ public final class CollationElementIterator
* Array containing the collation decomposition of the
* text given to the constructor.
*/
- private Object[] text_decomposition;
+ private RuleBasedCollator.CollationElement[] text_decomposition;
/**
* Array containing the index of the specified block.
@@ -116,8 +116,7 @@ public final class CollationElementIterator
if (index >= text_decomposition.length)
return null;
- RuleBasedCollator.CollationElement e =
- (RuleBasedCollator.CollationElement) text_decomposition[index];
+ RuleBasedCollator.CollationElement e = text_decomposition[index];
textIndex = text_indexes[index+1];
@@ -132,8 +131,7 @@ public final class CollationElementIterator
return null;
index--;
- RuleBasedCollator.CollationElement e =
- (RuleBasedCollator.CollationElement) text_decomposition[index];
+ RuleBasedCollator.CollationElement e = text_decomposition[index];
textIndex = text_indexes[index+1];
@@ -247,8 +245,8 @@ public final class CollationElementIterator
String work_text = text.intern();
- Vector v = new Vector();
- Vector vi = new Vector();
+ ArrayList a_element = new ArrayList();
+ ArrayList a_idx = new ArrayList();
// Build element collection ordered as they come in "text".
while (idx < work_text.length())
@@ -301,8 +299,8 @@ public final class CollationElementIterator
RuleBasedCollator.CollationElement e =
collator.getDefaultAccentedElement (work_text.charAt (idx));
- v.add (e);
- vi.add (new Integer(idx_idx));
+ a_element.add (e);
+ a_idx.add (new Integer(idx_idx));
idx++;
alreadyExpanded--;
if (alreadyExpanded == 0)
@@ -326,10 +324,10 @@ public final class CollationElementIterator
/* Don't forget to mark it as a special sequence so the
* string can be ordered.
*/
- v.add (RuleBasedCollator.SPECIAL_UNKNOWN_SEQ);
- vi.add (i_ref);
- v.add (e);
- vi.add (i_ref);
+ a_element.add (RuleBasedCollator.SPECIAL_UNKNOWN_SEQ);
+ a_idx.add (i_ref);
+ a_element.add (e);
+ a_idx.add (i_ref);
idx_idx++;
idx++;
}
@@ -346,8 +344,8 @@ public final class CollationElementIterator
work_text = prefix.expansion
+ work_text.substring (idx+prefix.key.length());
idx = 0;
- v.add (prefix);
- vi.add (new Integer(idx_idx));
+ a_element.add (prefix);
+ a_idx.add (new Integer(idx_idx));
if (alreadyExpanded == 0)
idxToMove = prefix.key.length();
alreadyExpanded += prefix.expansion.length()-prefix.key.length();
@@ -357,8 +355,8 @@ public final class CollationElementIterator
/* Third case: the simplest. We have got the prefix and it
* has not to be expanded.
*/
- v.add (prefix);
- vi.add (new Integer(idx_idx));
+ a_element.add (prefix);
+ a_idx.add (new Integer(idx_idx));
idx += prefix.key.length();
/* If the sequence is in an expansion, we must decrease the
* counter.
@@ -376,13 +374,14 @@ public final class CollationElementIterator
}
}
- text_decomposition = v.toArray();
- text_indexes = new int[vi.size()+1];
- for (int i = 0; i < vi.size(); i++)
+ text_decomposition = (RuleBasedCollator.CollationElement[])
+ a_element.toArray(new RuleBasedCollator.CollationElement[a_element.size()]);
+ text_indexes = new int[a_idx.size()+1];
+ for (int i = 0; i < a_idx.size(); i++)
{
- text_indexes[i] = ((Integer)vi.elementAt(i)).intValue();
+ text_indexes[i] = ((Integer)a_idx.get(i)).intValue();
}
- text_indexes[vi.size()] = text.length();
+ text_indexes[a_idx.size()] = text.length();
}
/**
diff --git a/libjava/java/text/Collator.java b/libjava/java/text/Collator.java
index 7797962d4f9..6464d137041 100644
--- a/libjava/java/text/Collator.java
+++ b/libjava/java/text/Collator.java
@@ -303,7 +303,7 @@ public abstract class Collator implements Comparator, Cloneable
try
{
res = ResourceBundle.getBundle("gnu.java.locale.LocaleInformation",
- loc, Collator.class.getClassLoader());
+ loc, ClassLoader.getSystemClassLoader());
pattern = res.getString("collation_rules");
}
catch (MissingResourceException x)
diff --git a/libjava/java/text/DateFormat.java b/libjava/java/text/DateFormat.java
index 3b489fae7eb..c0ca73794e6 100644
--- a/libjava/java/text/DateFormat.java
+++ b/libjava/java/text/DateFormat.java
@@ -1,5 +1,6 @@
/* DateFormat.java -- Class for formatting/parsing date/times
- Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004
+ Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -325,7 +326,7 @@ public abstract class DateFormat extends Format implements Cloneable
try
{
res = ResourceBundle.getBundle("gnu.java.locale.LocaleInformation",
- loc, DateFormat.class.getClassLoader());
+ loc, ClassLoader.getSystemClassLoader());
}
catch (MissingResourceException x)
{
@@ -591,6 +592,7 @@ public abstract class DateFormat extends Format implements Cloneable
/**
* This method parses the specified date/time string.
*
+ * @param source The string to parse.
* @return The resultant date.
*
* @exception ParseException If the specified string cannot be parsed.
@@ -604,7 +606,8 @@ public abstract class DateFormat extends Format implements Cloneable
int index = pos.getErrorIndex();
if (index < 0)
index = pos.getIndex();
- throw new ParseException("invalid Date syntax", index);
+ throw new ParseException("invalid Date syntax in \""
+ + source + '\"', index);
}
return result;
}
diff --git a/libjava/java/text/DateFormatSymbols.java b/libjava/java/text/DateFormatSymbols.java
index 0d619516d36..b9b71ba36a7 100644
--- a/libjava/java/text/DateFormatSymbols.java
+++ b/libjava/java/text/DateFormatSymbols.java
@@ -99,7 +99,7 @@ public class DateFormatSymbols implements java.io.Serializable, Cloneable
{
ResourceBundle res
= ResourceBundle.getBundle("gnu.java.locale.LocaleInformation", locale,
- getClass().getClassLoader());
+ ClassLoader.getSystemClassLoader());
ampms = res.getStringArray ("ampms");
eras = res.getStringArray ("eras");
diff --git a/libjava/java/text/DecimalFormatSymbols.java b/libjava/java/text/DecimalFormatSymbols.java
index 39de36b7ae0..be045857188 100644
--- a/libjava/java/text/DecimalFormatSymbols.java
+++ b/libjava/java/text/DecimalFormatSymbols.java
@@ -130,7 +130,7 @@ public final class DecimalFormatSymbols implements Cloneable, Serializable
try
{
res = ResourceBundle.getBundle("gnu.java.locale.LocaleInformation",
- loc, DecimalFormatSymbols.class.getClassLoader());
+ loc, ClassLoader.getSystemClassLoader());
}
catch (MissingResourceException x)
{
diff --git a/libjava/java/text/MessageFormat.java b/libjava/java/text/MessageFormat.java
index 2e1786da986..b123412554d 100644
--- a/libjava/java/text/MessageFormat.java
+++ b/libjava/java/text/MessageFormat.java
@@ -1,5 +1,5 @@
/* MessageFormat.java - Localized message formatting.
- Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2001, 2002, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -157,7 +157,7 @@ public class MessageFormat extends Format
* This is the attribute set for all characters produced
* by MessageFormat during a formatting.
*/
- public static final MessageFormat.Field ARGUMENT = new Field("argument");
+ public static final MessageFormat.Field ARGUMENT = new MessageFormat.Field("argument");
// For deserialization
private Field()
@@ -414,10 +414,13 @@ public class MessageFormat extends Format
for (int i = 0; i < elements.length; ++i)
{
- if (elements[i].argNumber >= arguments.length)
- throw new IllegalArgumentException("Not enough arguments given");
+ Object thisArg = null;
+ boolean unavailable = false;
+ if (arguments == null || elements[i].argNumber >= arguments.length)
+ unavailable = true;
+ else
+ thisArg = arguments[elements[i].argNumber];
- Object thisArg = arguments[elements[i].argNumber];
AttributedCharacterIterator iterator = null;
Format formatter = null;
@@ -425,22 +428,27 @@ public class MessageFormat extends Format
if (fp != null && i == fp.getField() && fp.getFieldAttribute() == Field.ARGUMENT)
fp.setBeginIndex(appendBuf.length());
- if (elements[i].setFormat != null)
- formatter = elements[i].setFormat;
- else if (elements[i].format != null)
+ if (unavailable)
+ appendBuf.append("{" + elements[i].argNumber + "}");
+ else
{
- if (elements[i].formatClass != null
- && ! elements[i].formatClass.isInstance(thisArg))
- throw new IllegalArgumentException("Wrong format class");
+ if (elements[i].setFormat != null)
+ formatter = elements[i].setFormat;
+ else if (elements[i].format != null)
+ {
+ if (elements[i].formatClass != null
+ && ! elements[i].formatClass.isInstance(thisArg))
+ throw new IllegalArgumentException("Wrong format class");
- formatter = elements[i].format;
+ formatter = elements[i].format;
+ }
+ else if (thisArg instanceof Number)
+ formatter = NumberFormat.getInstance(locale);
+ else if (thisArg instanceof Date)
+ formatter = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale);
+ else
+ appendBuf.append(thisArg);
}
- else if (thisArg instanceof Number)
- formatter = NumberFormat.getInstance(locale);
- else if (thisArg instanceof Date)
- formatter = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale);
- else
- appendBuf.append(thisArg);
if (fp != null && fp.getField() == i && fp.getFieldAttribute() == Field.ARGUMENT)
fp.setEndIndex(appendBuf.length());
@@ -496,29 +504,18 @@ public class MessageFormat extends Format
}
/**
- * Returns the pattern with the formatted objects.
+ * Returns the pattern with the formatted objects. The first argument
+ * must be a array of Objects.
+ * This is equivalent to format((Object[]) objectArray, appendBuf, fpos)
*
- * @param source The object to be formatted.
- * @param result The StringBuffer where the text is appened.
+ * @param objectArray The object array to be formatted.
+ * @param appendBuf The StringBuffer where the text is appened.
* @param fpos A FieldPosition object (it is ignored).
*/
- public final StringBuffer format (Object singleArg, StringBuffer appendBuf,
+ public final StringBuffer format (Object objectArray, StringBuffer appendBuf,
FieldPosition fpos)
{
- Object[] args;
-
- if (singleArg instanceof Object[])
- {
- // This isn't specified in any manual, but it follows the
- // JDK implementation.
- args = (Object[]) singleArg;
- }
- else
- {
- args = new Object[1];
- args[0] = singleArg;
- }
- return format (args, appendBuf, fpos);
+ return format ((Object[])objectArray, appendBuf, fpos);
}
/**
diff --git a/libjava/java/text/NumberFormat.java b/libjava/java/text/NumberFormat.java
index 47a4eaae575..00d3030f0ee 100644
--- a/libjava/java/text/NumberFormat.java
+++ b/libjava/java/text/NumberFormat.java
@@ -310,7 +310,7 @@ public abstract class NumberFormat extends Format implements Cloneable
try
{
res = ResourceBundle.getBundle("gnu.java.locale.LocaleInformation",
- loc, NumberFormat.class.getClassLoader());
+ loc, ClassLoader.getSystemClassLoader());
}
catch (MissingResourceException x)
{
diff --git a/libjava/java/text/RuleBasedCollator.java b/libjava/java/text/RuleBasedCollator.java
index 23f238e69a9..061d97d1b52 100644
--- a/libjava/java/text/RuleBasedCollator.java
+++ b/libjava/java/text/RuleBasedCollator.java
@@ -39,7 +39,7 @@ package java.text;
import java.util.Enumeration;
import java.util.HashMap;
-import java.util.Vector;
+import java.util.ArrayList;
/* Written using "Java Class Libraries", 2nd edition, plus online
* API docs for JDK 1.2 from http://www.javasoft.com.
@@ -180,7 +180,7 @@ public class RuleBasedCollator extends Collator
* collation elements. It contains an instruction which specifies the new
* state of the generator. The sequence of instruction should not contain
* RESET (it is used by
- * {@link #mergeRules(int,java.lang.String,java.util.Vector,java.util.Vector)})
+ * {@link #mergeRules(int,java.lang.String,java.util.ArrayList,java.util.ArrayList)})
* as a temporary state while merging two sets of instructions.
*/
final static class CollationSorter
@@ -304,10 +304,9 @@ public class RuleBasedCollator extends Collator
* @param patch Rules to be merged into the repository.
* @throws ParseException if it is impossible to find an anchor point for the new rules.
*/
- private void mergeRules(int offset, String starter, Vector main, Vector patch)
+ private void mergeRules(int offset, String starter, ArrayList main, ArrayList patch)
throws ParseException
{
- Enumeration elements = main.elements();
int insertion_point = -1;
int max_length = 0;
@@ -323,11 +322,11 @@ public class RuleBasedCollator extends Collator
while (j < main.size())
{
- CollationSorter rule1 = (CollationSorter) patch.elementAt(i);
- CollationSorter rule2 = (CollationSorter) main.elementAt(j);
+ CollationSorter rule1 = (CollationSorter) patch.get(i);
+ CollationSorter rule2 = (CollationSorter) main.get(j);
if (rule1.textElement.equals(rule2.textElement))
- main.removeElementAt(j);
+ main.remove(j);
else
j++;
}
@@ -336,7 +335,7 @@ public class RuleBasedCollator extends Collator
// Find the insertion point... O(N)
for (int i = 0; i < main.size(); i++)
{
- CollationSorter sorter = (CollationSorter) main.elementAt(i);
+ CollationSorter sorter = (CollationSorter) main.get(i);
int length = findPrefixLength(starter, sorter.textElement);
if (length > max_length)
@@ -362,24 +361,24 @@ public class RuleBasedCollator extends Collator
* sequence. The rest of the subsequence must be appended
* to the end of the sequence.
*/
- CollationSorter sorter = (CollationSorter) patch.elementAt(0);
+ CollationSorter sorter = (CollationSorter) patch.get(0);
CollationSorter expansionPrefix =
- (CollationSorter) main.elementAt(insertion_point-1);
+ (CollationSorter) main.get(insertion_point-1);
sorter.expansionOrdering = starter.substring(max_length); // Skip the first good prefix element
- main.insertElementAt(sorter, insertion_point);
+ main.add(insertion_point, sorter);
/*
* This is a new set of rules. Append to the list.
*/
- patch.removeElementAt(0);
+ patch.remove(0);
insertion_point++;
}
// Now insert all elements of patch at the insertion point.
for (int i = 0; i < patch.size(); i++)
- main.insertElementAt(patch.elementAt(i), i+insertion_point);
+ main.add(i+insertion_point, patch.get(i));
}
/**
@@ -397,7 +396,7 @@ public class RuleBasedCollator extends Collator
* @throws ParseException if something turned wrong during the parsing. To get details
* decode the message.
*/
- private int subParseString(boolean stop_on_reset, Vector v,
+ private int subParseString(boolean stop_on_reset, ArrayList v,
int base_offset, String rules)
throws ParseException
{
@@ -506,7 +505,7 @@ main_parse_loop:
* indicated by the text element.
*/
String subrules = rules.substring(i);
- Vector sorted_rules = new Vector();
+ ArrayList sorted_rules = new ArrayList();
int idx;
// Parse the subrules but do not iterate through all
@@ -591,10 +590,10 @@ main_parse_loop:
* @throws ParseException if something turned wrong during the parsing. To get details
* decode the message.
*/
- private Vector parseString(String rules)
+ private ArrayList parseString(String rules)
throws ParseException
{
- Vector v = new Vector();
+ ArrayList v = new ArrayList();
// result of the first subParseString is not absolute (may be -1 or a
// positive integer). But we do not care.
@@ -607,10 +606,10 @@ main_parse_loop:
* This method uses the sorting instructions built by {@link #parseString}
* to build collation elements which can be directly used to sort strings.
*
- * @param parsedElements Parsed instructions stored in a Vector.
+ * @param parsedElements Parsed instructions stored in a ArrayList.
* @throws ParseException if the order of the instructions are not valid.
*/
- private void buildCollationVector(Vector parsedElements)
+ private void buildCollationVector(ArrayList parsedElements)
throws ParseException
{
int primary_seq = 0;
@@ -622,13 +621,13 @@ main_parse_loop:
final boolean DECREASING = false;
final boolean INCREASING = true;
boolean secondaryType = INCREASING;
- Vector v = new Vector();
+ ArrayList v = new ArrayList();
// elts is completely sorted.
element_loop:
for (int i = 0; i < parsedElements.size(); i++)
{
- CollationSorter elt = (CollationSorter) parsedElements.elementAt(i);
+ CollationSorter elt = (CollationSorter) parsedElements.get(i);
boolean ignoreChar = false;
switch (elt.comparisonType)
@@ -947,7 +946,7 @@ element_loop:
public CollationKey getCollationKey(String source)
{
CollationElementIterator cei = getCollationElementIterator(source);
- Vector vect = new Vector(25);
+ ArrayList vect = new ArrayList();
int ord = cei.next();
cei.reset(); //set to start of string
diff --git a/libjava/java/util/Calendar.java b/libjava/java/util/Calendar.java
index 0c671e1c040..b7ffb338106 100644
--- a/libjava/java/util/Calendar.java
+++ b/libjava/java/util/Calendar.java
@@ -42,6 +42,7 @@ import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
+import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
/**
@@ -377,7 +378,7 @@ public abstract class Calendar implements Serializable, Cloneable
private static ResourceBundle getBundle(Locale locale)
{
return ResourceBundle.getBundle(bundleName, locale,
- Calendar.class.getClassLoader());
+ ClassLoader.getSystemClassLoader());
}
/**
@@ -436,6 +437,16 @@ public abstract class Calendar implements Serializable, Cloneable
return getInstance(TimeZone.getDefault(), locale);
}
+ /**
+ * Cache of locale->calendar-class mappings. This avoids having to do a ResourceBundle
+ * lookup for every getInstance call.
+ */
+ private static HashMap cache = new HashMap();
+
+ /** Preset argument types for calendar-class constructor lookup. */
+ private static Class[] ctorArgTypes
+ = new Class[] {TimeZone.class, Locale.class};
+
/**
* Creates a calendar representing the actual time, using the given
* time zone and locale.
@@ -444,29 +455,58 @@ public abstract class Calendar implements Serializable, Cloneable
*/
public static synchronized Calendar getInstance(TimeZone zone, Locale locale)
{
- String calendarClassName = null;
- ResourceBundle rb = getBundle(locale);
- calendarClassName = rb.getString("calendarClass");
- if (calendarClassName != null)
+ Class calendarClass = (Class) cache.get(locale);
+ Throwable exception = null;
+
+ try
{
- try
+ if (calendarClass == null)
{
- Class calendarClass = Class.forName(calendarClassName);
- if (Calendar.class.isAssignableFrom(calendarClass))
+ ResourceBundle rb = getBundle(locale);
+ String calendarClassName = rb.getString("calendarClass");
+
+ if (calendarClassName != null)
{
- return (Calendar) calendarClass.getConstructor(
- new Class[] { TimeZone.class, Locale.class}
- ).newInstance(new Object[] {zone, locale} );
+ calendarClass = Class.forName(calendarClassName);
+ if (Calendar.class.isAssignableFrom(calendarClass))
+ cache.put(locale, calendarClass);
}
}
- catch (ClassNotFoundException ex) {}
- catch (IllegalAccessException ex) {}
- catch (NoSuchMethodException ex) {}
- catch (InstantiationException ex) {}
- catch (InvocationTargetException ex) {}
- // XXX should we ignore these errors or throw an exception ?
+
+ // GregorianCalendar is by far the most common case. Optimize by
+ // avoiding reflection.
+ if (calendarClass == GregorianCalendar.class)
+ return new GregorianCalendar(zone, locale);
+
+ if (Calendar.class.isAssignableFrom(calendarClass))
+ {
+ Constructor ctor = calendarClass.getConstructor(ctorArgTypes);
+ return (Calendar) ctor.newInstance(new Object[] {zone, locale});
+ }
+ }
+ catch (ClassNotFoundException ex)
+ {
+ exception = ex;
+ }
+ catch (IllegalAccessException ex)
+ {
+ exception = ex;
+ }
+ catch (NoSuchMethodException ex)
+ {
+ exception = ex;
+ }
+ catch (InstantiationException ex)
+ {
+ exception = ex;
+ }
+ catch (InvocationTargetException ex)
+ {
+ exception = ex;
}
- return new GregorianCalendar(zone, locale);
+
+ throw new RuntimeException("Error instantiating calendar for locale " +
+ locale, exception);
}
/**
diff --git a/libjava/java/util/Currency.java b/libjava/java/util/Currency.java
index 472351281fc..d7987b94206 100644
--- a/libjava/java/util/Currency.java
+++ b/libjava/java/util/Currency.java
@@ -55,7 +55,7 @@ public final class Currency implements Serializable
{
this.locale = loc;
this.res = ResourceBundle.getBundle ("gnu.java.locale.LocaleInformation",
- locale, Currency.class.getClassLoader());
+ locale, ClassLoader.getSystemClassLoader());
}
/**
diff --git a/libjava/java/util/GregorianCalendar.java b/libjava/java/util/GregorianCalendar.java
index 9de433389bd..fcef6bb4560 100644
--- a/libjava/java/util/GregorianCalendar.java
+++ b/libjava/java/util/GregorianCalendar.java
@@ -91,7 +91,7 @@ public class GregorianCalendar extends Calendar
private static ResourceBundle getBundle(Locale locale)
{
return ResourceBundle.getBundle(bundleName, locale,
- GregorianCalendar.class.getClassLoader());
+ ClassLoader.getSystemClassLoader());
}
/**
diff --git a/libjava/java/util/Locale.java b/libjava/java/util/Locale.java
index cc6d65f5f65..4e8883994ed 100644
--- a/libjava/java/util/Locale.java
+++ b/libjava/java/util/Locale.java
@@ -186,7 +186,7 @@ public final class Locale implements Serializable, Cloneable
*
* @serial should be -1 in serial streams
*/
- private int hashcode;
+ private transient int hashcode;
/**
* The default locale. Except for during bootstrapping, this should never be
@@ -709,10 +709,8 @@ public final class Locale implements Serializable, Cloneable
*
* @return the hashcode
*/
- public synchronized int hashCode()
+ public int hashCode()
{
- // This method is synchronized because writeObject() might reset
- // the hashcode.
return hashcode;
}
@@ -731,10 +729,6 @@ public final class Locale implements Serializable, Cloneable
return false;
Locale l = (Locale) obj;
- // ??? We might also want to add:
- // hashCode() == l.hashCode()
- // But this is a synchronized method. Is the overhead worth it?
- // Measure this to make a decision.
return (language == l.language
&& country == l.country
&& variant == l.variant);
@@ -745,17 +739,19 @@ public final class Locale implements Serializable, Cloneable
*
* @param output the stream to write to
* @throws IOException if the write fails
- * @serialData the hashcode should always be written as -1, and recomputed
- * when reading it back
+ * @serialData The first three fields are Strings representing language,
+ * country, and variant. The fourth field is a placeholder for
+ * the cached hashcode, but this is always written as -1, and
+ * recomputed when reading it back.
*/
- private synchronized void writeObject(ObjectOutputStream output)
+ private void writeObject(ObjectOutputStream s)
throws IOException
{
- // Synchronized so that hashCode() doesn't get wrong value.
- int tmpHashcode = hashcode;
- hashcode = -1;
- output.defaultWriteObject();
- hashcode = tmpHashcode;
+ s.writeObject(language);
+ s.writeObject(country);
+ s.writeObject(variant);
+ // Hashcode field is always written as -1.
+ s.writeInt(-1);
}
/**
@@ -766,10 +762,13 @@ public final class Locale implements Serializable, Cloneable
* @throws ClassNotFoundException if reading fails
* @serialData the hashCode is always invalid and must be recomputed
*/
- private void readObject(ObjectInputStream input)
+ private void readObject(ObjectInputStream s)
throws IOException, ClassNotFoundException
{
- input.defaultReadObject();
+ language = ((String) s.readObject()).intern();
+ country = ((String) s.readObject()).intern();
+ variant = ((String) s.readObject()).intern();
+ // Recompute hashcode.
hashcode = language.hashCode() ^ country.hashCode() ^ variant.hashCode();
}
} // class Locale
diff --git a/libjava/java/util/ResourceBundle.java b/libjava/java/util/ResourceBundle.java
index 264152a8cb7..12aaa6de310 100644
--- a/libjava/java/util/ResourceBundle.java
+++ b/libjava/java/util/ResourceBundle.java
@@ -105,12 +105,9 @@ public abstract class ResourceBundle
private static native ClassLoader getCallingClassLoader();
/**
- * The resource bundle cache. This is a two-level hash map: The key
- * is the class loader, the value is a new HashMap. The key of this
- * second hash map is the localized name, the value is a soft
- * references to the resource bundle.
+ * The resource bundle cache.
*/
- private static Map resourceBundleCache;
+ private static Map bundleCache;
/**
* The last default Locale we saw. If this ever changes then we have to
@@ -172,15 +169,11 @@ public abstract class ResourceBundle
public final Object getObject(String key)
{
for (ResourceBundle bundle = this; bundle != null; bundle = bundle.parent)
- try
- {
- Object o = bundle.handleGetObject(key);
- if (o != null)
- return o;
- }
- catch (MissingResourceException ex)
- {
- }
+ {
+ Object o = bundle.handleGetObject(key);
+ if (o != null)
+ return o;
+ }
throw new MissingResourceException("Key not found", getClass().getName(),
key);
@@ -220,10 +213,12 @@ public abstract class ResourceBundle
* @throws MissingResourceException if the resource bundle can't be found
* @throws NullPointerException if baseName is null
*/
- public static final ResourceBundle getBundle(String baseName)
+ public static ResourceBundle getBundle(String baseName)
{
- return getBundle(baseName, Locale.getDefault(),
- getCallingClassLoader());
+ ClassLoader cl = getCallingClassLoader();
+ if (cl == null)
+ cl = ClassLoader.getSystemClassLoader();
+ return getBundle(baseName, Locale.getDefault(), cl);
}
/**
@@ -238,11 +233,74 @@ public abstract class ResourceBundle
* @throws MissingResourceException if the resource bundle can't be found
* @throws NullPointerException if baseName or locale is null
*/
- public static final ResourceBundle getBundle(String baseName,
- Locale locale)
+ public static ResourceBundle getBundle(String baseName, Locale locale)
{
- return getBundle(baseName, locale, getCallingClassLoader());
+ ClassLoader cl = getCallingClassLoader();
+ if (cl == null)
+ cl = ClassLoader.getSystemClassLoader();
+ return getBundle(baseName, locale, cl);
+ }
+
+ /** Cache key for the ResourceBundle cache. Resource bundles are keyed
+ by the combination of bundle name, locale, and class loader. */
+ private static class BundleKey implements Cloneable
+ {
+ String baseName;
+ Locale locale;
+ ClassLoader classLoader;
+ int hashcode;
+
+ BundleKey() {}
+
+ BundleKey(String s, Locale l, ClassLoader cl)
+ {
+ set(s, l, cl);
+ }
+
+ void set(String s, Locale l, ClassLoader cl)
+ {
+ baseName = s;
+ locale = l;
+ classLoader = cl;
+ hashcode = baseName.hashCode() ^ locale.hashCode() ^
+ classLoader.hashCode();
+ }
+
+ public int hashCode()
+ {
+ return hashcode;
+ }
+
+ public boolean equals(Object o)
+ {
+ if (! (o instanceof BundleKey))
+ return false;
+ BundleKey key = (BundleKey) o;
+ return hashcode == key.hashcode &&
+ baseName.equals(key.baseName) &&
+ locale.equals(key.locale) &&
+ classLoader.equals(key.classLoader);
+ }
+
+ public Object clone()
+ {
+ Object clone = null;
+ try
+ {
+ clone = super.clone();
+ }
+ catch (CloneNotSupportedException x) {}
+
+ return clone;
+ }
}
+
+ /** A cache lookup key. This avoids having to a new one for every
+ * getBundle() call. */
+ private static BundleKey lookupKey = new BundleKey();
+
+ /** Singleton cache entry to represent previous failed lookups. */
+ private static Object nullEntry = new Object();
/**
* Get the appropriate ResourceBundle for the given locale. The following
@@ -320,81 +378,59 @@ public abstract class ResourceBundle
*/
// This method is synchronized so that the cache is properly
// handled.
- public static final synchronized ResourceBundle getBundle
+ public static synchronized ResourceBundle getBundle
(String baseName, Locale locale, ClassLoader classLoader)
{
- // This implementation searches the bundle in the reverse direction
- // and builds the parent chain on the fly.
+ // If the default locale changed since the last time we were called,
+ // all cache entries are invalidated.
Locale defaultLocale = Locale.getDefault();
if (defaultLocale != lastDefaultLocale)
{
- resourceBundleCache = new HashMap();
+ bundleCache = new HashMap();
lastDefaultLocale = defaultLocale;
}
- HashMap cache = (HashMap) resourceBundleCache.get(classLoader);
- StringBuffer sb = new StringBuffer(60);
- sb.append(baseName).append('_').append(locale);
- String name = sb.toString();
- if (cache == null)
+ // This will throw NullPointerException if any arguments are null.
+ lookupKey.set(baseName, locale, classLoader);
+
+ Object obj = bundleCache.get(lookupKey);
+ ResourceBundle rb = null;
+ if (obj instanceof ResourceBundle)
{
- cache = new HashMap();
- resourceBundleCache.put(classLoader, cache);
+ return (ResourceBundle) obj;
}
- else if (cache.containsKey(name))
+ else if (obj == nullEntry)
{
- Reference ref = (Reference) cache.get(name);
- // If REF is null, that means that we added a `null' value to
- // the hash map. That means we failed to find the bundle
- // previously, and we cached that fact. The JDK does this, so
- // it must be ok.
- if (ref == null)
- throw new MissingResourceException("Bundle " + baseName
- + " not found",
- baseName, "");
- else
- {
- ResourceBundle rb = (ResourceBundle) ref.get();
- if (rb != null)
- {
- // RB should already have the right parent, except if
- // something very strange happened.
- return rb;
- }
- // If RB is null, then we previously found it but it was
- // collected. So we try again.
- }
+ // Lookup has failed previously. Fall through.
}
-
- // It is ok if this returns null. We aren't required to have the
- // base bundle.
- ResourceBundle baseBundle = tryBundle(baseName, emptyLocale,
- classLoader, null, cache);
-
- // Now use our locale, followed by the default locale. We only
- // need to try the default locale if our locale is different, and
- // if our locale failed to yield a result other than the base
- // bundle.
- ResourceBundle bundle = tryLocalBundle(baseName, locale,
- classLoader, baseBundle, cache);
- if (bundle == baseBundle && !locale.equals(defaultLocale))
+ else
{
- bundle = tryLocalBundle(baseName, defaultLocale,
- classLoader, baseBundle, cache);
- // We need to record that the argument locale maps to the
- // bundle we just found. If we didn't find a bundle, record
- // that instead.
- if (bundle == null)
- cache.put(name, null);
+ // First, look for a bundle for the specified locale. We don't want
+ // the base bundle this time.
+ boolean wantBase = locale.equals(defaultLocale);
+ ResourceBundle bundle = tryBundle(baseName, locale, classLoader,
+ wantBase);
+
+ // Try the default locale if neccessary.
+ if (bundle == null && !locale.equals(defaultLocale))
+ bundle = tryBundle(baseName, defaultLocale, classLoader, true);
+
+ BundleKey key = (BundleKey) lookupKey.clone();
+ if (bundle == null)
+ {
+ // Cache the fact that this lookup has previously failed.
+ bundleCache.put(key, nullEntry);
+ }
else
- cache.put(name, new SoftReference(bundle));
+ {
+ // Cache the result and return it.
+ bundleCache.put(key, bundle);
+ return bundle;
+ }
}
- if (bundle == null)
- throw new MissingResourceException("Bundle " + baseName + " not found",
- baseName, "");
-
- return bundle;
+ throw new MissingResourceException("Bundle " + baseName + " not found",
+ baseName, "");
}
/**
@@ -423,44 +459,13 @@ public abstract class ResourceBundle
* Tries to load a class or a property file with the specified name.
*
* @param localizedName the name
- * @param locale the locale, that must be used exactly
* @param classloader the classloader
- * @param bundle the backup (parent) bundle
* @return the resource bundle if it was loaded, otherwise the backup
*/
- private static final ResourceBundle tryBundle(String localizedName,
- Locale locale,
- ClassLoader classloader,
- ResourceBundle bundle,
- HashMap cache)
+ private static ResourceBundle tryBundle(String localizedName,
+ ClassLoader classloader)
{
- // First look into the cache.
- if (cache.containsKey(localizedName))
- {
- Reference ref = (Reference) cache.get(localizedName);
- // If REF is null, that means that we added a `null' value to
- // the hash map. That means we failed to find the bundle
- // previously, and we cached that fact. The JDK does this, so
- // it must be ok.
- if (ref == null)
- return null;
- else
- {
- ResourceBundle rb = (ResourceBundle) ref.get();
- if (rb != null)
- {
- // RB should already have the right parent, except if
- // something very strange happened.
- return rb;
- }
- // If RB is null, then we previously found it but it was
- // collected. So we try again.
- }
- }
-
- // foundBundle holds exact matches for the localizedName resource
- // bundle, which may later be cached.
- ResourceBundle foundBundle = null;
+ ResourceBundle bundle = null;
try
{
Class rbClass;
@@ -468,48 +473,36 @@ public abstract class ResourceBundle
rbClass = Class.forName(localizedName);
else
rbClass = classloader.loadClass(localizedName);
- foundBundle = (ResourceBundle) rbClass.newInstance();
- foundBundle.parent = bundle;
- foundBundle.locale = locale;
- }
- catch (Exception ex)
- {
- // ignore them all
- foundBundle = null;
+ bundle = (ResourceBundle) rbClass.newInstance();
}
- if (foundBundle == null)
+ catch (IllegalAccessException ex) {}
+ catch (InstantiationException ex) {}
+ catch (ClassNotFoundException ex) {}
+
+ if (bundle == null)
{
try
{
InputStream is;
- final String resourceName
+ String resourceName
= localizedName.replace('.', '/') + ".properties";
if (classloader == null)
is = ClassLoader.getSystemResourceAsStream(resourceName);
else
is = classloader.getResourceAsStream(resourceName);
if (is != null)
- {
- foundBundle = new PropertyResourceBundle(is);
- foundBundle.parent = bundle;
- foundBundle.locale = locale;
- }
+ bundle = new PropertyResourceBundle(is);
}
catch (IOException ex)
{
+ MissingResourceException mre = new MissingResourceException
+ ("Failed to load bundle", localizedName, "");
+ mre.initCause(ex);
+ throw mre;
}
}
- // Put the result into the hash table. If we didn't find anything
- // here, we record our parent bundle. If we record `null' that means
- // nothing, not even the base, was found.
- if (foundBundle == null)
- foundBundle = bundle;
- if (foundBundle == null)
- cache.put(localizedName, null);
- else
- cache.put(localizedName, new SoftReference(foundBundle));
- return foundBundle;
+ return bundle;
}
/**
@@ -520,47 +513,71 @@ public abstract class ResourceBundle
* @param locale the locale
* @param classloader the classloader
* @param bundle the backup (parent) bundle
+ * @param wantBase whether a resource bundle made only from the base name
+ * (with no locale information attached) should be returned.
* @return the resource bundle if it was loaded, otherwise the backup
*/
- private static final ResourceBundle tryLocalBundle(String baseName,
- Locale locale,
- ClassLoader classloader,
- ResourceBundle bundle,
- HashMap cache)
+ private static ResourceBundle tryBundle(String baseName, Locale locale,
+ ClassLoader classLoader,
+ boolean wantBase)
{
- final String language = locale.getLanguage();
- final String country = locale.getCountry();
- final String variant = locale.getVariant();
+ String language = locale.getLanguage();
+ String country = locale.getCountry();
+ String variant = locale.getVariant();
+
+ int baseLen = baseName.length();
- StringBuffer sb = new StringBuffer(60);
- sb.append(baseName);
- sb.append('_');
+ // Build up a StringBuffer containing the complete bundle name, fully
+ // qualified by locale.
+ StringBuffer sb = new StringBuffer(baseLen + variant.length() + 7);
+ sb.append(baseName);
+
if (language.length() > 0)
{
+ sb.append('_');
sb.append(language);
- bundle = tryBundle(sb.toString(), new Locale(language),
- classloader, bundle, cache);
- }
- // If LANGUAGE was empty, we still need to try the other
- // components, and the `_' is required.
- sb.append('_');
-
- if (country.length() > 0)
- {
- sb.append(country);
- bundle = tryBundle(sb.toString(), new Locale(language, country),
- classloader, bundle, cache);
+
+ if (country.length() > 0)
+ {
+ sb.append('_');
+ sb.append(country);
+
+ if (variant.length() > 0)
+ {
+ sb.append('_');
+ sb.append(variant);
+ }
+ }
}
- sb.append('_');
- if (variant.length() > 0)
+ // Now try to load bundles, starting with the most specialized name.
+ // Build up the parent chain as we go.
+ String bundleName = sb.toString();
+ ResourceBundle first = null; // The most specialized bundle.
+ ResourceBundle last = null; // The least specialized bundle.
+
+ while (true)
{
- sb.append(variant);
- bundle = tryBundle(sb.toString(), locale,
- classloader, bundle, cache);
+ ResourceBundle foundBundle = tryBundle(bundleName, classLoader);
+ if (foundBundle != null)
+ {
+ if (first == null)
+ first = foundBundle;
+ if (last != null)
+ last.parent = foundBundle;
+ foundBundle.locale = locale;
+ last = foundBundle;
+ }
+ int idx = bundleName.lastIndexOf('_');
+ // Try the non-localized base name only if we already have a
+ // localized child bundle, or wantBase is true.
+ if (idx > baseLen || (idx == baseLen && (first != null || wantBase)))
+ bundleName = bundleName.substring(0, idx);
+ else
+ break;
}
-
- return bundle;
+
+ return first;
}
}
diff --git a/libjava/java/util/zip/DeflaterOutputStream.java b/libjava/java/util/zip/DeflaterOutputStream.java
index 6cc3fbf9c23..7ae7d193acd 100644
--- a/libjava/java/util/zip/DeflaterOutputStream.java
+++ b/libjava/java/util/zip/DeflaterOutputStream.java
@@ -60,18 +60,23 @@ import java.io.IOException;
*/
public class DeflaterOutputStream extends FilterOutputStream
{
- public void close () throws IOException
- {
- finish ();
- out.close();
- }
+ /**
+ * This buffer is used temporarily to retrieve the bytes from the
+ * deflater and write them to the underlying output stream.
+ */
+ protected byte[] buf;
+ /**
+ * The deflater which is used to deflate the stream.
+ */
+ protected Deflater def;
+
/**
* Deflates everything in the def's input buffers. This will call
* <code>def.deflate()</code> until all bytes from the input buffers
* are processed.
*/
- protected void deflate () throws IOException
+ protected void deflate() throws IOException
{
do
{
@@ -87,9 +92,9 @@ public class DeflaterOutputStream extends FilterOutputStream
* default buffer size.
* @param out the output stream where deflated output should be written.
*/
- public DeflaterOutputStream (OutputStream out)
+ public DeflaterOutputStream(OutputStream out)
{
- this (out, new Deflater (), 512);
+ this(out, new Deflater(), 512);
}
/**
@@ -98,9 +103,9 @@ public class DeflaterOutputStream extends FilterOutputStream
* @param out the output stream where deflated output should be written.
* @param defl the underlying deflater.
*/
- public DeflaterOutputStream (OutputStream out, Deflater defl)
+ public DeflaterOutputStream(OutputStream out, Deflater defl)
{
- this (out, defl, 512);
+ this(out, defl, 512);
}
/**
@@ -113,7 +118,7 @@ public class DeflaterOutputStream extends FilterOutputStream
*/
public DeflaterOutputStream(OutputStream out, Deflater defl, int bufsize)
{
- super (out);
+ super(out);
if (bufsize <= 0)
throw new IllegalArgumentException("bufsize <= 0");
buf = new byte[bufsize];
@@ -125,11 +130,11 @@ public class DeflaterOutputStream extends FilterOutputStream
* was the only way to ensure that all bytes are flushed in Sun's
* JDK.
*/
- public void finish () throws IOException
+ public void finish() throws IOException
{
inbufWrite();
def.finish();
- while (! def.finished ())
+ while (! def.finished())
{
int len = def.deflate(buf, 0, buf.length);
if (len > 0)
@@ -137,29 +142,48 @@ public class DeflaterOutputStream extends FilterOutputStream
}
}
- public void write (int bval) throws IOException
+ /**
+ * Calls finish() and closes the stream.
+ */
+ public void close() throws IOException
+ {
+ finish();
+ out.close();
+ }
+
+ /**
+ * Writes a single byte to the compressed output stream.
+ * @param bval the byte value.
+ */
+ public void write(int bval) throws IOException
{
if (inbuf == null)
inbuf = new byte[128];
else if (inbufLength == inbuf.length)
- inbufWrite ();
+ inbufWrite();
inbuf[inbufLength++] = (byte) bval;
}
- public void write (byte[] buf, int off, int len) throws IOException
+ /**
+ * Writes a len bytes from an array to the compressed stream.
+ * @param buf the byte array.
+ * @param off the offset into the byte array where to start.
+ * @param len the number of bytes to write.
+ */
+ public void write(byte[] buf, int off, int len) throws IOException
{
- inbufWrite ();
- def.setInput (buf, off, len);
- deflate ();
+ inbufWrite();
+ def.setInput(buf, off, len);
+ deflate();
}
- private void inbufWrite () throws IOException
+ private void inbufWrite() throws IOException
{
if (inbufLength > 0)
{
int size = inbufLength;
inbufLength = 0;
- write (inbuf, 0, size);
+ write(inbuf, 0, size);
}
}
@@ -167,10 +191,4 @@ public class DeflaterOutputStream extends FilterOutputStream
private byte[] inbuf;
// Used length of inbuf.
private int inbufLength;
-
- // The retrieval buffer.
- protected byte[] buf;
-
- // Deflater used to compress data.
- protected Deflater def;
}
diff --git a/libjava/java/util/zip/GZIPInputStream.java b/libjava/java/util/zip/GZIPInputStream.java
index 6699e56ee69..9eef73eb945 100644
--- a/libjava/java/util/zip/GZIPInputStream.java
+++ b/libjava/java/util/zip/GZIPInputStream.java
@@ -56,6 +56,43 @@ public class GZIPInputStream
*/
public static final int GZIP_MAGIC = 0x8b1f;
+ static final int Z_DEFLATED = 8;
+
+ /**
+ * The mask for bit 1 of the flag byte.
+ */
+ static final int HEAD_CRC = 0x02;
+
+ /**
+ * The mask for bit 2 of the flag byte.
+ */
+ static final int EXTRA_FIELD = 0x04;
+
+ /**
+ * The mask for bit 3 of the flag byte.
+ */
+ static final int ORIG_NAME = 0x08;
+
+ /**
+ * The mask for bit 4 of the flag byte.
+ */
+ static final int COMMENT = 0x10;
+
+ /**
+ * The mask for all reserved bits of the flag byte.
+ */
+ static final int RESERVED = 0xe0;
+
+ /**
+ * The CRC-32 checksum value for uncompressed data.
+ */
+ protected CRC32 crc;
+
+ /**
+ * Indicates whether or not the end of the stream has been reached.
+ */
+ protected boolean eos;
+
/**
* Creates a GZIPInputStream with the default buffer size.
*
@@ -67,7 +104,7 @@ public class GZIPInputStream
public GZIPInputStream(InputStream in)
throws IOException
{
- this(in, 512);
+ this(in, 4096);
}
/**
@@ -210,18 +247,4 @@ public class GZIPInputStream
return (((buf[offset + 3] & 0xFF) << 24) + ((buf[offset + 2] & 0xFF) << 16)
+ ((buf[offset + 1] & 0xFF) << 8) + (buf[offset] & 0xFF));
}
-
- // Checksum used by this input stream.
- protected CRC32 crc;
-
- // Indicates whether end-of-stream has been reached.
- protected boolean eos;
-
- // Some constants from zlib.
- static final int Z_DEFLATED = 8;
- static final int HEAD_CRC = 0x02;
- static final int EXTRA_FIELD = 0x04;
- static final int ORIG_NAME = 0x08;
- static final int COMMENT = 0x10;
- static final int RESERVED = 0xe0;
}
diff --git a/libjava/java/util/zip/GZIPOutputStream.java b/libjava/java/util/zip/GZIPOutputStream.java
index 939097ed7bb..4ec6cb1a6b8 100644
--- a/libjava/java/util/zip/GZIPOutputStream.java
+++ b/libjava/java/util/zip/GZIPOutputStream.java
@@ -41,8 +41,12 @@ import java.io.IOException;
import java.io.OutputStream;
/**
+ * This filter stream is used to compress a stream into a "GZIP" stream.
+ * The "GZIP" format is described in RFC 1952.
+ *
+ * @author John Leuner
* @author Tom Tromey
- * @date May 17, 1999
+ * @since JDK 1.1
*/
/* Written using on-line Java Platform 1.2 API Specification
@@ -52,75 +56,91 @@ import java.io.OutputStream;
public class GZIPOutputStream extends DeflaterOutputStream
{
- public void close () throws IOException
- {
- finish ();
- out.close ();
- }
-
- public void finish () throws IOException
- {
- super.finish();
- put4 ((int) crc.getValue());
- put4 (def.getTotalIn());
- }
+ /**
+ * CRC-32 value for uncompressed data
+ */
+ protected CRC32 crc;
- public GZIPOutputStream (OutputStream out) throws IOException
+ /**
+ * Creates a GZIPOutputStream with the default buffer size
+ *
+ * @param out The stream to read data (to be compressed) from
+ *
+ */
+ public GZIPOutputStream(OutputStream out) throws IOException
{
- this (out, 512);
+ this(out, 4096);
}
- public GZIPOutputStream (OutputStream out, int readsize) throws IOException
+ /**
+ * Creates a GZIPOutputStream with the specified buffer size
+ *
+ * @param out The stream to read compressed data from
+ * @param size Size of the buffer to use
+ */
+ public GZIPOutputStream(OutputStream out, int size) throws IOException
{
- super (out, new Deflater (Deflater.DEFAULT_COMPRESSION, true), readsize);
-
- put2 (GZIPInputStream.GZIP_MAGIC);
- out.write (GZIPInputStream.Z_DEFLATED);
+ super(out, new Deflater(Deflater.DEFAULT_COMPRESSION, true), size);
+ crc = new CRC32();
+ put2(GZIPInputStream.GZIP_MAGIC);
+ out.write(GZIPInputStream.Z_DEFLATED);
// No flags for now.
- out.write (0);
+ out.write(0);
// No time either.
- put2 (0);
- put2 (0);
+ put2(0);
+ put2(0);
// No xflags either.
- out.write (0);
+ out.write(0);
// FIXME: unknown OS.
- out.write (255);
-
- crc = new CRC32 ();
+ out.write(255);
}
- public synchronized void write (int bval) throws IOException
+ public synchronized void write(int bval) throws IOException
{
- super.write (bval);
- crc.update (bval);
+ super.write(bval);
+ crc.update(bval);
}
- public synchronized void write (byte[] buf) throws IOException
+ public synchronized void write(byte[] buf) throws IOException
{
- write (buf, 0, buf.length);
+ write(buf, 0, buf.length);
}
- public synchronized void write (byte[] buf, int off, int len)
+ public synchronized void write(byte[] buf, int off, int len)
throws IOException
{
super.write(buf, off, len);
crc.update(buf, off, len);
}
- private final void put2 (int i) throws IOException
+ /**
+ * Writes remaining compressed output data to the output stream
+ * and closes it.
+ */
+ public void close() throws IOException
{
- out.write (i);
- out.write (i >> 8);
+ finish();
+ out.close();
}
- private final void put4 (int i) throws IOException
+ public void finish() throws IOException
{
- out.write (i);
- out.write (i >> 8);
- out.write (i >> 16);
- out.write (i >> 24);
+ super.finish();
+ put4((int) crc.getValue());
+ put4(def.getTotalIn());
}
- // Checksum used by this stream.
- protected CRC32 crc;
+ private final void put2(int i) throws IOException
+ {
+ out.write(i);
+ out.write(i >> 8);
+ }
+
+ private final void put4 (int i) throws IOException
+ {
+ out.write(i);
+ out.write(i >> 8);
+ out.write(i >> 16);
+ out.write(i >> 24);
+ }
}
diff --git a/libjava/java/util/zip/Inflater.java b/libjava/java/util/zip/Inflater.java
index 28e89ea4449..5b6921a7029 100644
--- a/libjava/java/util/zip/Inflater.java
+++ b/libjava/java/util/zip/Inflater.java
@@ -251,7 +251,7 @@ public class Inflater
* @param buffer the input.
* @exception IllegalStateException if no input is needed.
*/
- public void setInput (byte[] buf)
+ public void setInput (byte[] buf)
{
setInput (buf, 0, buf.length);
}
diff --git a/libjava/java/util/zip/InflaterInputStream.java b/libjava/java/util/zip/InflaterInputStream.java
index 9fac83fc6dc..27c29ff41df 100644
--- a/libjava/java/util/zip/InflaterInputStream.java
+++ b/libjava/java/util/zip/InflaterInputStream.java
@@ -70,12 +70,6 @@ public class InflaterInputStream extends FilterInputStream
*/
protected int len;
- protected void fill () throws IOException
- {
- len = in.read(buf, 0, buf.length);
- if (len != -1)
- inf.setInput(buf, 0, len);
- }
/**
* Create an InflaterInputStream with the default decompresseor
@@ -85,7 +79,7 @@ public class InflaterInputStream extends FilterInputStream
*/
public InflaterInputStream(InputStream in)
{
- this (in, new Inflater (), 512);
+ this(in, new Inflater(), 4096);
}
/**
@@ -97,7 +91,7 @@ public class InflaterInputStream extends FilterInputStream
*/
public InflaterInputStream(InputStream in, Inflater inf)
{
- this (in, inf, 512);
+ this(in, inf, 4096);
}
/**
@@ -113,25 +107,53 @@ public class InflaterInputStream extends FilterInputStream
super(in);
if (in == null)
- throw new NullPointerException ("in may not be null");
+ throw new NullPointerException("in may not be null");
if (inf == null)
- throw new NullPointerException ("inf may not be null");
+ throw new NullPointerException("inf may not be null");
if (size < 0)
- throw new IllegalArgumentException ("size may not be negative");
+ throw new IllegalArgumentException("size may not be negative");
this.inf = inf;
this.buf = new byte [size];
}
- public int read () throws IOException
+ /**
+ * Returns 0 once the end of the stream (EOF) has been reached.
+ * Otherwise returns 1.
+ */
+ public int available() throws IOException
{
- byte[] buf = new byte[1];
- int r = read (buf, 0, 1);
- if (r != -1)
- r = buf[0] & 0xff;
- return r;
+ // According to the JDK 1.2 docs, this should only ever return 0
+ // or 1 and should not be relied upon by Java programs.
+ if (inf == null)
+ throw new IOException("stream closed");
+ return inf.finished() ? 0 : 1;
}
+ /**
+ * Closes the input stream
+ */
+ public synchronized void close() throws IOException
+ {
+ inf = null;
+ super.close();
+ }
+
+ /**
+ * Fills the buffer with more data to decompress.
+ */
+ protected void fill() throws IOException
+ {
+ if (in == null)
+ throw new ZipException ("InflaterInputStream is closed");
+
+ len = in.read(buf, 0, buf.length);
+
+ if (len < 0)
+ throw new ZipException("Deflated stream ends early.");
+
+ inf.setInput(buf, 0, len);
+ }
/**
* Decompresses data into the byte array
@@ -143,17 +165,17 @@ public class InflaterInputStream extends FilterInputStream
public int read(byte[] b, int off, int len) throws IOException
{
if (inf == null)
- throw new IOException ("stream closed");
+ throw new IOException("stream closed");
if (len == 0)
return 0;
if (inf.finished())
return -1;
int count = 0;
- while (count == 0)
+ for (;;)
{
if (inf.needsInput())
- fill ();
+ fill();
try
{
@@ -166,30 +188,17 @@ public class InflaterInputStream extends FilterInputStream
return -1;
}
if (inf.needsDictionary())
- throw new ZipException ("Inflater needs Dictionary");
+ throw new ZipException("Inflater needs Dictionary");
}
}
catch (DataFormatException dfe)
{
throw new ZipException(dfe.getMessage());
}
- }
- return count;
- }
- public void close () throws IOException
- {
- inf = null;
- super.close ();
- }
-
- public int available () throws IOException
- {
- // According to the JDK 1.2 docs, this should only ever return 0
- // or 1 and should not be relied upon by Java programs.
- if (inf == null)
- throw new IOException ("stream closed");
- return inf.finished () ? 0 : 1;
+ if (count > 0)
+ return count;
+ }
}
/**
@@ -200,25 +209,27 @@ public class InflaterInputStream extends FilterInputStream
public long skip(long n) throws IOException
{
if (inf == null)
- throw new IOException ("stream closed");
+ throw new IOException("stream closed");
+ if (n < 0)
+ throw new IllegalArgumentException();
if (n == 0)
return 0;
- int min = (int) Math.min(n, 1024);
- byte[] buf = new byte[min];
+ int buflen = (int) Math.min(n, 2048);
+ byte[] tmpbuf = new byte[buflen];
- long s = 0;
- while (n > 0)
+ long skipped = 0L;
+ while (n > 0L)
{
- int r = read (buf, 0, min);
- if (r == -1)
+ int numread = read(tmpbuf, 0, buflen);
+ if (numread <= 0)
break;
- n -= r;
- s += r;
- min = (int) Math.min(n, 1024);
+ n -= numread;
+ skipped += numread;
+ buflen = (int) Math.min(n, 2048);
}
- return s;
+ return skipped;
}
}
diff --git a/libjava/javax/swing/AbstractButton.java b/libjava/javax/swing/AbstractButton.java
index 745afc92467..3c2a4cdea7b 100644
--- a/libjava/javax/swing/AbstractButton.java
+++ b/libjava/javax/swing/AbstractButton.java
@@ -163,19 +163,19 @@ public abstract class AbstractButton extends JComponent
Icon pressed_icon;
/** The icon displayed when the button is disabled. */
- Icon disabled_icon;
+ Icon disabeldIcon;
/** The icon displayed when the button is selected. */
- Icon selected_icon;
+ Icon selectedIcon;
/** The icon displayed when the button is selected but disabled. */
- Icon disabled_selected_icon;
+ Icon disabledSelectedIcon;
/** The icon displayed when the button is rolled over. */
- Icon rollover_icon;
+ Icon rolloverIcon;
/** The icon displayed when the button is selected and rolled over. */
- Icon rollover_selected_icon;
+ Icon rolloverSelectedIcon;
/** The icon currently displayed. */
Icon current_icon;
@@ -183,26 +183,32 @@ public abstract class AbstractButton extends JComponent
/** The text displayed in the button. */
String text;
+ /** The gap between icon and text, if both icon and text are non-<code>null</code>. */
+ int iconTextGap;
+
/** The vertical alignment of the button's text and icon. */
- int vert_align;
+ int verticalAlignment;
/** The horizontal alignment of the button's text and icon. */
- int hori_align;
+ int horizontalAlignment;
/** The horizontal position of the button's text relative to its icon. */
- int hori_text_pos;
+ int horizontalTextPosition;
/** The vertical position of the button's text relative to its icon. */
- int vert_text_pos;
+ int verticalTextPosition;
/** Whether or not the button paints its border. */
- boolean paint_border;
+ boolean borderPainted;
/** Whether or not the button paints its focus state. */
- boolean paint_focus;
+ boolean focusPainted;
/** Whether or not the button fills its content area. */
- boolean content_area_filled;
+ boolean contentAreaFilled;
+
+ /** Whether rollover is enabled. */
+ boolean rollOverEnabled;
/** The action taken when the button is clicked. */
Action action;
@@ -230,6 +236,9 @@ public abstract class AbstractButton extends JComponent
Action. */
PropertyChangeListener actionPropertyChangeListener;
+ /** ChangeEvent that is fired to button's ChangeEventListeners */
+ private ChangeEvent changeEvent = new ChangeEvent(this);
+
/** Fired in a PropertyChangeEvent when the "borderPainted" property changes. */
public static final String BORDER_PAINTED_CHANGED_PROPERTY = "borderPainted";
@@ -533,17 +542,20 @@ public abstract class AbstractButton extends JComponent
model.addChangeListener(changeListener);
model.addItemListener(itemListener);
- hori_align = CENTER;
- hori_text_pos = TRAILING;
- vert_align = CENTER;
- vert_text_pos = CENTER;
- paint_border = true;
- content_area_filled = true;
+ horizontalAlignment = CENTER;
+ horizontalTextPosition = TRAILING;
+ verticalAlignment = CENTER;
+ verticalTextPosition = CENTER;
+ borderPainted = true;
+ contentAreaFilled = true;
+
+ iconTextGap = 4;
setAlignmentX(LEFT_ALIGNMENT);
setAlignmentY(CENTER_ALIGNMENT);
addFocusListener(new ButtonFocusListener());
+ setDisplayedMnemonicIndex(-1);
}
/**
@@ -642,6 +654,7 @@ public abstract class AbstractButton extends JComponent
*/
public void fireItemStateChanged(ItemEvent e)
{
+ e.setSource(this);
EventListener[] ll = listenerList.getListeners(ItemListener.class);
for (int i = 0; i < ll.length; i++)
((ItemListener)ll[i]).itemStateChanged(e);
@@ -655,6 +668,7 @@ public abstract class AbstractButton extends JComponent
*/
public void fireActionPerformed(ActionEvent e)
{
+ e.setSource(this);
EventListener[] ll = listenerList.getListeners(ActionListener.class);
for (int i = 0; i < ll.length; i++)
((ActionListener)ll[i]).actionPerformed(e);
@@ -671,7 +685,7 @@ public abstract class AbstractButton extends JComponent
{
EventListener[] ll = listenerList.getListeners(ChangeListener.class);
for (int i = 0; i < ll.length; i++)
- ((ChangeListener)ll[i]).stateChanged(e);
+ ((ChangeListener)ll[i]).stateChanged(changeEvent);
}
/**
@@ -699,14 +713,7 @@ public abstract class AbstractButton extends JComponent
*/
public void setMnemonic(char mne)
{
- int old = getModel().getMnemonic();
- getModel().setMnemonic(mne);
- if (old != getModel().getMnemonic())
- {
- firePropertyChange(MNEMONIC_CHANGED_PROPERTY, old, (int) mne);
- revalidate();
- repaint();
- }
+ setMnemonic((int) mne);
}
/**
@@ -720,10 +727,23 @@ public abstract class AbstractButton extends JComponent
*/
public void setMnemonic(int mne)
{
- int old = mne;
+ int old = getModel().getMnemonic();
+
+ if (old != mne)
+ {
getModel().setMnemonic(mne);
- if (old != getModel().getMnemonic())
+
+ if (text != null && ! text.equals(""))
{
+ // Since lower case char = upper case char for
+ // mnemonic, we will convert both text and mnemonic
+ // to upper case before checking if mnemonic character occurs
+ // in the menu item text.
+ int upperCaseMne = Character.toUpperCase((char) mne);
+ String upperCaseText = text.toUpperCase();
+ setDisplayedMnemonicIndex(upperCaseText.indexOf(upperCaseMne));
+ }
+
firePropertyChange(MNEMONIC_CHANGED_PROPERTY, old, mne);
revalidate();
repaint();
@@ -748,7 +768,7 @@ public abstract class AbstractButton extends JComponent
public void setDisplayedMnemonicIndex(int index)
{
- if (index < -1 || index >= text.length())
+ if (index < -1 || (text != null && index >= text.length()))
throw new IllegalArgumentException();
else
mnemonicIndex = index;
@@ -761,7 +781,7 @@ public abstract class AbstractButton extends JComponent
*
* @return An index into the button's "text" property
*/
- public int getDisplayedMnemonicIndex(int index)
+ public int getDisplayedMnemonicIndex()
{
return mnemonicIndex;
}
@@ -770,17 +790,16 @@ public abstract class AbstractButton extends JComponent
/**
* Set the "rolloverEnabled" property. When rollover is enabled, and the
* look and feel supports it, the button will change its icon to
- * rollover_icon, when the mouse passes over it.
+ * rolloverIcon, when the mouse passes over it.
*
* @param r Whether or not to enable rollover icon changes
*/
public void setRolloverEnabled(boolean r)
{
- boolean old = getModel().isRollover();
- getModel().setRollover(r);
- if (old != getModel().isRollover())
+ if (rollOverEnabled != r)
{
- firePropertyChange(ROLLOVER_ENABLED_CHANGED_PROPERTY, old, r);
+ rollOverEnabled = r;
+ firePropertyChange(ROLLOVER_ENABLED_CHANGED_PROPERTY, !r, r);
revalidate();
repaint();
}
@@ -794,7 +813,7 @@ public abstract class AbstractButton extends JComponent
*/
public boolean isRolloverEnabled()
{
- return getModel().isRollover();
+ return rollOverEnabled;
}
/**
@@ -842,7 +861,7 @@ public abstract class AbstractButton extends JComponent
*/
public int getHorizontalAlignment()
{
- return hori_align;
+ return horizontalAlignment;
}
/**
@@ -858,8 +877,8 @@ public abstract class AbstractButton extends JComponent
*/
public void setHorizontalAlignment(int a)
{
- int old = hori_align;
- hori_align = a;
+ int old = horizontalAlignment;
+ horizontalAlignment = a;
if (old != a)
{
firePropertyChange(HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY, old, a);
@@ -879,7 +898,7 @@ public abstract class AbstractButton extends JComponent
*/
public int getHorizontalTextPosition()
{
- return hori_text_pos;
+ return horizontalTextPosition;
}
/**
@@ -895,8 +914,8 @@ public abstract class AbstractButton extends JComponent
*/
public void setHorizontalTextPosition(int t)
{
- int old = hori_text_pos;
- hori_text_pos = t;
+ int old = horizontalTextPosition;
+ horizontalTextPosition = t;
if (old != t)
{
firePropertyChange(HORIZONTAL_TEXT_POSITION_CHANGED_PROPERTY, old, t);
@@ -915,7 +934,7 @@ public abstract class AbstractButton extends JComponent
*/
public int getVerticalAlignment()
{
- return vert_align;
+ return verticalAlignment;
}
/**
@@ -930,8 +949,8 @@ public abstract class AbstractButton extends JComponent
*/
public void setVerticalAlignment(int a)
{
- int old = vert_align;
- vert_align = a;
+ int old = verticalAlignment;
+ verticalAlignment = a;
if (old != a)
{
firePropertyChange(VERTICAL_ALIGNMENT_CHANGED_PROPERTY, old, a);
@@ -951,7 +970,7 @@ public abstract class AbstractButton extends JComponent
*/
public int getVerticalTextPosition()
{
- return vert_text_pos;
+ return verticalTextPosition;
}
/**
@@ -967,8 +986,8 @@ public abstract class AbstractButton extends JComponent
*/
public void setVerticalTextPosition(int t)
{
- int old = vert_text_pos;
- vert_text_pos = t;
+ int old = verticalTextPosition;
+ verticalTextPosition = t;
if (old != t)
{
firePropertyChange(VERTICAL_TEXT_POSITION_CHANGED_PROPERTY, old, t);
@@ -986,7 +1005,7 @@ public abstract class AbstractButton extends JComponent
*/
public boolean isBorderPainted()
{
- return paint_border;
+ return borderPainted;
}
/**
@@ -998,8 +1017,8 @@ public abstract class AbstractButton extends JComponent
*/
public void setBorderPainted(boolean b)
{
- boolean old = paint_border;
- paint_border = b;
+ boolean old = borderPainted;
+ borderPainted = b;
if (b != old)
{
firePropertyChange(BORDER_PAINTED_CHANGED_PROPERTY, old, b);
@@ -1140,6 +1159,33 @@ public abstract class AbstractButton extends JComponent
}
/**
+ * Set the value of the {@link #iconTextGap} property.
+ *
+ * @param i The new value of the property
+ */
+ public void setIconTextGap(int i)
+ {
+ int old = iconTextGap;
+ iconTextGap = i;
+ if (old != i)
+ {
+ fireStateChanged(new ChangeEvent(this));
+ revalidate();
+ repaint();
+ }
+ }
+
+ /**
+ * Get the value of the {@link #iconTextGap} property.
+ *
+ * @return The current value of the property
+ */
+ public int getIconTextGap()
+ {
+ return iconTextGap;
+ }
+
+ /**
* Return the button's "margin" property, which is an {@link Insets} object
* describing the distance between the button's border and its text and
* icon.
@@ -1214,11 +1260,11 @@ public abstract class AbstractButton extends JComponent
*/
public Icon getDisabledIcon()
{
- if (disabled_icon == null
+ if (disabeldIcon == null
&& default_icon instanceof ImageIcon)
- disabled_icon = new ImageIcon(GrayFilter.createDisabledImage(((ImageIcon) default_icon).getImage()));
+ disabeldIcon = new ImageIcon(GrayFilter.createDisabledImage(((ImageIcon) default_icon).getImage()));
- return disabled_icon;
+ return disabeldIcon;
}
/**
@@ -1230,9 +1276,9 @@ public abstract class AbstractButton extends JComponent
*
* @param disabledIcon The new "disabledIcon" property
*/
- public void setDisabledIcon(Icon disabledIcon)
+ public void setDisabledIcon(Icon d)
{
- disabled_icon = disabledIcon;
+ disabeldIcon = d;
revalidate();
repaint();
}
@@ -1248,7 +1294,7 @@ public abstract class AbstractButton extends JComponent
*/
public boolean isFocusPainted()
{
- return paint_focus;
+ return focusPainted;
}
/**
@@ -1260,14 +1306,14 @@ public abstract class AbstractButton extends JComponent
*
* @param b The new "paintFocus" property
*/
- public void setFocusPainted(boolean b)
+ public void setFocusPainted(boolean p)
{
- boolean old = paint_focus;
- paint_focus = b;
+ boolean old = focusPainted;
+ focusPainted = p;
- if (old != b)
+ if (old != focusPainted)
{
- firePropertyChange(FOCUS_PAINTED_CHANGED_PROPERTY, old, b);
+ firePropertyChange(FOCUS_PAINTED_CHANGED_PROPERTY, old, p);
revalidate();
repaint();
}
@@ -1391,7 +1437,13 @@ public abstract class AbstractButton extends JComponent
setToolTipText((String)(a.getValue(Action.SHORT_DESCRIPTION)));
if (a.getValue(Action.MNEMONIC_KEY) != null)
setMnemonic(((Integer)(a.getValue(Action.MNEMONIC_KEY))).intValue());
+ String actionCommand = (String)(a.getValue(Action.ACTION_COMMAND_KEY));
+
+ // Set actionCommand to button's text by default if it is not specified
+ if (actionCommand != null)
setActionCommand((String)(a.getValue(Action.ACTION_COMMAND_KEY)));
+ else
+ setActionCommand(getText());
}
}
@@ -1416,7 +1468,6 @@ public abstract class AbstractButton extends JComponent
{
public void actionPerformed(ActionEvent e)
{
- e.setSource(AbstractButton.this);
AbstractButton.this.fireActionPerformed(e);
}
};
@@ -1489,7 +1540,6 @@ public abstract class AbstractButton extends JComponent
public void stateChanged(ChangeEvent e)
{
AbstractButton.this.fireStateChanged(e);
- AbstractButton.this.revalidate();
AbstractButton.this.repaint();
}
};
@@ -1569,7 +1619,7 @@ public abstract class AbstractButton extends JComponent
*/
public Icon getDisabledSelectedIcon()
{
- return disabled_selected_icon;
+ return disabledSelectedIcon;
}
/**
@@ -1583,8 +1633,8 @@ public abstract class AbstractButton extends JComponent
*/
public void setDisabledSelectedIcon(Icon disabledSelectedIcon)
{
- Icon old = disabled_selected_icon;
- disabled_selected_icon = disabledSelectedIcon;
+ Icon old = disabledSelectedIcon;
+ disabledSelectedIcon = disabledSelectedIcon;
if (old != disabledSelectedIcon)
{
firePropertyChange(DISABLED_SELECTED_ICON_CHANGED_PROPERTY, old,
@@ -1604,7 +1654,7 @@ public abstract class AbstractButton extends JComponent
*/
public Icon getRolloverIcon()
{
- return rollover_icon;
+ return rolloverIcon;
}
/**
@@ -1614,10 +1664,10 @@ public abstract class AbstractButton extends JComponent
*
* @param rolloverIcon The new rollover icon
*/
- public void setRolloverIcon(Icon rolloverIcon)
+ public void setRolloverIcon(Icon r)
{
- Icon old = rollover_icon;
- rollover_icon = rolloverIcon;
+ Icon old = rolloverIcon;
+ rolloverIcon = r;
if (old != rolloverIcon)
{
firePropertyChange(ROLLOVER_ICON_CHANGED_PROPERTY, old,
@@ -1637,7 +1687,7 @@ public abstract class AbstractButton extends JComponent
*/
public Icon getRolloverSelectedIcon()
{
- return rollover_selected_icon;
+ return rolloverSelectedIcon;
}
/**
@@ -1648,10 +1698,10 @@ public abstract class AbstractButton extends JComponent
*
* @param rolloverSelectedIcon The new rollover selected icon
*/
- public void setRolloverSelectedIcon(Icon rolloverSelectedIcon)
+ public void setRolloverSelectedIcon(Icon r)
{
- Icon old = rollover_selected_icon;
- rollover_selected_icon = rolloverSelectedIcon;
+ Icon old = rolloverSelectedIcon;
+ rolloverSelectedIcon = r;
if (old != rolloverSelectedIcon)
{
firePropertyChange(ROLLOVER_SELECTED_ICON_CHANGED_PROPERTY, old,
@@ -1673,7 +1723,7 @@ public abstract class AbstractButton extends JComponent
*/
public Icon getSelectedIcon()
{
- return selected_icon;
+ return selectedIcon;
}
/**
@@ -1685,10 +1735,10 @@ public abstract class AbstractButton extends JComponent
*
* @param selectedIcon The new selected icon
*/
- public void setSelectedIcon(Icon selectedIcon)
+ public void setSelectedIcon(Icon s)
{
- Icon old = selected_icon;
- selected_icon = selectedIcon;
+ Icon old = selectedIcon;
+ selectedIcon = s;
if (old != selectedIcon)
{
firePropertyChange(SELECTED_ICON_CHANGED_PROPERTY, old,
@@ -1750,7 +1800,7 @@ public abstract class AbstractButton extends JComponent
*/
public boolean isContentAreaFilled()
{
- return content_area_filled;
+ return contentAreaFilled;
}
/**
@@ -1764,8 +1814,8 @@ public abstract class AbstractButton extends JComponent
*/
public void setContentAreaFilled(boolean b)
{
- boolean old = content_area_filled;
- content_area_filled = b;
+ boolean old = contentAreaFilled;
+ contentAreaFilled = b;
if (b != old)
{
firePropertyChange(CONTENT_AREA_FILLED_CHANGED_PROPERTY, old, b);
diff --git a/libjava/javax/swing/ActionMap.java b/libjava/javax/swing/ActionMap.java
index ce6086c2ecd..2a5c67aa4d3 100644
--- a/libjava/javax/swing/ActionMap.java
+++ b/libjava/javax/swing/ActionMap.java
@@ -48,18 +48,15 @@ import java.util.Iterator;
import java.util.Map;
import java.util.Set;
+
/**
- * ActionMap
* @author Andrew Selkirk
- * @version 1.0
+ * @author Michael Koch
*/
-public class ActionMap implements Serializable
+public class ActionMap
+ implements Serializable
{
- static final long serialVersionUID = -6277518704513986346L;
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
+ private static final long serialVersionUID = -6277518704513986346L;
/**
* actionMap
@@ -69,170 +66,146 @@ public class ActionMap implements Serializable
/**
* parent
*/
- private ActionMap parent = null;
-
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
+ private ActionMap parent;
/**
- * Constructor ActionMap
+ * Creates a new <code>ActionMap</code> instance.
*/
- public ActionMap() {
- } // ActionMap()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ public ActionMap()
+ {
+ }
/**
- * get
- * @param key TODO
- * @returns Action
+ * Returns an action associated with an object.
+ *
+ * @param key the key of the enty
+ *
+ * @return the action associated with key, may be null
*/
- public Action get(Object key) {
+ public Action get(Object key)
+ {
+ Object result = actionMap.get(key);
- // Variables
- Object result;
-
- // Check Local store
- result = actionMap.get(key);
-
- // Check Parent
- if (result == null) {
+ if (result == null)
result = parent.get(key);
- } // if
return (Action) result;
-
- } // get()
+ }
/**
- * put
- * @param key TODO
- * @param action TODO
+ * Puts a new <code>Action</code> into the <code>ActionMap</code>.
+ * If action is null an existing entry will be removed.
+ *
+ * @param key the key for the entry
+ * @param action the action.
*/
- public void put(Object key, Action action) {
- if (action == null) {
+ public void put(Object key, Action action)
+ {
+ if (action == null)
actionMap.remove(key);
- } else {
+ else
actionMap.put(key, action);
- } // if
- } // put()
+ }
/**
- * remove
- * @param key TODO
+ * Remove an entry from the <code>ActionMap</code>.
+ *
+ * @param key the key of the entry to remove
*/
- public void remove(Object key) {
+ public void remove(Object key)
+ {
actionMap.remove(key);
- } // remove()
+ }
/**
- * getParent
- * @returns ActionMap
+ * Returns the parent of this <code>ActionMap</code>.
+ *
+ * @return the parent, may be null.
*/
- public ActionMap getParent() {
+ public ActionMap getParent()
+ {
return parent;
- } // getParent()
+ }
/**
- * setParent
- * @param parentMap TODO
+ * Sets a parent for this <code>ActionMap</code>.
+ *
+ * @param parentMap the new parent
*/
- public void setParent(ActionMap parentMap) {
+ public void setParent(ActionMap parentMap)
+ {
parent = parentMap;
- } // setParent()
+ }
/**
- * size
- * @returns int
+ * Returns the number of entries in this <code>ActionMap</code>.
+ *
+ * @return the number of entries
*/
- public int size() {
+ public int size()
+ {
return actionMap.size();
- } // size()
+ }
/**
- * clear
+ * Clears the <code>ActionMap</code>.
*/
- public void clear() {
+ public void clear()
+ {
actionMap.clear();
- } // clear()
+ }
/**
- * keys
- * @returns Object[]
+ * Returns all keys of entries in this <code>ActionMap</code>.
+ *
+ * @return an array of keys
*/
- public Object[] keys() {
- return convertSet(actionMap.keySet());
- } // keys()
+ public Object[] keys()
+ {
+ return actionMap.keySet().toArray();
+ }
/**
- * allKeys
- * @returns Object[]
+ * Returns all keys of entries in this <code>ActionMap</code>
+ * and all its parents.
+ *
+ * @return an array of keys
*/
- public Object[] allKeys() {
-
- // Variables
- Set set;
-
- // Initialize
- set = new HashSet();
+ public Object[] allKeys()
+ {
+ Set set = new HashSet();
- // Get Key Sets
- if (parent != null) {
+ if (parent != null)
set.addAll(Arrays.asList(parent.allKeys()));
- } // if
- set.addAll(actionMap.keySet());
- return convertSet(set);
-
- } // allKeys()
-
- private Object[] convertSet(Set set) {
-
- // Variables
- int index;
- Iterator iterator;
- Object[] keys;
-
- // Create Final array
- keys = new Object[set.size()];
- iterator = set.iterator();
- index = 0;
- while (iterator.hasNext()) {
- keys[index++] = iterator.next();
- } // while
-
- return keys;
-
- } // convertSet()
-
-
- //-------------------------------------------------------------
- // Interface: Serializable ------------------------------------
- //-------------------------------------------------------------
+ set.addAll(actionMap.keySet());
+ return set.toArray();
+ }
/**
* writeObject
- * @param stream TODO
- * @exception IOException TODO
+ *
+ * @param stream the stream to write to
+ *
+ * @exception IOException If an error occurs
*/
- private void writeObject(ObjectOutputStream value0) throws IOException {
+ private void writeObject(ObjectOutputStream stream)
+ throws IOException
+ {
// TODO
- } // writeObject()
+ }
/**
* readObject
- * @param stream TODO
- * @exception ClassNotFoundException TODO
- * @exception IOException TODO
+ *
+ * @param stream the stream to read from
+ *
+ * @exception ClassNotFoundException If the serialized class cannot be found
+ * @exception IOException If an error occurs
*/
- private void readObject(ObjectInputStream value0) throws ClassNotFoundException, IOException {
+ private void readObject(ObjectInputStream stream)
+ throws ClassNotFoundException, IOException
+ {
// TODO
- } // readObject()
-
-
-} // ActionMap
+ }
+}
diff --git a/libjava/javax/swing/Box.java b/libjava/javax/swing/Box.java
index f5d090e0b9d..4e338747859 100644
--- a/libjava/javax/swing/Box.java
+++ b/libjava/javax/swing/Box.java
@@ -55,9 +55,8 @@ public class Box extends JComponent implements Accessible
{
private static final long serialVersionUID = 1525417495883046342L;
- protected class AccessibleBox
// FIXME: disable to make libjava compile; visibility rules are broken
- // extends Container.AccessibleAWTContainer
+ protected class AccessibleBox // extends Container.AccessibleAWTContainer
{
private static final long serialVersionUID = -7775079816389931944L;
@@ -75,9 +74,8 @@ public class Box extends JComponent implements Accessible
{
private static final long serialVersionUID = -1204263191910183998L;
- protected class AccessibleBoxFiller
// FIXME: disable to make libjava compile; visibility rules are broken
- // extends Component.AccessibleAWTComponent
+ protected class AccessibleBoxFiller // extends Component.AccessibleAWTComponent
{
private static final long serialVersionUID = 164963348357479321L;
diff --git a/libjava/javax/swing/ComponentInputMap.java b/libjava/javax/swing/ComponentInputMap.java
index d6183155c82..84110c5f0f2 100644
--- a/libjava/javax/swing/ComponentInputMap.java
+++ b/libjava/javax/swing/ComponentInputMap.java
@@ -1,5 +1,5 @@
/* ComponentInputMap.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -37,79 +37,94 @@ exception statement from your version. */
package javax.swing;
+
/**
- * ComponentInputMap
* @author Andrew Selkirk
- * @version 1.0
+ * @author Michael Koch
*/
-public class ComponentInputMap extends InputMap {
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
+public class ComponentInputMap extends InputMap
+{
/**
- * component
+ * The component to notify.
*/
private JComponent component;
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * Constructor ComponentInputMap
- * @param value0 TODO
- */
- public ComponentInputMap(JComponent value0) {
- // TODO
- } // ComponentInputMap()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * put
- * @param keystroke TODO
- * @param value TODO
- */
- public void put(KeyStroke keystroke, Object value) {
- // TODO
- } // put()
-
/**
- * clear
- */
- public void clear() {
- // TODO
- } // clear()
-
- /**
- * remove
- * @param keystroke TODO
- */
- public void remove(KeyStroke keystroke) {
- // TODO
- } // remove()
-
- /**
- * setParent
- * @param parent TODO
- */
- public void setParent(InputMap parent) {
- // TODO
- } // setParent()
-
- /**
- * getComponent
- * @returns JComponent
- */
- public JComponent getComponent() {
- return null; // TODO
- } // getComponent()
-
-
-} // ComponentInputMap
+ * Creates <code>ComponentInputMap</code> object that notifies the given
+ * component about changes to it.
+ *
+ * @param comp the component to notify
+ *
+ * @exception IllegalArgumentException if comp is null
+ */
+ public ComponentInputMap(JComponent comp)
+ {
+ if (comp == null)
+ throw new IllegalArgumentException();
+
+ this.component = comp;
+ }
+
+ /**
+ * Puts a new entry into the <code>InputMap</code>.
+ * If actionMapKey is null an existing entry will be removed.
+ *
+ * @param keystroke the keystroke for the entry
+ * @param actionMapKey the action.
+ */
+ public void put(KeyStroke keystroke, Object value)
+ {
+ super.put(keystroke, value);
+ // FIXME: Notify component.
+ }
+
+ /**
+ * Clears the <code>InputMap</code>.
+ */
+ public void clear()
+ {
+ super.clear();
+ // FIXME: Notify component.
+ }
+
+ /**
+ * Remove an entry from the <code>InputMap</code>.
+ *
+ * @param key the key of the entry to remove
+ */
+ public void remove(KeyStroke keystroke)
+ {
+ super.remove(keystroke);
+ // FIXME: Notify component.
+ }
+
+ /**
+ * Sets a parent for this <code>ComponentInputMap</code>.
+ *
+ * @param parentMap the new parent
+ *
+ * @exception IllegalArgument if parentMap is not a
+ * <code>ComponentInputMap</code> or not associated with the same component
+ */
+ public void setParent(InputMap parentMap)
+ {
+ if (! (parentMap instanceof ComponentInputMap))
+ throw new IllegalArgumentException();
+
+ if (((ComponentInputMap) parentMap).getComponent() != component)
+ throw new IllegalArgumentException();
+
+ super.setParent(parentMap);
+ // FIXME: Notify component.
+ }
+
+ /**
+ * Returns the component to notify about changes.
+ *
+ * @return a <code>JComponent</code> object
+ */
+ public JComponent getComponent()
+ {
+ return component;
+ }
+}
diff --git a/libjava/javax/swing/DefaultDesktopManager.java b/libjava/javax/swing/DefaultDesktopManager.java
index 40b78b87731..6678c931c6e 100644
--- a/libjava/javax/swing/DefaultDesktopManager.java
+++ b/libjava/javax/swing/DefaultDesktopManager.java
@@ -436,7 +436,6 @@ public class DefaultDesktopManager implements DesktopManager, Serializable
int newWidth, int newHeight)
{
dragCache.setBounds(newX, newY, newWidth, newHeight);
- dragCache = findMinimum(dragCache, component);
if (currentDragMode == JDesktopPane.OUTLINE_DRAG_MODE)
{
@@ -628,27 +627,4 @@ public class DefaultDesktopManager implements DesktopManager, Serializable
{
return frame.getWasIcon();
} // wasIcon()
-
- /**
- * This is a helper method that determines the minimum size a
- * JInternalFrame can be resized to.
- *
- * @param r The desired size.
- * @param c The JComponent to find a minimum size for.
- *
- * @return The minimum size a JInternalFrame can be resized to.
- */
- private Rectangle findMinimum(Rectangle r, JComponent c)
- {
- if (r != null && c != null)
- {
- Dimension d = c.getPreferredSize();
- if (d != null)
- {
- r.width = Math.max(d.width, r.width);
- r.height = Math.max(d.height, r.height);
- }
- }
- return r;
- }
} // DefaultDesktopManager
diff --git a/libjava/javax/swing/ImageIcon.java b/libjava/javax/swing/ImageIcon.java
index f94d58a5f80..c0e8e0d3117 100644
--- a/libjava/javax/swing/ImageIcon.java
+++ b/libjava/javax/swing/ImageIcon.java
@@ -41,6 +41,7 @@ import java.awt.Component;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
+import java.awt.image.ImageObserver;
import java.io.Serializable;
import java.net.URL;
@@ -50,42 +51,62 @@ public class ImageIcon
{
private static final long serialVersionUID = 532615968316031794L;
Image image;
- String file;
- String descr;
- Component observer;
+ String description;
+ ImageObserver observer;
- public ImageIcon(String s)
+ public ImageIcon()
{
- // if description is not specified, then file name becomes
- // desciption for this icon
- this(s, s);
}
- public ImageIcon(Image image)
+ public ImageIcon(String file)
+ {
+ this(file, file);
+ }
+
+ public ImageIcon(String file, String description)
+ {
+ this(Toolkit.getDefaultToolkit().getImage(file), description);
+ }
+
+ public ImageIcon(byte[] imageData)
+ {
+ this(imageData, null);
+ }
+
+ public ImageIcon(byte[] imageData, String description)
{
+ this(Toolkit.getDefaultToolkit().createImage(imageData), description);
}
public ImageIcon(URL url)
{
- image = Toolkit.getDefaultToolkit().getImage(url);
+ this(url, null);
}
- public ImageIcon(String file, String descr)
+ public ImageIcon(URL url, String description)
{
- this.file = file;
- this.descr = descr;
+ this(Toolkit.getDefaultToolkit().getImage(url), description);
+ }
+
+ public ImageIcon(Image image)
+ {
+ this(image, null);
+ }
- image = Toolkit.getDefaultToolkit().getImage(file);
- if (image == null)
- return;
+ public ImageIcon(Image image, String description)
+ {
+ this.image = Toolkit.getDefaultToolkit().createImage(image.getSource());
+ this.description = description;
+ }
- //loadImage(image);
+ public ImageObserver getImageObserver()
+ {
+ return observer;
}
- // not in SUN's spec !!!
- public void setParent(Component p)
+ public void setImageObserver(ImageObserver newObserver)
{
- observer = p;
+ observer = newObserver;
}
public Image getImage()
@@ -95,12 +116,12 @@ public class ImageIcon
public String getDescription()
{
- return descr;
+ return description;
}
public void setDescription(String description)
{
- this.descr = description;
+ this.description = description;
}
public int getIconHeight()
@@ -115,6 +136,6 @@ public class ImageIcon
public void paintIcon(Component c, Graphics g, int x, int y)
{
- g.drawImage(image, x, y, observer);
+ g.drawImage(image, x, y, observer != null ? observer : c);
}
}
diff --git a/libjava/javax/swing/InputMap.java b/libjava/javax/swing/InputMap.java
index d748fb53e02..fdcc8280fd3 100644
--- a/libjava/javax/swing/InputMap.java
+++ b/libjava/javax/swing/InputMap.java
@@ -1,5 +1,5 @@
/* InputMap.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -35,7 +35,6 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
-
package javax.swing;
import java.io.IOException;
@@ -43,24 +42,23 @@ import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Arrays;
-import java.util.Iterator;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Map;
import java.util.Set;
+
/**
- * InputMap
* @author Andrew Selkirk
- * @version 1.0
+ * @author Michael Koch
+ *
+ * @since 1.3
*/
-public class InputMap implements Serializable
+public class InputMap
+ implements Serializable
{
- static final long serialVersionUID = -5429059542008604257L;
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
+ private static final long serialVersionUID = -5429059542008604257L;
/**
* inputMap
@@ -70,171 +68,147 @@ public class InputMap implements Serializable
/**
* parent
*/
- private InputMap parent = null;
-
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
+ private InputMap parent;
/**
- * Constructor InputMap
+ * Creates a new <code>InputMap</code> instance.
*/
- public InputMap() {
+ public InputMap()
+ {
// TODO
- } // InputMap()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
- * get
- * @param value0 TODO
- * @returns Object
+ * Returns the binding for keystroke.
+ *
+ * @param key the key of the enty
+ *
+ * @return the binding associated with keystroke may be null
*/
- public Object get(KeyStroke keystroke) {
-
- // Variables
- Object result;
+ public Object get(KeyStroke keystroke)
+ {
+ Object result = inputMap.get(keystroke);
- // Check Local store
- result = inputMap.get(keystroke);
-
- // Check Parent
- if (result == null) {
+ if (result == null)
result = parent.get(keystroke);
- } // if
-
return result;
-
- } // get()
+ }
/**
- * put
- * @param keystroke TODO
- * @param actionMapKey TODO
+ * Puts a new entry into the <code>InputMap</code>.
+ * If actionMapKey is null an existing entry will be removed.
+ *
+ * @param keystroke the keystroke for the entry
+ * @param actionMapKey the action.
*/
- public void put(KeyStroke keystroke, Object actionMapKey) {
- if (actionMapKey == null) {
+ public void put(KeyStroke keystroke, Object actionMapKey)
+ {
+ if (actionMapKey == null)
inputMap.remove(keystroke);
- } else {
+ else
inputMap.put(keystroke, actionMapKey);
- } // if
- } // put()
+ }
/**
- * remove
- * @param keystroke TODO
+ * Remove an entry from the <code>InputMap</code>.
+ *
+ * @param key the key of the entry to remove
*/
- public void remove(KeyStroke keystroke) {
+ public void remove(KeyStroke keystroke)
+ {
inputMap.remove(keystroke);
- } // remove()
+ }
/**
- * getParent
- * @returns InputMap
+ * Returns the parent of this <code>InputMap</code>.
+ *
+ * @return the parent, may be null.
*/
- public InputMap getParent() {
+ public InputMap getParent()
+ {
return parent;
- } // getParent()
+ }
/**
- * setParent
- * @param parentMap TODO
+ * Sets a parent for this <code>InputMap</code>.
+ *
+ * @param parentMap the new parent
*/
- public void setParent(InputMap parentMap) {
+ public void setParent(InputMap parentMap)
+ {
parent = parentMap;
- } // setParent()
+ }
/**
- * size
- * @returns int
+ * Returns the number of entries in this <code>InputMap</code>.
+ *
+ * @return the number of entries
*/
- public int size() {
+ public int size()
+ {
return inputMap.size();
- } // size()
+ }
/**
- * clear
+ * Clears the <code>InputMap</code>.
*/
- public void clear() {
+ public void clear()
+ {
inputMap.clear();
- } // clear()
+ }
/**
- * keys
- * @returns KeyStroke[]
+ * Returns all keys of entries in this <code>InputMap</code>.
+ *
+ * @return an array of keys
*/
- public KeyStroke[] keys() {
- return convertSet(inputMap.keySet());
- } // keys()
+ public KeyStroke[] keys()
+ {
+ KeyStroke[] array = new KeyStroke[size()];
+ return (KeyStroke[]) inputMap.keySet().toArray(array);
+ }
/**
- * allKeys
- * @returns KeyStroke[]
+ * Returns all keys of entries in this <code>InputMap</code>
+ * and all its parents.
+ *
+ * @return an array of keys
*/
- public KeyStroke[] allKeys() {
+ public KeyStroke[] allKeys()
+ {
+ Set set = new HashSet();
- // Variables
- Set set;
-
- // Initialize
- set = new HashSet();
-
- // Get Key Sets
- if (parent != null) {
+ if (parent != null)
set.addAll(Arrays.asList(parent.allKeys()));
- } // if
- set.addAll(inputMap.keySet());
-
- return convertSet(set);
-
- } // allKeys()
-
- private KeyStroke[] convertSet(Set set) {
-
- // Variables
- int index;
- Iterator iterator;
- KeyStroke[] keys;
- // Create Final array
- keys = new KeyStroke[set.size()];
- iterator = set.iterator();
- index = 0;
- while (iterator.hasNext()) {
- keys[index++] = (KeyStroke) iterator.next();
- } // while
-
- return keys;
-
- } // convertSet()
-
-
- //-------------------------------------------------------------
- // Interface: Serializable ------------------------------------
- //-------------------------------------------------------------
+ set.addAll(inputMap.keySet());
+ KeyStroke[] array = new KeyStroke[size()];
+ return (KeyStroke[]) set.toArray(array);
+ }
/**
* writeObject
- * @param stream TODO
- * @exception IOException TODO
+ *
+ * @param stream the stream to write to
+ *
+ * @exception IOException If an error occurs
*/
- private void writeObject(ObjectOutputStream stream) throws IOException {
+ private void writeObject(ObjectOutputStream stream) throws IOException
+ {
// TODO
- } // writeObject()
+ }
/**
* readObject
- * @param stream TODO
- * @exception ClassNotFoundException TODO
- * @exception IOException TODO
+ *
+ * @param stream the stream to read from
+ *
+ * @exception ClassNotFoundException If the serialized class cannot be found
+ * @exception IOException If an error occurs
*/
- private void readObject(ObjectInputStream stream) throws ClassNotFoundException, IOException {
+ private void readObject(ObjectInputStream stream)
+ throws ClassNotFoundException, IOException
+ {
// TODO
- } // readObject()
-
-
-} // InputMap
+ }
+}
diff --git a/libjava/javax/swing/JButton.java b/libjava/javax/swing/JButton.java
index 0eb5e448201..13e3d571634 100644
--- a/libjava/javax/swing/JButton.java
+++ b/libjava/javax/swing/JButton.java
@@ -41,17 +41,18 @@ import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
import javax.swing.plaf.ButtonUI;
+
/**
* An instance of JButton can be added to a panel, frame etc
*
* @author Ronald Veldema (rveldema@cs.vu.nl)
*/
-public class JButton extends AbstractButton implements Accessible
+public class JButton extends AbstractButton
+ implements Accessible
{
private static final long serialVersionUID = -1907255238954382202L;
-
- boolean def, is_def;
-
+ boolean def;
+ boolean is_def;
public JButton()
{
@@ -98,7 +99,7 @@ public class JButton extends AbstractButton implements Accessible
public String getUIClassID()
{
- //Returns a string that specifies the name of the L&F class that renders this component.
+ //Returns a string that specifies the name of the L&F class that renders this component.
return "ButtonUI";
}
@@ -119,17 +120,23 @@ public class JButton extends AbstractButton implements Accessible
return "JButton";
}
+ /**
+ * Overrides JComponent.removeNotify to check if this button is currently
+ * set as the default button on the RootPane, and if so, sets the RootPane's
+ * default button to null to ensure the RootPane doesn't hold onto an invalid
+ * button reference.
+ */
public void removeNotify()
{
- //Overrides JComponent.removeNotify to check if this button is currently set as the default button on the RootPane, and if so, sets the RootPane's default button to null to ensure the RootPane doesn't hold onto an invalid button reference.
}
public void setDefaultCapable(boolean defaultCapable)
- { def = defaultCapable; }
+ {
+ def = defaultCapable;
+ }
public void updateUI()
{
- ButtonUI b = (ButtonUI)UIManager.getUI(this);
- setUI(b);
+ setUI((ButtonUI) UIManager.getUI(this));
}
}
diff --git a/libjava/javax/swing/JCheckBox.java b/libjava/javax/swing/JCheckBox.java
index 94aba4a4733..f5cc78aceda 100644
--- a/libjava/javax/swing/JCheckBox.java
+++ b/libjava/javax/swing/JCheckBox.java
@@ -49,43 +49,76 @@ public class JCheckBox extends JToggleButton
{
private static final long serialVersionUID = -5246739313864538930L;
+ private boolean borderPaintedFlat;
+
+ private void init()
+ {
+ borderPainted = false;
+ contentAreaFilled = false;
+ }
+
public JCheckBox()
{
- this(null, null);
+ super();
+ init();
}
- public JCheckBox(Action a)
+
+ public JCheckBox(Action action)
{
- this();
- setAction(a);
+ super(action);
+ init();
}
public JCheckBox(Icon icon)
{
- this(null, icon);
+ super(icon);
+ init();
+ }
+
+ public JCheckBox(Icon icon, boolean selected)
+ {
+ super(icon, selected);
+ init();
}
public JCheckBox(String text)
{
- this(text, null);
+ super(text);
+ init();
+ }
+
+ public JCheckBox(String text, boolean selected)
+ {
+ super(text, selected);
+ init();
}
public JCheckBox(String text, Icon icon)
{
super(text, icon);
- paint_border = false;
- content_area_filled = false;
+ init();
}
+ public JCheckBox(String text, Icon icon, boolean selected)
+ {
+ super(text, icon, selected);
+ init();
+ }
+ /**
+ * Gets the AccessibleContext associated with this JCheckBox.
+ */
public AccessibleContext getAccessibleContext()
{
- //Gets the AccessibleContext associated with this JCheckBox.
return null;
}
+ /**
+ * Returns a string that specifies the name of the L&amp;F class
+ * that renders this component.
+ */
public String getUIClassID()
{
- //Returns a string that specifies the name of the L&F class that renders this component.
return "CheckBoxUI";
}
@@ -93,4 +126,15 @@ public class JCheckBox extends JToggleButton
{
return "JCheckBox";
}
+
+ public boolean isBorderPaintedFlat()
+ {
+ return borderPaintedFlat;
+ }
+
+ public void setBorderPaintedFlat(boolean newValue)
+ {
+ firePropertyChange("borderPaintedFlat", borderPaintedFlat, newValue);
+ borderPaintedFlat = newValue;
+ }
}
diff --git a/libjava/javax/swing/JCheckBoxMenuItem.java b/libjava/javax/swing/JCheckBoxMenuItem.java
index fcc7721008f..e0ebb7f8dfc 100644
--- a/libjava/javax/swing/JCheckBoxMenuItem.java
+++ b/libjava/javax/swing/JCheckBoxMenuItem.java
@@ -45,16 +45,28 @@ import javax.accessibility.AccessibleRole;
/**
- * DOCUMENT ME!
+ * This class represents JCheckBoxMenuItem. Its behaviour is very similar
+ * to JCheckBoxButton. Just like the JCheckBoxButton, user can check and
+ * uncheck this menu item by clicking on it. Also setSelected()/setState()
+ * can be use used for the same purpose. JCheckBoxMenuItem uses
+ * ToggleButtonModel to keep track of its selection.
*/
public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
Accessible
{
private static final long serialVersionUID = -6676402307973384715L;
+ /** name for the UI delegate for this menuItem. */
private static final String uiClassID = "CheckBoxMenuItemUI";
+
+ /** Indicates whether this menu item is checked. */
private boolean state;
- private Object[] selectedObjects;
+
+ /**
+ * This array contains text of this menu item if this menu item is in
+ * checked state and null it is not.
+ */
+ private Object[] selectedObjects = new Object[1];
/**
* Creates a new JCheckBoxMenuItem object.
@@ -65,9 +77,9 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
}
/**
- * Creates a new JCheckBoxMenuItem object.
+ * Creates a new JCheckBoxMenuItem with given icon
*
- * @param icon DOCUMENT ME!
+ * @param icon Icon for this menu item
*/
public JCheckBoxMenuItem(Icon icon)
{
@@ -75,9 +87,9 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
}
/**
- * Creates a new JCheckBoxMenuItem object.
+ * Creates a new JCheckBoxMenuItem with given label
*
- * @param text DOCUMENT ME!
+ * @param text Label for this menu item
*/
public JCheckBoxMenuItem(String text)
{
@@ -85,9 +97,9 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
}
/**
- * Creates a new JCheckBoxMenuItem object.
+ * Creates a new JCheckBoxMenuItem using given action
*
- * @param action DOCUMENT ME!
+ * @param action Action for this menu item.
*/
public JCheckBoxMenuItem(Action action)
{
@@ -96,10 +108,10 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
}
/**
- * Creates a new JCheckBoxMenuItem object.
+ * Creates a new JCheckBoxMenuItem object with given label and icon
*
- * @param text DOCUMENT ME!
- * @param icon DOCUMENT ME!
+ * @param text Label for this menu item
+ * @param icon Icon for this menu item
*/
public JCheckBoxMenuItem(String text, Icon icon)
{
@@ -107,10 +119,11 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
}
/**
- * Creates a new JCheckBoxMenuItem object.
+ * Creates a new JCheckBoxMenuItem object using specified label and
+ * marked as checked if given 'state' is true
*
- * @param text DOCUMENT ME!
- * @param state DOCUMENT ME!
+ * @param text Label for this menu item
+ * @param state True if this item should be in checked state and false otherwise
*/
public JCheckBoxMenuItem(String text, boolean state)
{
@@ -118,11 +131,12 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
}
/**
- * Creates a new JCheckBoxMenuItem object.
+ * Creates a new JCheckBoxMenuItem object with given label, icon,
+ * and marked as checked if given 'state' is true
*
- * @param text DOCUMENT ME!
- * @param icon DOCUMENT ME!
- * @param state DOCUMENT ME!
+ * @param text Label for this menu item
+ * @param icon icon for this menu item
+ * @param state True if this item should be in checked state and false otherwise
*/
public JCheckBoxMenuItem(String text, Icon icon, boolean state)
{
@@ -131,22 +145,15 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
this.state = state;
}
- /**
- * DOCUMENT ME!
- *
- * @param stream DOCUMENT ME!
- *
- * @throws IOException DOCUMENT ME!
- */
private void writeObject(ObjectOutputStream stream) throws IOException
{
- // TODO
}
/**
- * DOCUMENT ME!
+ * This method returns a name to identify which look and feel class will be
+ * the UI delegate for the menuItem.
*
- * @return $returnType$ DOCUMENT ME!
+ * @return The Look and Feel classID. "JCheckBoxMenuItemUI"
*/
public String getUIClassID()
{
@@ -154,9 +161,10 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
}
/**
- * DOCUMENT ME!
+ * Returns checked state for this check box menu item.
*
- * @return $returnType$ DOCUMENT ME!
+ * @return Returns true if this menu item is in checked state
+ * and false otherwise.
*/
public boolean getState()
{
@@ -164,9 +172,12 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
}
/**
- * DOCUMENT ME!
+ * Sets state for this check box menu item. If
+ * given 'state' is true, then mark menu item as checked,
+ * and uncheck this menu item otherwise.
+ *
+ * @param state new state for this menu item
*
- * @param state DOCUMENT ME!
*/
public synchronized void setState(boolean state)
{
@@ -174,38 +185,43 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
}
/**
- * DOCUMENT ME!
+ * This method returns array containing label of this
+ * menu item if it is selected and null otherwise.
*
- * @return $returnType$ DOCUMENT ME!
+ * @return Array containing label of this
+ * menu item if this menu item is selected or null otherwise.
*/
public Object[] getSelectedObjects()
{
+ if (state == true)
+ selectedObjects[0] = this.getText();
+ else
+ selectedObjects[0] = null;
+
return selectedObjects;
}
/**
- * DOCUMENT ME!
+ * This method overrides JComponent.requestFocus with an empty
+ * implementation, since JCheckBoxMenuItems should not
+ * receve focus in general.
*/
public void requestFocus()
{
- // TODO
+ // Should do nothing here
}
/**
- * DOCUMENT ME!
+ * A string that describes this JCheckBoxMenuItem. Normally only used
+ * for debugging.
*
- * @return $returnType$ DOCUMENT ME!
+ * @return A string describing this JCheckBoxMenuItem
*/
protected String paramString()
{
return "JCheckBoxMenuItem";
}
- /**
- * DOCUMENT ME!
- *
- * @return $returnType$ DOCUMENT ME!
- */
public AccessibleContext getAccessibleContext()
{
if (accessibleContext == null)
@@ -214,9 +230,6 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
return accessibleContext;
}
- /**
- * DOCUMENT ME!
- */
protected class AccessibleJCheckBoxMenuItem extends AccessibleJMenuItem
{
private static final long serialVersionUID = 1079958073579370777L;
@@ -228,11 +241,6 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
{
}
- /**
- * DOCUMENT ME!
- *
- * @return $returnType$ DOCUMENT ME!
- */
public AccessibleRole getAccessibleRole()
{
return AccessibleRole.CHECK_BOX;
diff --git a/libjava/javax/swing/JComponent.java b/libjava/javax/swing/JComponent.java
index de8bd76f27c..e8f01d028b4 100644
--- a/libjava/javax/swing/JComponent.java
+++ b/libjava/javax/swing/JComponent.java
@@ -1625,6 +1625,7 @@ public abstract class JComponent extends Container implements Serializable
*/
public void revalidate()
{
+ invalidate();
RepaintManager.currentManager(this).addInvalidComponent(this);
}
diff --git a/libjava/javax/swing/JDialog.java b/libjava/javax/swing/JDialog.java
index 598f4931cd3..d3315801828 100644
--- a/libjava/javax/swing/JDialog.java
+++ b/libjava/javax/swing/JDialog.java
@@ -76,7 +76,7 @@ public class JDialog extends Dialog implements Accessible, WindowConstants,
/** The default action taken when closed. */
private int close_action = HIDE_ON_CLOSE;
- /** Whether JDialogs are decorated by the L&F. */
+ /** Whether JDialogs are decorated by the Look and Feel. */
private static boolean decorated = false;
/**
@@ -237,7 +237,7 @@ public class JDialog extends Dialog implements Accessible, WindowConstants,
* This method returns whether JDialogs will have their
* window decorations provided by the Look and Feel.
*
- * @return Whether the window decorations are L&F provided.
+ * @return Whether the window decorations are Look and Feel provided.
*/
public static boolean isDefaultLookAndFeelDecorated()
{
@@ -249,7 +249,7 @@ public class JDialog extends Dialog implements Accessible, WindowConstants,
* window decorations provided by the Look and Feel.
*
* @param defaultLookAndFeelDecorated Whether the window
- * decorations are L&F provided.
+ * decorations are Look and Feel provided.
*/
public static void setDefaultLookAndFeelDecorated(boolean defaultLookAndFeelDecorated)
{
diff --git a/libjava/javax/swing/JEditorPane.java b/libjava/javax/swing/JEditorPane.java
index b944a3d129d..a36eba757ee 100644
--- a/libjava/javax/swing/JEditorPane.java
+++ b/libjava/javax/swing/JEditorPane.java
@@ -39,15 +39,16 @@ package javax.swing;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
-import java.io.IOException;
import java.io.InputStream;
+import java.io.IOException;
import java.net.URL;
+
import javax.accessibility.AccessibleContext;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
+import javax.swing.text.DefaultEditorKit;
import javax.swing.text.EditorKit;
import javax.swing.text.JTextComponent;
-import javax.swing.text.PlainEditorKit;
public class JEditorPane extends JTextComponent
@@ -82,12 +83,12 @@ public class JEditorPane extends JTextComponent
protected EditorKit createDefaultEditorKit()
{
- return new PlainEditorKit();
+ return new DefaultEditorKit();
}
- protected static EditorKit createEditorKitForContentType(String type)
+ public static EditorKit createEditorKitForContentType(String type)
{
- return new PlainEditorKit();
+ return new DefaultEditorKit();
}
/**
@@ -197,7 +198,8 @@ public class JEditorPane extends JTextComponent
}
/**
- * Make sure that TAB and Shift-TAB events get consumed, so that awt doesn't attempt focus traversal.
+ * Make sure that TAB and Shift-TAB events get consumed,
+ * so that awt doesn't attempt focus traversal.
*/
protected void processKeyEvent(KeyEvent e)
{
@@ -228,16 +230,18 @@ public class JEditorPane extends JTextComponent
}
/**
- * Replaces the currently selected content with new content represented by the given string.
+ * Replaces the currently selected content with new content represented
+ * by the given string.
*/
public void replaceSelection(String content)
{
}
/**
- * Scrolls the view to the given reference location (that is, the value returned by the UL.getRef method for the URL being displayed).
+ * Scrolls the view to the given reference location (that is, the value
+ * returned by the UL.getRef method for the URL being displayed).
*/
- protected void scrollToReference(String reference)
+ public void scrollToReference(String reference)
{
}
diff --git a/libjava/javax/swing/JFormattedTextField.java b/libjava/javax/swing/JFormattedTextField.java
index 8e10a7fc9a6..b84d7cc0de3 100644
--- a/libjava/javax/swing/JFormattedTextField.java
+++ b/libjava/javax/swing/JFormattedTextField.java
@@ -131,6 +131,8 @@ public class JFormattedTextField extends JTextField
public static final int REVERT = 2;
public static final int PERSIST = 3;
+ private Object value;
+
public JFormattedTextField ()
{
throw new InternalError ("not implemented");
@@ -158,7 +160,7 @@ public class JFormattedTextField extends JTextField
public JFormattedTextField (Object value)
{
- throw new InternalError ("not implemented");
+ this.value = value;
}
public void commitEdit ()
@@ -189,12 +191,12 @@ public class JFormattedTextField extends JTextField
public String getUIClassID ()
{
- throw new InternalError ("not implemented");
+ return "FormattedTextFieldUI";
}
public Object getValue ()
{
- throw new InternalError ("not implemented");
+ return value;
}
protected void invalidEdit ()
@@ -212,9 +214,15 @@ public class JFormattedTextField extends JTextField
throw new InternalError ("not implemented");
}
- public void setDocument (Document document)
+ public void setDocument(Document newdoc)
{
- throw new InternalError ("not implemented");
+ Document document = getDocument();
+
+ if (document == newdoc)
+ return;
+
+ setDocument(newdoc);
+ firePropertyChange("document", document, newdoc);
}
public void setLostFocusBehavior (int behavior)
@@ -232,8 +240,8 @@ public class JFormattedTextField extends JTextField
throw new InternalError ("not implemented");
}
- public void setValue (Object value)
+ public void setValue (Object newValue)
{
- throw new InternalError ("not implemented");
+ value = newValue;
}
}
diff --git a/libjava/javax/swing/JList.java b/libjava/javax/swing/JList.java
index 732a0c077a0..937d41cceac 100644
--- a/libjava/javax/swing/JList.java
+++ b/libjava/javax/swing/JList.java
@@ -994,7 +994,32 @@ public class JList extends JComponent implements Accessible, Scrollable
*/
public Dimension getPreferredScrollableViewportSize()
{
- return getPreferredSize();
+ int vis = getVisibleRowCount();
+ int nrows = getModel() == null ? 0 : getModel().getSize();
+ // FIXME: this is a somewhat arbitrary default, but.. ?
+ Dimension single = new Dimension(10, 10);;
+ Rectangle bounds = null;
+
+ if (vis > nrows)
+ {
+ if (fixedCellWidth != -1 &&
+ fixedCellHeight != -1)
+ {
+ single = new Dimension(fixedCellWidth, fixedCellHeight);
+ }
+ else if (nrows != 0 && getUI() != null)
+ {
+ Rectangle tmp = getUI().getCellBounds(this, 0, 0);
+ if (tmp != null)
+ single = tmp.getSize();
+ }
+ }
+ else if (getUI() != null)
+ {
+ return getUI().getCellBounds(this, 0, vis - 1).getSize();
+ }
+
+ return new Dimension(single.width, single.height * vis);
}
/**
diff --git a/libjava/javax/swing/JMenu.java b/libjava/javax/swing/JMenu.java
index 430d5781eb1..60e94418d40 100644
--- a/libjava/javax/swing/JMenu.java
+++ b/libjava/javax/swing/JMenu.java
@@ -62,9 +62,19 @@ import javax.swing.plaf.MenuItemUI;
/**
+ * <p>
* This class represents a menu that can be added to a menu bar or
- * to some other menu. When JMenu is selected it displays JPopupMenu
- * containing its menu items.
+ * can be a submenu in some other menu. When JMenu is selected it
+ * displays JPopupMenu containing its menu items.
+ * </p>
+ *
+ * <p>
+ * JMenu's fires MenuEvents when this menu's selection changes. If this menu
+ * is selected, then fireMenuSelectedEvent() is invoked. In case when menu is
+ * deselected or cancelled, then fireMenuDeselectedEvent() or
+ * fireMenuCancelledEvent() is invoked, respectivelly.
+ * </p>
+ *
*/
public class JMenu extends JMenuItem implements Accessible, MenuElement
{
@@ -76,10 +86,8 @@ public class JMenu extends JMenuItem implements Accessible, MenuElement
/** A Popup menu associated with this menu, which pops up when menu is selected */
private JPopupMenu popupMenu = new JPopupMenu();
- /** MenuChangeListener that listens to change events occuring in menu's model */
- private ChangeListener menuChangeListener;
-
- /** MenuEvent */
+ /** Whenever menu is selected or deselected the MenuEvent is fired to
+ menu's registered listeners. */
private MenuEvent menuEvent = new MenuEvent(this);
/*Amount of time, in milliseconds, that should pass before popupMenu
@@ -89,7 +97,8 @@ public class JMenu extends JMenuItem implements Accessible, MenuElement
/* PopupListener */
protected WinListener popupListener;
- /** Location at which popup menu associated with this menu will be displayed*/
+ /** Location at which popup menu associated with this menu will be
+ displayed */
private Point menuLocation;
/**
@@ -98,8 +107,6 @@ public class JMenu extends JMenuItem implements Accessible, MenuElement
public JMenu()
{
super();
- menuChangeListener = createMenuChangeListener();
- getModel().addChangeListener(menuChangeListener);
}
/**
@@ -110,8 +117,6 @@ public class JMenu extends JMenuItem implements Accessible, MenuElement
public JMenu(String text)
{
super(text);
- menuChangeListener = createMenuChangeListener();
- getModel().addChangeListener(menuChangeListener);
}
/**
@@ -123,8 +128,7 @@ public class JMenu extends JMenuItem implements Accessible, MenuElement
public JMenu(Action action)
{
super(action);
- menuChangeListener = createMenuChangeListener();
- getModel().addChangeListener(menuChangeListener);
+ createActionChangeListener(this);
}
/**
@@ -335,14 +339,52 @@ public class JMenu extends JMenuItem implements Accessible, MenuElement
/**
* Changes this menu selected state if selected is true and false otherwise
- * This method fires menuEvents to model's registered listeners.
+ * This method fires menuEvents to menu's registered listeners.
*
* @param selected true if the menu should be selected and false otherwise
*/
public void setSelected(boolean selected)
{
+ // if this menu selection is true, then activate this menu and
+ // display popup associated with this menu
+ if (selected)
+ {
super.setArmed(true);
+ super.setSelected(true);
+
+ // FIXME: The popup menu should be shown on the screen after certain
+ // number of seconds pass. The 'delay' property of this menu indicates
+ // this amount of seconds. 'delay' property is 0 by default.
+ if (this.isShowing())
+ {
fireMenuSelected();
+
+ int x = 0;
+ int y = 0;
+
+ if (menuLocation == null)
+ {
+ // Calculate correct position of the popup. Note that location of the popup
+ // passed to show() should be relative to the popup's invoker
+ if (isTopLevelMenu())
+ y = this.getHeight();
+ else
+ x = this.getWidth();
+
+ getPopupMenu().show(this, x, y);
+ }
+ else
+ getPopupMenu().show(this, menuLocation.x, menuLocation.y);
+ }
+ }
+
+ else
+ {
+ super.setSelected(false);
+ super.setArmed(false);
+ fireMenuDeselected();
+ popupMenu.setVisible(false);
+ }
}
/**
@@ -641,17 +683,6 @@ public class JMenu extends JMenuItem implements Accessible, MenuElement
}
/**
- * Creates MenuChangeListener to listen to change events occuring
- * in the model
- *
- * @return ChangeListener
- */
- private ChangeListener createMenuChangeListener()
- {
- return new MenuChangeListener();
- }
-
- /**
* Creates WinListener that listens to the menu;s popup menu.
*
* @param popup JPopupMenu to listen to
@@ -675,34 +706,7 @@ public class JMenu extends JMenuItem implements Accessible, MenuElement
{
// if this menu selection is true, then activate this menu and
// display popup associated with this menu
- if (changed)
- {
- setArmed(true);
- fireMenuSelected();
-
- int x = 0;
- int y = 0;
- if (menuLocation == null)
- {
- // Calculate correct position of the popup. Note that location of the popup
- // passed to show() should be relative to the popup's invoker
- if (isTopLevelMenu())
- y = this.getHeight();
- else
- x = this.getWidth();
-
- getPopupMenu().show(this, x, y);
- }
- else
- getPopupMenu().show(this, menuLocation.x, menuLocation.y);
- }
-
- else
- {
- fireMenuDeselected();
- popupMenu.setVisible(false);
- setArmed(false);
- }
+ setSelected(changed);
}
/**
@@ -860,17 +864,6 @@ public class JMenu extends JMenuItem implements Accessible, MenuElement
}
}
- /** This class listens to ChangeEvent fired by menu's model*/
- protected class MenuChangeListener implements ChangeListener
- {
- /** This method is invoked when there is change in menu's model property */
- public void stateChanged(ChangeEvent e)
- {
- revalidate();
- repaint();
- }
- }
-
/**
* This class listens to PropertyChangeEvents occuring in menu's action
*/
diff --git a/libjava/javax/swing/JMenuBar.java b/libjava/javax/swing/JMenuBar.java
index c4edcd1f897..f63b3630c3c 100644
--- a/libjava/javax/swing/JMenuBar.java
+++ b/libjava/javax/swing/JMenuBar.java
@@ -66,7 +66,15 @@ import javax.swing.plaf.MenuItemUI;
/**
- * JMenuBar
+ * <p>
+ * JMenuBar is a container for menu's. For a menu bar to be seen on the
+ * screen, at least one menu should be added to it. Just like adding
+ * components to container, one can use add() to add menu's to the menu bar.
+ * Menu's will be displayed in the menu bar in the order they were added.
+ * The JMenuBar uses selectionModel to keep track of selected menu index.
+ * JMenuBar's selectionModel will fire ChangeEvents to its registered
+ * listeners when the selected index changes.
+ * </p>
*/
public class JMenuBar extends JComponent implements Accessible, MenuElement
{
@@ -76,6 +84,8 @@ public class JMenuBar extends JComponent implements Accessible, MenuElement
/** Fired in a PropertyChangeEvent when the "model" changes. */
public static final String MODEL_CHANGED_PROPERTY = "model";
+ /** Fired in a PropertyChangeEvent when the "margin" changes. */
+ public static final String MARGIN_CHANGED_PROPERTY = "margin";
private static final long serialVersionUID = -8191026883931977036L;
/** JMenuBar's model. It keeps track of selected menu's index */
@@ -112,7 +122,8 @@ public class JMenuBar extends JComponent implements Accessible, MenuElement
}
/**
- * DOCUMENT ME!
+ * This method overrides addNotify() in the Container to register
+ * this menu bar with the current keyboard manager.
*/
public void addNotify()
{
@@ -216,9 +227,9 @@ public class JMenuBar extends JComponent implements Accessible, MenuElement
}
/**
- * DOCUMENT ME!
+ * Returns number of menu's in this menu bar
*
- * @return DOCUMENT ME!
+ * @return number of menu's in this menu bar
*/
public int getMenuCount()
{
@@ -226,9 +237,12 @@ public class JMenuBar extends JComponent implements Accessible, MenuElement
}
/**
- * Returns selection model for this menu bar.
+ * Returns selection model for this menu bar. SelectionModel
+ * keeps track of the selected menu in the menu bar. Whenever
+ * selected property of selectionModel changes, the ChangeEvent
+ * will be fired its ChangeListeners.
*
- * @return selection mdoel for this menu bar.
+ * @return selection model for this menu bar.
*/
public SingleSelectionModel getSelectionModel()
{
@@ -319,9 +333,10 @@ public class JMenuBar extends JComponent implements Accessible, MenuElement
}
/**
- * DOCUMENT ME!
+ * A string that describes this JMenuBar. Normally only used
+ * for debugging.
*
- * @return DOCUMENT ME!
+ * @return A string describing this JMenuBar
*/
protected String paramString()
{
@@ -329,11 +344,13 @@ public class JMenuBar extends JComponent implements Accessible, MenuElement
}
/**
- * DOCUMENT ME!
+ * Process key events forwarded from MenuSelectionManager. This method
+ * doesn't do anything. It is here to conform to the MenuElement interface.
+ *
+ * @param event event forwarded from MenuSelectionManager
+ * @param path path to the menu element from which event was generated
+ * @param manager MenuSelectionManager for the current menu hierarchy
*
- * @param e DOCUMENT ME!
- * @param path DOCUMENT ME!
- * @param manager DOCUMENT ME!
*/
public void processKeyEvent(KeyEvent e, MenuElement[] path,
MenuSelectionManager manager)
@@ -342,11 +359,13 @@ public class JMenuBar extends JComponent implements Accessible, MenuElement
}
/**
- * DOCUMENT ME!
+ * Process mouse events forwarded from MenuSelectionManager. This method
+ * doesn't do anything. It is here to conform to the MenuElement interface.
+ *
+ * @param event event forwarded from MenuSelectionManager
+ * @param path path to the menu element from which event was generated
+ * @param manager MenuSelectionManager for the current menu hierarchy
*
- * @param event DOCUMENT ME!
- * @param path DOCUMENT ME!
- * @param manager DOCUMENT ME!
*/
public void processMouseEvent(MouseEvent event, MenuElement[] path,
MenuSelectionManager manager)
@@ -355,7 +374,8 @@ public class JMenuBar extends JComponent implements Accessible, MenuElement
}
/**
- * DOCUMENT ME!
+ * This method overrides removeNotify() in the Container to
+ * unregister this menu bar from the current keyboard manager.
*/
public void removeNotify()
{
@@ -364,9 +384,10 @@ public class JMenuBar extends JComponent implements Accessible, MenuElement
}
/**
- * DOCUMENT ME!
+ * Sets painting status of the border. If 'b' is true then menu bar's
+ * border will be painted, and it will not be painted otherwise.
*
- * @param b DOCUMENT ME!
+ * @param b indicates if menu bar's border should be painted.
*/
public void setBorderPainted(boolean b)
{
@@ -381,27 +402,38 @@ public class JMenuBar extends JComponent implements Accessible, MenuElement
}
/**
- * DOCUMENT ME!
+ * Sets help menu for this menu bar
*
- * @param menu DOCUMENT ME!
+ * @param menu help menu
*/
public void setHelpMenu(JMenu menu)
{
}
/**
- * DOCUMENT ME!
+ * Sets the menu bar's "margin" bound property, which represents
+ * distance between the menubar's border and its menus.
+ * icon. When marging property is modified, PropertyChangeEvent will
+ * be fired to menuBar's PropertyChangeListener's.
+ *
+ * @param m distance between the menubar's border and its menus.
*
- * @param m DOCUMENT ME!
*/
public void setMargin(Insets m)
{
+ if (m.equals(this.margin))
+ {
+ Insets oldMargin = this.margin;
+ this.margin = m;
+ firePropertyChange(MARGIN_CHANGED_PROPERTY, oldMargin, margin);
+ }
+
this.margin = m;
}
/**
- * Changes menu bar's selection to the specifies menu.
- * This method updates selected index of menu bar's model,
+ * Changes menu bar's selection to the specified menu.
+ * This method updates selected index of menu bar's selection model,
* which results in a model firing change event.
*
* @param sel menu to select
diff --git a/libjava/javax/swing/JMenuItem.java b/libjava/javax/swing/JMenuItem.java
index 65dfc3361fe..b137271715d 100644
--- a/libjava/javax/swing/JMenuItem.java
+++ b/libjava/javax/swing/JMenuItem.java
@@ -150,26 +150,11 @@ public class JMenuItem extends AbstractButton implements Accessible,
setMnemonic(mnemonic);
}
- /**
- * DOCUMENT ME!
- *
- * @param stream DOCUMENT ME!
- *
- * @throws IOException DOCUMENT ME!
- * @throws ClassNotFoundException DOCUMENT ME!
- */
private void readObject(ObjectInputStream stream)
throws IOException, ClassNotFoundException
{
}
- /**
- * DOCUMENT ME!
- *
- * @param stream DOCUMENT ME!
- *
- * @throws IOException DOCUMENT ME!
- */
private void writeObject(ObjectOutputStream stream) throws IOException
{
}
@@ -186,10 +171,14 @@ public class JMenuItem extends AbstractButton implements Accessible,
// Initializes properties for this menu item, that are different
// from Abstract button properties.
- paint_border = false;
- paint_focus = false;
- hori_align = JButton.LEFT;
- hori_text_pos = JButton.LEFT;
+ /* NOTE: According to java specifications paint_border should be set to false,
+ since menu item should not have a border. However running few java programs
+ it seems that menu items and menues can have a border. Commenting
+ out statement below for now. */
+ //borderPainted = false;
+ focusPainted = false;
+ horizontalAlignment = JButton.LEFT;
+ horizontalTextPosition = JButton.LEFT;
}
/**
@@ -288,9 +277,7 @@ public class JMenuItem extends AbstractButton implements Accessible,
{
super.configurePropertiesFromAction(action);
- if (action == null)
- setAccelerator(null);
- else
+ if (! (this instanceof JMenu) && action != null)
setAccelerator((KeyStroke) (action.getValue(Action.ACCELERATOR_KEY)));
}
@@ -325,70 +312,76 @@ public class JMenuItem extends AbstractButton implements Accessible,
public void processMouseEvent(MouseEvent event, MenuElement[] path,
MenuSelectionManager manager)
{
+ // Fire MenuDragMouseEvents if mouse is being dragged.
+ boolean dragged = (event.getModifiers() & InputEvent.BUTTON1_MASK) != 0;
+ if (dragged)
+ processMenuDragMouseEvent(createMenuDragMouseEvent(event, path, manager));
+
switch (event.getID())
{
case MouseEvent.MOUSE_CLICKED:
break;
case MouseEvent.MOUSE_ENTERED:
- if (event.getSource() instanceof JMenuItem)
- {
- JMenuItem item = (JMenuItem) event.getSource();
-
- ButtonModel model = item.getModel();
- if (item.isRolloverEnabled())
+ if (isRolloverEnabled())
model.setRollover(true);
- }
break;
case MouseEvent.MOUSE_EXITED:
- if (event.getSource() instanceof JMenuItem)
- {
- JMenuItem item = (JMenuItem) event.getSource();
- ButtonModel model = item.getModel();
- if (item.isRolloverEnabled())
+ if (isRolloverEnabled())
model.setRollover(false);
- }
+
+ // for JMenu last element on the path is its popupMenu.
+ // JMenu shouldn't me disarmed.
+ if (! (path[path.length - 1] instanceof JPopupMenu) && ! dragged)
+ setArmed(false);
break;
case MouseEvent.MOUSE_PRESSED:
- if (event.getSource() instanceof JMenuItem)
- {
if ((event.getModifiers() & InputEvent.BUTTON1_MASK) != 0)
{
model.setArmed(true);
model.setPressed(true);
}
- }
break;
case MouseEvent.MOUSE_RELEASED:
break;
case MouseEvent.MOUSE_MOVED:
break;
case MouseEvent.MOUSE_DRAGGED:
- MenuDragMouseEvent e = new MenuDragMouseEvent((Component) event
- .getSource(),
- event.getID(),
- event.getWhen(),
- event.getModifiers(),
- event.getX(),
- event.getY(),
- event.getClickCount(),
- event.isPopupTrigger(),
- path, manager);
- processMenuDragMouseEvent(e);
break;
}
}
/**
- * DOCUMENT ME!
+ * Creates MenuDragMouseEvent.
*
- * @param event DOCUMENT ME!
- * @param path DOCUMENT ME!
- * @param manager DOCUMENT ME!
+ * @param event MouseEvent that occured while mouse was pressed.
+ * @param path Path the the menu element where the dragging event was
+ * originated
+ * @param manager MenuSelectionManager for the current menu hierarchy.
+ *
+ * @return new MenuDragMouseEvent
+ */
+ private MenuDragMouseEvent createMenuDragMouseEvent(MouseEvent event,
+ MenuElement[] path,
+ MenuSelectionManager manager)
+ {
+ return new MenuDragMouseEvent((Component) event.getSource(),
+ event.getID(), event.getWhen(),
+ event.getModifiers(), event.getX(),
+ event.getY(), event.getClickCount(),
+ event.isPopupTrigger(), path, manager);
+ }
+
+ /**
+ * Process key events forwarded from MenuSelectionManager.
+ *
+ * @param event event forwarded from MenuSelectionManager
+ * @param path path to the menu element from which event was generated
+ * @param manager MenuSelectionManager for the current menu hierarchy
*/
public void processKeyEvent(KeyEvent event, MenuElement[] path,
MenuSelectionManager manager)
{
- // TODO
+ // Need to implement.
}
/**
@@ -426,7 +419,7 @@ public class JMenuItem extends AbstractButton implements Accessible,
*/
public void processMenuKeyEvent(MenuKeyEvent event)
{
- // TODO
+ // Need to implement.
}
/**
@@ -535,9 +528,19 @@ public class JMenuItem extends AbstractButton implements Accessible,
public void menuSelectionChanged(boolean changed)
{
if (changed)
+ {
model.setArmed(true);
+
+ if (this.getParent() instanceof JPopupMenu)
+ ((JPopupMenu) this.getParent()).setSelected(this);
+ }
else
+ {
model.setArmed(false);
+
+ if (this.getParent() instanceof JPopupMenu)
+ ((JPopupMenu) this.getParent()).getSelectionModel().clearSelection();
+ }
}
/**
@@ -617,11 +620,6 @@ public class JMenuItem extends AbstractButton implements Accessible,
return "JMenuItem";
}
- /**
- * DOCUMENT ME!
- *
- * @return DOCUMENT ME!
- */
public AccessibleContext getAccessibleContext()
{
if (accessibleContext == null)
diff --git a/libjava/javax/swing/JOptionPane.java b/libjava/javax/swing/JOptionPane.java
index df45a1a4882..07042707220 100644
--- a/libjava/javax/swing/JOptionPane.java
+++ b/libjava/javax/swing/JOptionPane.java
@@ -39,11 +39,15 @@ package javax.swing;
import java.awt.Component;
import java.awt.Dialog;
+import java.awt.Dimension;
import java.awt.Frame;
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
import javax.swing.Icon;
+import javax.swing.JInternalFrame;
+import javax.swing.event.InternalFrameAdapter;
+import javax.swing.event.InternalFrameEvent;
import javax.swing.plaf.OptionPaneUI;
@@ -60,6 +64,7 @@ public class JOptionPane extends JComponent implements Accessible
*/
protected class AccessibleJOptionPane extends JComponent.AccessibleJComponent
{
+ /** DOCUMENT ME! */
private static final long serialVersionUID = 686071432213084821L;
/**
@@ -80,6 +85,7 @@ public class JOptionPane extends JComponent implements Accessible
}
}
+ /** DOCUMENT ME! */
private static final long serialVersionUID = 5231143276678566796L;
/** The value returned when cancel option is selected. */
@@ -373,6 +379,8 @@ public class JOptionPane extends JComponent implements Accessible
dialog.getContentPane().add(this);
dialog.setModal(true);
dialog.setResizable(false);
+ dialog.invalidate();
+ dialog.repaint();
return dialog;
}
@@ -394,8 +402,21 @@ public class JOptionPane extends JComponent implements Accessible
String title)
throws RuntimeException
{
- // FIXME: implement.
- return null;
+ JDesktopPane toUse = getDesktopPaneForComponent(parentComponent);
+ if (toUse == null)
+ throw new RuntimeException("parentComponent does not have a valid parent");
+
+ JInternalFrame frame = new JInternalFrame(title);
+
+ inputValue = UNINITIALIZED_VALUE;
+ value = UNINITIALIZED_VALUE;
+
+ frame.setClosable(true);
+ toUse.add(frame);
+
+ // FIXME: JLayeredPane broken? See bug # 16576
+ // frame.setLayer(JLayeredPane.MODAL_LAYER);
+ return frame;
}
/**
@@ -421,7 +442,8 @@ public class JOptionPane extends JComponent implements Accessible
*/
public static JDesktopPane getDesktopPaneForComponent(Component parentComponent)
{
- return (JDesktopPane) SwingUtilities.getAncestorOfClass(JDesktopPane.class, parentComponent);
+ return (JDesktopPane) SwingUtilities.getAncestorOfClass(JDesktopPane.class,
+ parentComponent);
}
/**
@@ -434,7 +456,8 @@ public class JOptionPane extends JComponent implements Accessible
*/
public static Frame getFrameForComponent(Component parentComponent)
{
- return (Frame) SwingUtilities.getAncestorOfClass(Frame.class, parentComponent);
+ return (Frame) SwingUtilities.getAncestorOfClass(Frame.class,
+ parentComponent);
}
/**
@@ -822,6 +845,7 @@ public class JOptionPane extends JComponent implements Accessible
{
JOptionPane pane = new JOptionPane(message);
JDialog dialog = pane.createDialog(parentComponent, "Select an Option");
+
dialog.pack();
dialog.show();
@@ -1064,123 +1088,171 @@ public class JOptionPane extends JComponent implements Accessible
}
/**
- * DOCUMENT ME!
+ * This method shows an internal confirmation dialog with the given message.
+ * The internal frame dialog will be placed in the first JDesktopPane
+ * ancestor of the given parentComponent. This method will return the value
+ * selected.
*
- * @param parentComponent DOCUMENT ME!
- * @param message DOCUMENT ME!
+ * @param parentComponent The parent to find a JDesktopPane in.
+ * @param message The message to display.
*
- * @return DOCUMENT ME!
+ * @return The value selected.
*/
public static int showInternalConfirmDialog(Component parentComponent,
Object message)
{
- // FIXME: implement
- return 0;
+ JOptionPane pane = new JOptionPane(message);
+ JInternalFrame frame = pane.createInternalFrame(parentComponent, null);
+
+ startModal(frame, pane);
+
+ return ((Integer) pane.getValue()).intValue();
}
/**
- * DOCUMENT ME!
+ * This method shows an internal confirmation dialog with the given message,
+ * optionType and title. The internal frame dialog will be placed in the
+ * first JDesktopPane ancestor of the given parentComponent. This method
+ * will return the selected value.
*
- * @param parentComponent DOCUMENT ME!
- * @param message DOCUMENT ME!
- * @param title DOCUMENT ME!
- * @param optionType DOCUMENT ME!
+ * @param parentComponent The parent to find a JDesktopPane in.
+ * @param message The message to display.
+ * @param title The title to display.
+ * @param optionType The option type.
*
- * @return DOCUMENT ME!
+ * @return The selected value.
*/
public static int showInternalConfirmDialog(Component parentComponent,
Object message, String title,
int optionType)
{
- // FIXME: implement
- return 0;
+ JOptionPane pane = new JOptionPane(message, PLAIN_MESSAGE, optionType);
+ JInternalFrame frame = pane.createInternalFrame(parentComponent, title);
+
+ startModal(frame, pane);
+
+ return ((Integer) pane.getValue()).intValue();
}
/**
- * DOCUMENT ME!
+ * This method shows an internal confirmation dialog with the given message,
+ * title, optionTypes and icon for the given message type. The internal
+ * confirmation dialog will be placed in the first instance of
+ * JDesktopPane ancestor of the given parentComponent.
*
- * @param parentComponent DOCUMENT ME!
- * @param message DOCUMENT ME!
- * @param title DOCUMENT ME!
- * @param optionType DOCUMENT ME!
- * @param messageType DOCUMENT ME!
+ * @param parentComponent The component to find a JDesktopPane in.
+ * @param message The message to display.
+ * @param title The title of the dialog.
+ * @param optionType The option type.
+ * @param messageType The message type.
*
- * @return DOCUMENT ME!
+ * @return The selected value.
*/
public static int showInternalConfirmDialog(Component parentComponent,
Object message, String title,
int optionType, int messageType)
{
- // FIXME: implement
- return 0;
+ JOptionPane pane = new JOptionPane(message, messageType, optionType);
+ JInternalFrame frame = pane.createInternalFrame(parentComponent, title);
+
+ startModal(frame, pane);
+
+ return ((Integer) pane.getValue()).intValue();
}
/**
- * DOCUMENT ME!
+ * This method shows an internal confirmation dialog with the given message,
+ * title, option type, message type, and icon. The internal frame dialog
+ * will be placed in the first JDesktopPane ancestor that is found in the
+ * given parentComponent. This method returns the selected value.
*
- * @param parentComponent DOCUMENT ME!
- * @param message DOCUMENT ME!
- * @param title DOCUMENT ME!
- * @param optionType DOCUMENT ME!
- * @param messageType DOCUMENT ME!
- * @param icon DOCUMENT ME!
+ * @param parentComponent The parent to find a JDesktopPane in.
+ * @param message The message to display.
+ * @param title The title to display.
+ * @param optionType The option type.
+ * @param messageType The message type.
+ * @param icon The icon to display.
*
- * @return DOCUMENT ME!
+ * @return The selected value.
*/
public static int showInternalConfirmDialog(Component parentComponent,
Object message, String title,
int optionType, int messageType,
Icon icon)
{
- // FIXME: implement
- return 0;
+ JOptionPane pane = new JOptionPane(message, messageType, optionType, icon);
+ JInternalFrame frame = pane.createInternalFrame(parentComponent, title);
+
+ startModal(frame, pane);
+
+ return ((Integer) pane.getValue()).intValue();
}
/**
- * DOCUMENT ME!
+ * This method shows an internal input dialog with the given message. The
+ * internal frame dialog will be placed in the first JDesktopPane ancestor
+ * of the given parent component. This method returns the value input by
+ * the user.
*
- * @param parentComponent DOCUMENT ME!
- * @param message DOCUMENT ME!
+ * @param parentComponent The parent to find a JDesktopPane in.
+ * @param message The message to display.
*
- * @return DOCUMENT ME!
+ * @return The user selected value.
*/
public static String showInternalInputDialog(Component parentComponent,
Object message)
{
- // FIXME: implement
- return null;
+ JOptionPane pane = new JOptionPane(message);
+ pane.setWantsInput(true);
+ JInternalFrame frame = pane.createInternalFrame(parentComponent, null);
+
+ startModal(frame, pane);
+
+ return (String) pane.getInputValue();
}
/**
- * DOCUMENT ME!
+ * This method shows an internal input dialog with the given message, title
+ * and message type. The internal input dialog will be placed in the first
+ * JDesktopPane ancestor found in the given parent component. This method
+ * will return the input value given by the user.
*
- * @param parentComponent DOCUMENT ME!
- * @param message DOCUMENT ME!
- * @param title DOCUMENT ME!
- * @param messageType DOCUMENT ME!
+ * @param parentComponent The component to find a JDesktopPane in.
+ * @param message The message to display.
+ * @param title The title to display.
+ * @param messageType The message type.
*
- * @return DOCUMENT ME!
+ * @return The user input value.
*/
public static String showInternalInputDialog(Component parentComponent,
Object message, String title,
int messageType)
{
- // FIXME: implement
- return null;
+ JOptionPane pane = new JOptionPane(message, messageType);
+ pane.setWantsInput(true);
+ JInternalFrame frame = pane.createInternalFrame(parentComponent, title);
+
+ startModal(frame, pane);
+
+ return (String) pane.getInputValue();
}
/**
- * DOCUMENT ME!
+ * This method shows an internal input dialog with the given message, title
+ * message type, icon, selection value list and initial selection value.
+ * The internal frame dialog will be placed in the first JDesktopPane
+ * ancestor found in the given parent component. This method returns the
+ * input value from the user.
*
- * @param parentComponent DOCUMENT ME!
- * @param message DOCUMENT ME!
- * @param title DOCUMENT ME!
- * @param messageType DOCUMENT ME!
- * @param icon DOCUMENT ME!
- * @param selectionValues DOCUMENT ME!
- * @param initialSelectionValue DOCUMENT ME!
+ * @param parentComponent The parent to find a JDesktopPane in.
+ * @param message The message to display.
+ * @param title The title to display.
+ * @param messageType The message type.
+ * @param icon The icon to display.
+ * @param selectionValues The selection value list.
+ * @param initialSelectionValue The initial selection value.
*
- * @return DOCUMENT ME!
+ * @return The user input value.
*/
public static Object showInternalInputDialog(Component parentComponent,
Object message, String title,
@@ -1188,66 +1260,94 @@ public class JOptionPane extends JComponent implements Accessible
Object[] selectionValues,
Object initialSelectionValue)
{
- // FIXME: implement
- return null;
+ JOptionPane pane = new JOptionPane(message, messageType);
+ pane.setWantsInput(true);
+ pane.setIcon(icon);
+ pane.setSelectionValues(selectionValues);
+ pane.setInitialSelectionValue(initialSelectionValue);
+ JInternalFrame frame = pane.createInternalFrame(parentComponent, title);
+
+ startModal(frame, pane);
+
+ return (String) pane.getInputValue();
}
/**
- * DOCUMENT ME!
+ * This method shows an internal message dialog with the given message. The
+ * internal frame dialog will be placed in the first JDesktopPane ancestor
+ * found in the given parent component.
*
- * @param parentComponent DOCUMENT ME!
- * @param message DOCUMENT ME!
+ * @param parentComponent The component to find a JDesktopPane in.
+ * @param message The message to display.
*/
public static void showInternalMessageDialog(Component parentComponent,
Object message)
{
- // FIXME: implement
+ JOptionPane pane = new JOptionPane(message);
+ JInternalFrame frame = pane.createInternalFrame(parentComponent, null);
+
+ startModal(frame, pane);
}
/**
- * DOCUMENT ME!
+ * This method shows an internal message dialog with the given message,
+ * title and message type. The internal message dialog is placed in the
+ * first JDesktopPane ancestor found in the given parent component.
*
- * @param parentComponent DOCUMENT ME!
- * @param message DOCUMENT ME!
- * @param title DOCUMENT ME!
- * @param messageType DOCUMENT ME!
+ * @param parentComponent The parent component to find a JDesktopPane in.
+ * @param message The message to display.
+ * @param title The title to display.
+ * @param messageType The message type.
*/
public static void showInternalMessageDialog(Component parentComponent,
Object message, String title,
int messageType)
{
- // FIXME: implement
+ JOptionPane pane = new JOptionPane(message, messageType);
+ JInternalFrame frame = pane.createInternalFrame(parentComponent, title);
+
+ startModal(frame, pane);
}
/**
- * DOCUMENT ME!
+ * This method shows an internal message dialog with the given message,
+ * title, message type and icon. The internal message dialog is placed in
+ * the first JDesktopPane ancestor found in the given parent component.
*
- * @param parentComponent DOCUMENT ME!
- * @param message DOCUMENT ME!
- * @param title DOCUMENT ME!
- * @param messageType DOCUMENT ME!
- * @param icon DOCUMENT ME!
+ * @param parentComponent The component to find a JDesktopPane in.
+ * @param message The message to display.
+ * @param title The title to display.
+ * @param messageType The message type.
+ * @param icon The icon to display.
*/
public static void showInternalMessageDialog(Component parentComponent,
Object message, String title,
int messageType, Icon icon)
{
- // FIXME: implement
+ JOptionPane pane = new JOptionPane(message, messageType);
+ pane.setIcon(icon);
+ JInternalFrame frame = pane.createInternalFrame(parentComponent, title);
+
+ startModal(frame, pane);
}
/**
- * DOCUMENT ME!
+ * This method displays an internal option dialog with the given message,
+ * title, option type, message type, icon, option list, and initial option
+ * value. The internal option dialog is placed in the first JDesktopPane
+ * ancestor found in the parent component. This method returns the option
+ * selected.
*
- * @param parentComponent DOCUMENT ME!
- * @param message DOCUMENT ME!
- * @param title DOCUMENT ME!
- * @param optionType DOCUMENT ME!
- * @param messageType DOCUMENT ME!
- * @param icon DOCUMENT ME!
- * @param options DOCUMENT ME!
- * @param initialValue DOCUMENT ME!
+ * @param parentComponent The parent to find a JDesktopPane in.
+ * @param message The message displayed.
+ * @param title The title displayed.
+ * @param optionType The option type.
+ * @param messageType The message type.
+ * @param icon The icon to display.
+ * @param options The array of options.
+ * @param initialValue The initial value selected.
*
- * @return DOCUMENT ME!
+ * @return The option that was selected.
*/
public static int showInternalOptionDialog(Component parentComponent,
Object message, String title,
@@ -1255,8 +1355,14 @@ public class JOptionPane extends JComponent implements Accessible
Icon icon, Object[] options,
Object initialValue)
{
- // FIXME: implement
- return 0;
+ JOptionPane pane = new JOptionPane(message, messageType, optionType, icon,
+ options, initialValue);
+
+ JInternalFrame frame = pane.createInternalFrame(parentComponent, title);
+
+ startModal(frame, pane);
+
+ return ((Integer) pane.getValue()).intValue();
}
/**
@@ -1338,6 +1444,7 @@ public class JOptionPane extends JComponent implements Accessible
{
JOptionPane pane = new JOptionPane(message, messageType, optionType, icon,
options, initialValue);
+
JDialog dialog = pane.createDialog(parentComponent, title);
dialog.pack();
dialog.show();
@@ -1394,4 +1501,49 @@ public class JOptionPane extends JComponent implements Accessible
}
return false;
}
+
+ /**
+ * This helper method makes the JInternalFrame wait until it is notified by
+ * an InternalFrameClosing event. This method also adds the given
+ * JOptionPane to the JInternalFrame and sizes it according to the
+ * JInternalFrame's preferred size.
+ *
+ * @param f The JInternalFrame to make modal.
+ * @param pane The JOptionPane to add to the JInternalFrame.
+ */
+ private static void startModal(JInternalFrame f, JOptionPane pane)
+ {
+ f.getContentPane().add(pane);
+ f.pack();
+ f.show();
+
+ Dimension pref = f.getPreferredSize();
+ f.setBounds(0, 0, pref.width, pref.height);
+
+ synchronized (f)
+ {
+ final JInternalFrame tmp = f;
+ tmp.toFront();
+
+ f.addInternalFrameListener(new InternalFrameAdapter()
+ {
+ public void internalFrameClosed(InternalFrameEvent e)
+ {
+ synchronized (tmp)
+ {
+ tmp.removeInternalFrameListener(this);
+ tmp.notifyAll();
+ }
+ }
+ });
+ try
+ {
+ while (! f.isClosed())
+ f.wait();
+ }
+ catch (InterruptedException ignored)
+ {
+ }
+ }
+ }
}
diff --git a/libjava/javax/swing/JPopupMenu.java b/libjava/javax/swing/JPopupMenu.java
index 54a820c33ad..9c06400de10 100644
--- a/libjava/javax/swing/JPopupMenu.java
+++ b/libjava/javax/swing/JPopupMenu.java
@@ -68,7 +68,30 @@ import javax.swing.plaf.PopupMenuUI;
/**
- * DOCUMENT ME!
+ * JPopupMenu is a container that is used to display popup menu's menu
+ * items. By default JPopupMenu is a lightweight container, however if it
+ * is the case that JPopupMenu's bounds are outside of main window, then
+ * heawyweight container will be used to display menu items. It is also
+ * possible to change JPopupMenu's default behavior and set JPopupMenu
+ * to always use heavyweight container.
+ *
+ * JPopupMenu can be displayed anywhere; it is a floating free popup menu.
+ * However before JPopupMenu is diplayed, its invoker property should be set.
+ * JPopupMenu's invoker is a component relative to which popup menu is
+ * displayed.
+ *
+ * JPopupMenu fires PopupMenuEvents to its registered listeners. Whenever
+ * JPopupMenu becomes visible on the screen then PopupMenuEvent indicating
+ * that popup menu became visible will be fired. In the case when
+ * JPopupMenu becomes invisible or cancelled without selection, then
+ * popupMenuBecomeInvisible() or popupMenuCancelled() methods of
+ * PopupMenuListeners will be invoked.
+ *
+ * JPopupMenu also fires PropertyChangeEvents when its bound properties
+ * change.In addittion to inheritted bound properties, JPopupMenu has
+ * 'visible' bound property. When JPopupMenu becomes visible/invisible on
+ * the screen it fires PropertyChangeEvents to its registered
+ * PropertyChangeListeners.
*/
public class JPopupMenu extends JComponent implements Accessible, MenuElement
{
@@ -77,6 +100,9 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
/** name for the UI delegate for this menuItem. */
private static final String uiClassID = "PopupMenuUI";
+ /** Fire a PropertyChangeEvent when the "borderPainted" property changes. */
+ public static final String LABEL_CHANGED_PROPERTY = "label";
+
/* indicates if popup's menu border should be painted*/
private boolean borderPainted = true;
@@ -98,7 +124,7 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
/* Component that invokes popup menu. */
transient Component invoker;
- /* Label for this popup menu */
+ /* Label for this popup menu. It is not used in most of the look and feel themes. */
private String label;
/*Amount of space between menuItem's in JPopupMenu and JPopupMenu's border */
@@ -130,7 +156,6 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
lightWeightPopupEnabled = DefaultLightWeightPopupEnabled;
selectionModel = new DefaultSingleSelectionModel();
-
super.setVisible(false);
}
@@ -141,29 +166,14 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
*/
public JPopupMenu(String label)
{
- this.label = label;
+ setLabel(label);
}
- /**
- * DOCUMENT ME!
- *
- * @param stream DOCUMENT ME!
- *
- * @throws IOException DOCUMENT ME!
- * @throws ClassNotFoundException DOCUMENT ME!
- */
private void readObject(ObjectInputStream stream)
throws IOException, ClassNotFoundException
{
}
- /**
- * DOCUMENT ME!
- *
- * @param stream DOCUMENT ME!
- *
- * @throws IOException DOCUMENT ME!
- */
private void writeObject(ObjectOutputStream stream) throws IOException
{
}
@@ -205,7 +215,7 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
*/
public JMenuItem add(Action action)
{
- JMenuItem item = new JMenuItem(action);
+ JMenuItem item = createActionComponent(action);
if (action != null)
action.addPropertyChangeListener(createActionChangeListener(item));
@@ -223,7 +233,7 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
super.remove(index);
GridBagConstraints constraints = new GridBagConstraints();
- constraints.fill = GridBagConstraints.HORIZONTAL;
+ constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 100.0;
constraints.weighty = 100.0;
@@ -258,7 +268,7 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
public void insert(Component component, int index)
{
GridBagConstraints constraints = new GridBagConstraints();
- constraints.fill = GridBagConstraints.HORIZONTAL;
+ constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 100.0;
constraints.weighty = 100.0;
@@ -385,27 +395,28 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
}
/**
- * DOCUMENT ME!
+ * Creates new menu item associated with a given action.
*
- * @param action DOCUMENT ME!
+ * @param action Action used to create new menu item
*
- * @return DOCUMENT ME!
+ * @return new created menu item associated with a given action.
*/
protected JMenuItem createActionComponent(Action action)
{
- return null;
+ return new JMenuItem(action);
}
/**
- * DOCUMENT ME!
+ * Creates PropertyChangeListener that listens to PropertyChangeEvents
+ * occuring in the Action associated with given menu item in this popup menu.
*
- * @param item DOCUMENT ME!
+ * @param item MenuItem
*
- * @return DOCUMENT ME!
+ * @return The PropertyChangeListener
*/
protected PropertyChangeListener createActionChangeListener(JMenuItem item)
{
- return null;
+ return new ActionChangeListener();
}
/**
@@ -441,13 +452,20 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
}
/**
- * Sets label for this popup menu
+ * Sets label for this popup menu. This method fires PropertyChangeEvent
+ * when the label property is changed. Please note that most
+ * of the Look & Feel will ignore this property.
*
* @param label label for this popup menu
*/
public void setLabel(String label)
{
+ if (label != this.label)
+ {
+ String oldLabel = this.label;
this.label = label;
+ firePropertyChange(LABEL_CHANGED_PROPERTY, oldLabel, label);
+ }
}
/**
@@ -576,6 +594,7 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
size = this.getPreferredSize();
else
size = this.getSize();
+
if ((size.width > (rootContainer.getWidth() - popupLocation.x))
|| (size.height > (rootContainer.getHeight() - popupLocation.y)))
fit = false;
@@ -602,27 +621,15 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
{
// Subtract insets of the top-level container if popup menu's
// top-left corner is inside it.
- if (rootContainer.contains(popupLocation))
- {
Insets insets = rootContainer.getInsets();
popup.show(popupLocation.x - insets.left,
popupLocation.y - insets.top, size.width,
size.height);
}
-
- else
- popup.show(popupLocation.x, popupLocation.y, size.width,
- size.height);
- }
}
else
{
- // popup menu was cancelled without selection
- if (! getSelectionModel().isSelected())
- firePopupMenuCanceled();
-
firePopupMenuWillBecomeInvisible();
-
popup.hide();
}
}
@@ -790,7 +797,8 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
}
/**
- * Process mouse events forwarded from MenuSelectionManager.
+ * Process mouse events forwarded from MenuSelectionManager. This method
+ * doesn't do anything. It is here to conform to the MenuElement interface.
*
* @param event event forwarded from MenuSelectionManager
* @param path path to the menu element from which event was generated
@@ -799,18 +807,24 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
public void processMouseEvent(MouseEvent event, MenuElement[] path,
MenuSelectionManager manager)
{
+ // Empty Implementation. This method is needed for the implementation
+ // of MenuElement interface
}
/**
- * DOCUMENT ME!
+ * Process key events forwarded from MenuSelectionManager. This method
+ * doesn't do anything. It is here to conform to the MenuElement interface.
+ *
+ * @param event event forwarded from MenuSelectionManager
+ * @param path path to the menu element from which event was generated
+ * @param manager MenuSelectionManager for the current menu hierarchy
*
- * @param event DOCUMENT ME!
- * @param path DOCUMENT ME!
- * @param manager DOCUMENT ME!
*/
public void processKeyEvent(KeyEvent event, MenuElement[] path,
MenuSelectionManager manager)
{
+ // Empty Implementation. This method is needed for the implementation
+ // of MenuElement interface
}
/**
@@ -822,6 +836,8 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
*/
public void menuSelectionChanged(boolean changed)
{
+ if (! changed)
+ setVisible(false);
}
/**
@@ -938,6 +954,9 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
*/
public void hide()
{
+ // FIXME: Right now the lightweight container is removed from JLayered
+ // pane. It is probably would be better in order to improve performance
+ // to make the container invisible instead of removing it everytime.
JLayeredPane layeredPane;
layeredPane = SwingUtilities.getRootPane(invoker).getLayeredPane();
int index = layeredPane.getIndexOf(c);
@@ -982,6 +1001,9 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
*/
public void hide()
{
+ // FIXME: Right now the lightweight container is removed from JLayered
+ // pane. It is probably would be better in order to improve performance
+ // to make the container invisible instead of removing it everytime.
JLayeredPane layeredPane;
layeredPane = SwingUtilities.getRootPane(invoker).getLayeredPane();
int index = layeredPane.getIndexOf(this);
@@ -1028,6 +1050,9 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
}
}
+ /**
+ * This is the separator that can be used in popup menu.
+ */
public static class Separator extends JSeparator
{
public Separator()
@@ -1053,4 +1078,15 @@ public class JPopupMenu extends JComponent implements Accessible, MenuElement
return AccessibleRole.POPUP_MENU;
}
}
+
+ /* This class resizes popup menu and repaints popup menu appropriately if one
+ of item's action has changed */
+ protected class ActionChangeListener implements PropertyChangeListener
+ {
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ JPopupMenu.this.revalidate();
+ JPopupMenu.this.repaint();
+ }
+ }
}
diff --git a/libjava/javax/swing/JRadioButton.java b/libjava/javax/swing/JRadioButton.java
index 0802ac09ba4..21e545eddd4 100644
--- a/libjava/javax/swing/JRadioButton.java
+++ b/libjava/javax/swing/JRadioButton.java
@@ -67,8 +67,8 @@ public class JRadioButton extends JToggleButton
public JRadioButton(String text, Icon icon)
{
super(text, icon);
- paint_border = false;
- content_area_filled = false;
+ borderPainted = false;
+ contentAreaFilled = false;
}
@@ -80,7 +80,8 @@ public class JRadioButton extends JToggleButton
public String getUIClassID()
{
- //Returns a string that specifies the name of the L&F class that renders this component.
+ //Returns a string that specifies the name of the Look and Feel
+ //class that renders this component.
return "RadioButtonUI";
}
diff --git a/libjava/javax/swing/JRadioButtonMenuItem.java b/libjava/javax/swing/JRadioButtonMenuItem.java
index a1611879933..4ced1a595f5 100644
--- a/libjava/javax/swing/JRadioButtonMenuItem.java
+++ b/libjava/javax/swing/JRadioButtonMenuItem.java
@@ -42,15 +42,23 @@ import java.io.ObjectOutputStream;
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
/**
- * DOCUMENT ME!
+ * This class represents JRadioButtonMenuItem. Its behaviour is very similar
+ * to JRadioButton. Just like JRadioButton, user can check and uncheck this
+ * menu item by clicking on it. JRadioButtonMenuItem uses ToggleButtonModel
+ * to keep track of its selection. If the JRadioButtonMenuItem is included in
+ * the button group, then only one JRadioButtonMenuItem can be selected at
+ * one time.
*/
public class JRadioButtonMenuItem extends JMenuItem implements Accessible
{
private static final long serialVersionUID = 8482658191548521743L;
+ /** name for the UI delegate for this radio button menu item. */
private static final String uiClassID = "RadioButtonMenuItemUI";
/**
@@ -62,9 +70,9 @@ public class JRadioButtonMenuItem extends JMenuItem implements Accessible
}
/**
- * Creates a new JRadioButtonMenuItem object.
+ * Creates a new JRadioButtonMenuItem with specified icon
*
- * @param icon DOCUMENT ME!
+ * @param icon Icon to be used for this menu item
*/
public JRadioButtonMenuItem(Icon icon)
{
@@ -72,9 +80,9 @@ public class JRadioButtonMenuItem extends JMenuItem implements Accessible
}
/**
- * Creates a new JRadioButtonMenuItem object.
+ * Creates a new JRadioButtonMenuItem with specified label
*
- * @param text DOCUMENT ME!
+ * @param text Label for this menu item
*/
public JRadioButtonMenuItem(String text)
{
@@ -82,9 +90,9 @@ public class JRadioButtonMenuItem extends JMenuItem implements Accessible
}
/**
- * Creates a new JRadioButtonMenuItem object.
+ * Creates a new JRadioButtonMenuItem using specified action
*
- * @param action DOCUMENT ME!
+ * @param action Action for this menu item
*/
public JRadioButtonMenuItem(Action action)
{
@@ -93,10 +101,10 @@ public class JRadioButtonMenuItem extends JMenuItem implements Accessible
}
/**
- * Creates a new JRadioButtonMenuItem object.
+ * Creates a new JRadioButtonMenuItem with specified label and icon
*
- * @param text DOCUMENT ME!
- * @param icon DOCUMENT ME!
+ * @param text Label for this menu item
+ * @param icon Icon for this menu item
*/
public JRadioButtonMenuItem(String text, Icon icon)
{
@@ -104,10 +112,11 @@ public class JRadioButtonMenuItem extends JMenuItem implements Accessible
}
/**
- * Creates a new JRadioButtonMenuItem object.
+ * Creates a new JRadioButtonMenuItem with specified label
+ * and marked selected if 'selected' is true.
*
- * @param text DOCUMENT ME!
- * @param selected DOCUMENT ME!
+ * @param text Text for this menu item
+ * @param selected Selected state of this menu item
*/
public JRadioButtonMenuItem(String text, boolean selected)
{
@@ -115,10 +124,11 @@ public class JRadioButtonMenuItem extends JMenuItem implements Accessible
}
/**
- * Creates a new JRadioButtonMenuItem object.
+ * Creates a new JRadioButtonMenuItem with specified icon
+ * and given selected state
*
- * @param icon DOCUMENT ME!
- * @param selected DOCUMENT ME!
+ * @param icon Icon for this menu item
+ * @param selected Selected state for this menu item
*/
public JRadioButtonMenuItem(Icon icon, boolean selected)
{
@@ -126,11 +136,12 @@ public class JRadioButtonMenuItem extends JMenuItem implements Accessible
}
/**
- * Creates a new JRadioButtonMenuItem object.
+ * Creates a new JRadioButtonMenuItem with specified label,
+ * icon and selected state.
*
- * @param text DOCUMENT ME!
- * @param icon DOCUMENT ME!
- * @param selected DOCUMENT ME!
+ * @param text Label for this menu item
+ * @param icon Icon to be use for this menu item
+ * @param selected selected state of this menu item
*/
public JRadioButtonMenuItem(String text, Icon icon, boolean selected)
{
@@ -139,22 +150,15 @@ public class JRadioButtonMenuItem extends JMenuItem implements Accessible
model.setSelected(selected);
}
- /**
- * DOCUMENT ME!
- *
- * @param stream DOCUMENT ME!
- *
- * @throws IOException DOCUMENT ME!
- */
private void writeObject(ObjectOutputStream stream) throws IOException
{
- // TODO
}
/**
- * DOCUMENT ME!
+ * This method returns a name to identify which look and feel class will be
+ * the UI delegate for the menuItem.
*
- * @return $returnType$ DOCUMENT ME!
+ * @return The Look and Feel classID. "JRadioButtonMenuItemUI"
*/
public String getUIClassID()
{
@@ -162,28 +166,26 @@ public class JRadioButtonMenuItem extends JMenuItem implements Accessible
}
/**
- * DOCUMENT ME!
+ * This method overrides JComponent.requestFocus with an empty
+ * implementation, since JRadioButtonMenuItems should not
+ * receve focus in general.
*/
public void requestFocus()
{
- // TODO
+ // Should do nothing here
}
/**
- * DOCUMENT ME!
+ * A string that describes this JRadioButtonMenuItem. Normally only used
+ * for debugging.
*
- * @return $returnType$ DOCUMENT ME!
+ * @return A string describing this JRadioButtonMenuItem
*/
protected String paramString()
{
return "JRadioButtonMenuItem";
}
- /**
- * DOCUMENT ME!
- *
- * @return $returnType$ DOCUMENT ME!
- */
public AccessibleContext getAccessibleContext()
{
if (accessibleContext == null)
@@ -192,9 +194,6 @@ public class JRadioButtonMenuItem extends JMenuItem implements Accessible
return accessibleContext;
}
- /**
- * DOCUMENT ME!
- */
protected class AccessibleJRadioButtonMenuItem extends AccessibleJMenuItem
{
private static final long serialVersionUID = 4381471510145292179L;
@@ -206,11 +205,6 @@ public class JRadioButtonMenuItem extends JMenuItem implements Accessible
{
}
- /**
- * DOCUMENT ME!
- *
- * @return $returnType$ DOCUMENT ME!
- */
public AccessibleRole getAccessibleRole()
{
return AccessibleRole.RADIO_BUTTON;
diff --git a/libjava/javax/swing/JRootPane.java b/libjava/javax/swing/JRootPane.java
index b1c24a207d9..34cd800889e 100644
--- a/libjava/javax/swing/JRootPane.java
+++ b/libjava/javax/swing/JRootPane.java
@@ -48,15 +48,11 @@ import javax.accessibility.AccessibleRole;
import javax.swing.plaf.RootPaneUI;
/**
- * This class is where JComponents are added to.
- * Unlike awt where you could just say frame.add(),
- * with swing you need to say frame.getRootPane()
- * (which delivers an instance of this class)
- * and add your components to that.
- *
- * It is implemented by several 'layers' (pane() should be read as plane())
- * each on top of the others
- * where you can add components to.
+ * This class is where JComponents are added to. Unlike awt where you could
+ * just say frame.add(), with swing you need to say frame.getRootPane()
+ * (which delivers an instance of this class) and add your components to
+ * that. It is implemented by several 'layers' (pane() should be read as
+ * plane()) each on top of the others where you can add components to.
* (getContentPane(), getGlassPane(), getLayeredPane())
*
* @author Ronald Veldema (rveldema@cs.vu.nl)
@@ -66,12 +62,21 @@ public class JRootPane extends JComponent
// The class used to obtain the accessible role for this object.
protected static class AccessibleJRootPane
{
+ /** DOCUMENT ME! */
private static final long serialVersionUID = 1082432482784468088L;
+ /**
+ * Creates a new <code>AccessibleJRootPane</code> object.
+ */
protected AccessibleJRootPane()
{
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public AccessibleRole getAccessibleRole()
{
return AccessibleRole.ROOT_PANE;
@@ -82,34 +87,74 @@ public class JRootPane extends JComponent
// menuBar withing its layeredPane.
protected class RootLayout implements LayoutManager2, Serializable
{
+ /** DOCUMENT ME! */
private static final long serialVersionUID = -4100116998559815027L;
+ /**
+ * Creates a new <code>RootLayout</code> object.
+ */
protected RootLayout()
{
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param comp DOCUMENT ME!
+ * @param constraints DOCUMENT ME!
+ */
public void addLayoutComponent(Component comp, Object constraints)
{
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param name DOCUMENT ME!
+ * @param comp DOCUMENT ME!
+ */
public void addLayoutComponent(String name, Component comp)
{
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param target DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public float getLayoutAlignmentX(Container target)
{
return target.getAlignmentX();
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param target DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public float getLayoutAlignmentY(Container target)
{
return target.getAlignmentY();
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param target DOCUMENT ME!
+ */
public void invalidateLayout(Container target)
{
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param c DOCUMENT ME!
+ */
public void layoutContainer(Container c)
{
Dimension menuBarSize;
@@ -146,6 +191,8 @@ public class JRootPane extends JComponent
menuBarSize = menuBar.getPreferredSize();
maxWidth = Math.max(menuBarSize.width, contentPaneSize.width);
menuBar.setBounds(0, 0, maxWidth, menuBarSize.height);
+ glassPane.setBounds(0, menuBarSize.height, maxWidth,
+ contentPaneSize.height);
contentPane.setBounds(0, menuBarSize.height, maxWidth,
contentPaneSize.height);
layeredPane.setSize(maxWidth,
@@ -153,6 +200,8 @@ public class JRootPane extends JComponent
}
else
{
+ glassPane.setBounds(0, 0, contentPaneSize.width,
+ contentPaneSize.height);
contentPane.setBounds(0, 0, contentPaneSize.width,
contentPaneSize.height);
layeredPane.setSize(contentPaneSize.width, contentPaneSize.height);
@@ -167,28 +216,55 @@ public class JRootPane extends JComponent
menuBarSize.height = containerSize.height;
menuBar.setBounds(0, 0, containerSize.width, menuBarSize.height);
int remainingHeight = containerSize.height - menuBarSize.height;
+ glassPane.setBounds(0, menuBarSize.height, containerSize.width,
+ containerSize.height - menuBarSize.height);
contentPane.setBounds(0, menuBarSize.height,
containerSize.width,
(containerSize.height - menuBarSize.height));
}
else
+ {
+ glassPane.setBounds(0, 0, containerSize.width,
+ containerSize.height);
contentPane.setBounds(0, 0, containerSize.width,
containerSize.height);
+ }
layeredPane.setSize(containerSize.width, containerSize.height);
}
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param target DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public Dimension maximumLayoutSize(Container target)
{
return preferredLayoutSize(target);
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param target DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public Dimension minimumLayoutSize(Container target)
{
return preferredLayoutSize(target);
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param c DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public Dimension preferredLayoutSize(Container c)
{
Dimension menuBarSize;
@@ -204,9 +280,9 @@ public class JRootPane extends JComponent
int maxWidth;
menuBarSize = menuBar.getPreferredSize();
maxWidth = Math.max(menuBarSize.width, contentPaneSize.width);
- prefSize =
- new Dimension(maxWidth,
- contentPaneSize.height + menuBarSize.height);
+ prefSize = new Dimension(maxWidth,
+ contentPaneSize.height
+ + menuBarSize.height);
}
else
prefSize = contentPaneSize;
@@ -217,32 +293,67 @@ public class JRootPane extends JComponent
return prefSize;
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param comp DOCUMENT ME!
+ */
public void removeLayoutComponent(Component comp)
{
}
}
+ /** DOCUMENT ME! */
+ private static final long serialVersionUID = 8690748000348575668L;
+
+ /** DOCUMENT ME! */
protected Component glassPane;
+
+ /** DOCUMENT ME! */
protected JLayeredPane layeredPane;
+
+ /** DOCUMENT ME! */
protected JMenuBar menuBar;
+
+ /** DOCUMENT ME! */
protected Container contentPane;
+ /**
+ * DOCUMENT ME!
+ *
+ * @param m DOCUMENT ME!
+ */
public void setJMenuBar(JMenuBar m)
{
menuBar = m;
getLayeredPane().add(menuBar, JLayeredPane.FRAME_CONTENT_LAYER);
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public JMenuBar getJMenuBar()
{
return menuBar;
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public boolean isValidateRoot()
{
return true;
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public Container getContentPane()
{
if (contentPane == null)
@@ -250,17 +361,34 @@ public class JRootPane extends JComponent
return contentPane;
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param p DOCUMENT ME!
+ */
public void setContentPane(Container p)
{
contentPane = p;
getLayeredPane().add(contentPane, JLayeredPane.FRAME_CONTENT_LAYER);
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param comp DOCUMENT ME!
+ * @param constraints DOCUMENT ME!
+ * @param index DOCUMENT ME!
+ */
protected void addImpl(Component comp, Object constraints, int index)
{
super.addImpl(comp, constraints, index);
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public Component getGlassPane()
{
if (glassPane == null)
@@ -268,6 +396,11 @@ public class JRootPane extends JComponent
return glassPane;
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param f DOCUMENT ME!
+ */
public void setGlassPane(Component f)
{
if (glassPane != null)
@@ -279,6 +412,11 @@ public class JRootPane extends JComponent
add(glassPane, 0);
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public JLayeredPane getLayeredPane()
{
if (layeredPane == null)
@@ -286,6 +424,11 @@ public class JRootPane extends JComponent
return layeredPane;
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param f DOCUMENT ME!
+ */
public void setLayeredPane(JLayeredPane f)
{
if (layeredPane != null)
@@ -295,6 +438,9 @@ public class JRootPane extends JComponent
add(f, -1);
}
+ /**
+ * Creates a new <code>JRootPane</code> object.
+ */
public JRootPane()
{
setLayout(createRootLayout());
@@ -305,11 +451,21 @@ public class JRootPane extends JComponent
updateUI();
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
protected LayoutManager createRootLayout()
{
return new RootLayout();
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
protected JComponent createContentPane()
{
JPanel p = new JPanel();
@@ -318,15 +474,26 @@ public class JRootPane extends JComponent
return p;
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
protected Component createGlassPane()
{
JPanel p = new JPanel();
p.setName(this.getName() + ".glassPane");
p.setLayout(new BorderLayout());
p.setVisible(false);
+ p.setOpaque(false);
return p;
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
protected JLayeredPane createLayeredPane()
{
JLayeredPane l = new JLayeredPane();
@@ -334,21 +501,39 @@ public class JRootPane extends JComponent
return l;
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public RootPaneUI getUI()
{
return (RootPaneUI) ui;
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param ui DOCUMENT ME!
+ */
public void setUI(RootPaneUI ui)
{
super.setUI(ui);
}
+ /**
+ * DOCUMENT ME!
+ */
public void updateUI()
{
setUI((RootPaneUI) UIManager.getUI(this));
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public String getUIClassID()
{
return "RootPaneUI";
diff --git a/libjava/javax/swing/JScrollPane.java b/libjava/javax/swing/JScrollPane.java
index 7e8bdce1897..8ccee7a1763 100644
--- a/libjava/javax/swing/JScrollPane.java
+++ b/libjava/javax/swing/JScrollPane.java
@@ -490,22 +490,15 @@ public class JScrollPane
{
// if the viewport changed, we should update the VSB / HSB
// models according to the new vertical and horizontal sizes
+
Rectangle vr = vp.getViewRect();
Dimension vs = vp.getViewSize();
- // System.err.println("got change from viewport, vr=" + vr + ", vs=" + vs);
if (vsb != null
&& (vsb.getMinimum() != 0
|| vsb.getMaximum() != vs.height
|| vsb.getValue() != vr.y
|| vsb.getVisibleAmount() != vr.height))
- {
- // System.err.println("setting vsb to "
- // + "pos=" + vr.y
- // + ", ext=" + vr.height
- // + ", min=0"
- // + ", max=" + vs.height);
vsb.setValue(vr.y, vr.height, 0, vs.height);
- }
if (hsb != null
&& (hsb.getMinimum() != 0
diff --git a/libjava/javax/swing/JTabbedPane.java b/libjava/javax/swing/JTabbedPane.java
index 7cf91c30445..efe1abecc7e 100644
--- a/libjava/javax/swing/JTabbedPane.java
+++ b/libjava/javax/swing/JTabbedPane.java
@@ -312,9 +312,9 @@ public class JTabbedPane extends JComponent implements Serializable,
*/
public void setComponent(Component c)
{
- JTabbedPane.this.remove(component);
+ remove(component);
this.component = c;
- JTabbedPane.this.add(c);
+ add(c);
}
/**
diff --git a/libjava/javax/swing/JTable.java b/libjava/javax/swing/JTable.java
index 73dac5e8bdd..c628b715218 100644
--- a/libjava/javax/swing/JTable.java
+++ b/libjava/javax/swing/JTable.java
@@ -38,9 +38,11 @@ exception statement from your version. */
package javax.swing;
+import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.util.Vector;
+import java.util.Hashtable;
import javax.accessibility.Accessible;
import javax.swing.event.CellEditorListener;
@@ -51,6 +53,11 @@ import javax.swing.event.TableColumnModelEvent;
import javax.swing.event.TableColumnModelListener;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.JTableHeader;
+import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
@@ -66,39 +73,115 @@ public class JTable extends JComponent
public static final int AUTO_RESIZE_OFF = 0;
public static final int AUTO_RESIZE_SUBSEQUENT_COLUMNS = 2;
+ protected boolean autoCreateColumnsFromModel;
+ protected int autoResizeMode;
+ protected TableCellEditor cellEditor;
+ protected boolean cellSelectionEnabled;
+ protected TableColumnModel columnModel;
+ protected TableModel dataModel;
+ protected Hashtable defaultEditorsByColumnClass;
+ protected Hashtable defaultRenderersByColumnClass;
+ protected int editingColumn;
+ protected int editingRow;
+ protected Color gridColor;
+ protected Dimension preferredViewportSize;
+ protected int rowHeight;
+ protected int rowMargin;
+ protected boolean rowSelectionAllowed;
+ protected Color selectionBackground;
+ protected Color selectionForeground;
+ protected ListSelectionModel selectionModel;
+ protected boolean showHorizontalLines;
+ protected boolean showVerticalLines;
+ protected JTableHeader tableHeader;
+
+ /**
+ * Creates a new <code>JTable</code> instance.
+ */
public JTable ()
{
- throw new Error ("Not implemented");
+ this(null, null, null);
}
+ /**
+ * Creates a new <code>JTable</code> instance.
+ *
+ * @param numRows an <code>int</code> value
+ * @param numColumns an <code>int</code> value
+ */
public JTable (int numRows, int numColumns)
{
- throw new Error ("Not implemented");
+ this(new DefaultTableModel(numRows, numColumns));
}
- public JTable (Object[][] rowData, Object[] columnNames)
+ /**
+ * Creates a new <code>JTable</code> instance.
+ *
+ * @param data an <code>Object[][]</code> value
+ * @param columnNames an <code>Object[]</code> value
+ */
+ public JTable(Object[][] data, Object[] columnNames)
{
- throw new Error ("Not implemented");
+ this(new DefaultTableModel(data, columnNames));
}
+ /**
+ * Creates a new <code>JTable</code> instance.
+ *
+ * @param dm a <code>TableModel</code> value
+ */
public JTable (TableModel dm)
{
- throw new Error ("Not implemented");
+ this(dm, null, null);
}
+ /**
+ * Creates a new <code>JTable</code> instance.
+ *
+ * @param dm a <code>TableModel</code> value
+ * @param cm a <code>TableColumnModel</code> value
+ */
public JTable (TableModel dm, TableColumnModel cm)
{
- throw new Error ("Not implemented");
+ this(dm, cm, null);
}
+ /**
+ * Creates a new <code>JTable</code> instance.
+ *
+ * @param dm a <code>TableModel</code> value
+ * @param cm a <code>TableColumnModel</code> value
+ * @param sm a <code>ListSelectionModel</code> value
+ */
public JTable (TableModel dm, TableColumnModel cm, ListSelectionModel sm)
{
- throw new Error ("Not implemented");
+ this.dataModel = dm == null ? createDefaultDataModel() : dm;
+ this.columnModel = cm == null ? createDefaultColumnModel() : cm;
+ this.selectionModel = sm == null ? createDefaultListSelectionModel() : sm;
}
- public JTable (Vector rowData, Vector columnNames)
+ /**
+ * Creates a new <code>JTable</code> instance.
+ *
+ * @param data a <code>Vector</code> value
+ * @param columnNames a <code>Vector</code> value
+ */
+ public JTable(Vector data, Vector columnNames)
{
- throw new Error ("Not implemented");
+ this(new DefaultTableModel(data, columnNames));
+ }
+
+ /**
+ * @deprecated 1.0.2, replaced by <code>new JScrollPane(JTable)</code>
+ */
+ public static JScrollPane createScrollPaneForTable(JTable table)
+ {
+ return new JScrollPane(table);
+ }
+
+ public void clearSelection()
+ {
+ selectionModel.clearSelection();
}
public void columnAdded (TableColumnModelEvent event)
@@ -126,6 +209,21 @@ public class JTable extends JComponent
throw new Error ("Not implemented");
}
+ protected TableColumnModel createDefaultColumnModel()
+ {
+ return new DefaultTableColumnModel();
+ }
+
+ protected TableModel createDefaultDataModel()
+ {
+ return new DefaultTableModel();
+ }
+
+ protected ListSelectionModel createDefaultListSelectionModel()
+ {
+ return new DefaultListSelectionModel();
+ }
+
public void editingCanceled (ChangeEvent event)
{
throw new Error ("Not implemented");
@@ -138,7 +236,12 @@ public class JTable extends JComponent
public TableColumnModel getColumnModel ()
{
- throw new Error ("Not implemented");
+ return columnModel;
+ }
+
+ public TableModel getModel()
+ {
+ return dataModel;
}
public Dimension getPreferredScrollableViewportSize ()
@@ -168,12 +271,15 @@ public class JTable extends JComponent
public int getSelectedRow ()
{
- throw new Error ("Not implemented");
+ return selectionModel.getMinSelectionIndex();
}
public ListSelectionModel getSelectionModel ()
{
- throw new Error ("Not implemented");
+ if (! rowSelectionAllowed)
+ return null;
+
+ return selectionModel;
}
public void tableChanged (TableModelEvent event)
@@ -183,7 +289,13 @@ public class JTable extends JComponent
public void setModel (TableModel model)
{
- throw new Error ("Not implemented");
+ if (model == null)
+ throw new IllegalArgumentException();
+
+ // FIXME: Should we deregister from old model ?
+
+ dataModel = model;
+ dataModel.addTableModelListener(this);
}
public void setSelectionMode (int selectionMode)
@@ -193,7 +305,13 @@ public class JTable extends JComponent
public void setSelectionModel (ListSelectionModel model)
{
- throw new Error ("Not implemented");
+ if (model == null)
+ throw new IllegalArgumentException();
+
+ // FIXME: Should we deregister from old model ?
+
+ selectionModel = model;
+ selectionModel.addListSelectionListener(this);
}
public void setShowGrid (boolean showGrid)
@@ -205,4 +323,71 @@ public class JTable extends JComponent
{
throw new Error ("Not implemented");
}
-} // class JTable
+
+ public JTableHeader getTableHeader()
+ {
+ return tableHeader;
+ }
+
+ public void setTableHeader(JTableHeader newHeader)
+ {
+ tableHeader = newHeader;
+ }
+
+ public boolean getColumnSelectionAllowed()
+ {
+ return columnModel.getColumnSelectionAllowed();
+ }
+
+ public void setColumnSelectionAllowed(boolean flag)
+ {
+ columnModel.setColumnSelectionAllowed(flag);
+ }
+
+ public boolean getRowSelectionAllowed()
+ {
+ return rowSelectionAllowed;
+ }
+
+ public void setRowSelectionAllowed(boolean flag)
+ {
+ rowSelectionAllowed = flag;
+ }
+
+ public int getAutoResizeMode()
+ {
+ return autoResizeMode;
+ }
+
+ public void setAutoResizeMode(int mode)
+ {
+ autoResizeMode = mode;
+ }
+
+ public int getColumnCount()
+ {
+ return dataModel.getColumnCount();
+ }
+
+ public int getRowCount()
+ {
+ return dataModel.getRowCount();
+ }
+
+ public TableCellRenderer getCellRenderer(int row, int column)
+ {
+ TableCellRenderer renderer =
+ columnModel.getColumn(column).getCellRenderer();
+
+ if (renderer == null)
+ renderer = getDefaultRenderer(dataModel.getColumnClass(column));
+
+ return renderer;
+ }
+
+ public TableCellRenderer getDefaultRenderer(Class columnClass)
+ {
+ // FIXME:
+ return null;
+ }
+}
diff --git a/libjava/javax/swing/JTextArea.java b/libjava/javax/swing/JTextArea.java
index 7a44e91c5ca..5cbc87dcdc4 100644
--- a/libjava/javax/swing/JTextArea.java
+++ b/libjava/javax/swing/JTextArea.java
@@ -49,6 +49,7 @@ public class JTextArea extends JTextComponent
private int rows;
private int columns;
private boolean wrapping;
+ private int tabSize = 8;
/**
* Creates a new <code>JTextArea</code> object.
@@ -224,8 +225,28 @@ public class JTextArea extends JTextComponent
*
* @param wrapping true to enable line wrapping, false otherwise
*/
- public void setLineWrap(boolean wrapping)
+ public void setLineWrap(boolean flag)
{
- this.wrapping = wrapping;
+ if (wrapping == flag)
+ return;
+
+ boolean oldValue = wrapping;
+ wrapping = flag;
+ firePropertyChange("lineWrap", oldValue, wrapping);
+ }
+
+ public int getTabSize()
+ {
+ return tabSize;
+ }
+
+ public void setTabSize(int newSize)
+ {
+ if (tabSize == newSize)
+ return;
+
+ int oldValue = tabSize;
+ tabSize = newSize;
+ firePropertyChange("tabSize", oldValue, tabSize);
}
}
diff --git a/libjava/javax/swing/JTextField.java b/libjava/javax/swing/JTextField.java
index 46d35929a28..8872af6906d 100644
--- a/libjava/javax/swing/JTextField.java
+++ b/libjava/javax/swing/JTextField.java
@@ -37,6 +37,9 @@ exception statement from your version. */
package javax.swing;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.accessibility.AccessibleStateSet;
@@ -78,6 +81,8 @@ public class JTextField extends JTextComponent
private int columns;
+ private int align;
+
/**
* Creates a new instance of <code>JTextField</code>.
*/
@@ -132,10 +137,7 @@ public class JTextField extends JTextComponent
*/
public JTextField(Document doc, String text, int columns)
{
- if (doc == null)
- doc = createDefaultModel();
-
- setDocument(doc);
+ setDocument(doc == null ? createDefaultModel() : doc);
setText(text);
setColumns(columns);
}
@@ -152,6 +154,16 @@ public class JTextField extends JTextComponent
}
/**
+ * Returns the class ID for the UI.
+ *
+ * @return "TextFieldUI";
+ */
+ public String getUIClassID()
+ {
+ return "TextFieldUI";
+ }
+
+ /**
* Adds a new listener object to this text field.
*
* @param listener the listener to add
@@ -175,6 +187,8 @@ public class JTextField extends JTextComponent
* Returns all registered <code>ActionListener</code> objects.
*
* @return an array of listeners
+ *
+ * @since 1.4
*/
public ActionListener[] getActionListeners()
{
@@ -210,10 +224,46 @@ public class JTextField extends JTextComponent
throw new IllegalArgumentException();
this.columns = columns;
- // FIXME: Invalidate layout.
+ invalidate();
+ repaint();
}
- public void selectAll()
+ public int getHorizontalAlignment()
{
+ return align;
+ }
+
+ public void setHorizontalAlignment(int newAlign)
+ {
+ int oldAlign = align;
+ align = newAlign;
+ invalidate();
+ repaint();
+ firePropertyChange("horizontalAlignment", oldAlign, newAlign);
+ }
+
+ public void setFont(Font newFont)
+ {
+ super.setFont(newFont);
+ revalidate();
+ }
+
+ public Dimension getPreferredSize()
+ {
+ Dimension size;
+ FontMetrics fm = getFontMetrics(getFont());
+ int fontHeight = fm.getMaxAscent() + fm.getMaxDescent();
+ int columnWidth = fm.charWidth('m');
+
+ if (columns != 0)
+ {
+ size = new Dimension(columns * columnWidth + 4, fontHeight + 4);
+ }
+ else
+ {
+ size = new Dimension(10, 10);
+ }
+
+ return size;
}
}
diff --git a/libjava/javax/swing/JToggleButton.java b/libjava/javax/swing/JToggleButton.java
index 9f3395aa227..c04bcc36739 100644
--- a/libjava/javax/swing/JToggleButton.java
+++ b/libjava/javax/swing/JToggleButton.java
@@ -81,6 +81,11 @@ public class JToggleButton extends AbstractButton implements Accessible
this(null, icon);
}
+ public JToggleButton (Icon icon, boolean selected)
+ {
+ this(null, icon, selected);
+ }
+
public JToggleButton(String text)
{
this(text, null);
@@ -88,8 +93,7 @@ public class JToggleButton extends AbstractButton implements Accessible
public JToggleButton(String text, boolean selected)
{
- this(text, null);
- setSelected(selected);
+ this(text, null, selected);
}
public JToggleButton(String text, Icon icon)
@@ -101,13 +105,15 @@ public class JToggleButton extends AbstractButton implements Accessible
{
super(text, icon);
- hori_align = LEADING;
+ horizontalAlignment = LEADING;
setModel(new ToggleButtonModel());
model.setSelected(selected);
}
/**
- * Gets the AccessibleContext associated with this JToggleButton.
+ * Gets the AccessibleContext associated with this <code>JToggleButton</code>.
+ *
+ * @return the associated context
*/
public AccessibleContext getAccessibleContext()
{
@@ -115,8 +121,8 @@ public class JToggleButton extends AbstractButton implements Accessible
}
/**
- * Returns a string that specifies the name of the L&amp;F class that renders
- * this component.
+ * Returns a string that specifies the name of the Look and Feel
+ * class that renders this component.
*/
public String getUIClassID()
{
diff --git a/libjava/javax/swing/JToolBar.java b/libjava/javax/swing/JToolBar.java
index e6db8720c2c..7b5121e76fc 100644
--- a/libjava/javax/swing/JToolBar.java
+++ b/libjava/javax/swing/JToolBar.java
@@ -38,6 +38,7 @@ exception statement from your version. */
package javax.swing;
import java.awt.Component;
+import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridLayout;
@@ -46,26 +47,31 @@ import java.awt.LayoutManager;
import java.beans.PropertyChangeListener;
import java.io.IOException;
import java.io.ObjectOutputStream;
-
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
import javax.accessibility.AccessibleStateSet;
import javax.swing.plaf.ToolBarUI;
+
/**
- * JToolBar
- * @author Andrew Selkirk
- * @version 1.0
+ * JToolBar is a component that provides a toolbar to Swing programs. Users
+ * can add buttons (or actions that will be represented by JButtons) as well
+ * as other components to the JToolBar. JToolBars can be dragged in and out
+ * of their parent components. If the JToolBar is dragged out of the parent,
+ * then it will be displayed in its own RootPaneContainer. For dragging to
+ * work properly, JToolBars need to be placed in a Container that has a
+ * BorderLayout. That parent Container cannot have components in the NORTH,
+ * EAST, SOUTH, or WEST components (that is not the JToolBar).
*/
-public class JToolBar extends JComponent
- implements SwingConstants, Accessible
+public class JToolBar extends JComponent implements SwingConstants, Accessible
{
/**
* AccessibleJToolBar
*/
protected class AccessibleJToolBar extends AccessibleJComponent
{
+ /** DOCUMENT ME! */
private static final long serialVersionUID = -5516888265903814215L;
/**
@@ -77,6 +83,7 @@ public class JToolBar extends JComponent
/**
* getAccessibleStateSet
+ *
* @return AccessibleStateSet
*/
public AccessibleStateSet getAccessibleStateSet()
@@ -86,6 +93,7 @@ public class JToolBar extends JComponent
/**
* getAccessibleRole
+ *
* @return AccessibleRole
*/
public AccessibleRole getAccessibleRole()
@@ -95,409 +103,678 @@ public class JToolBar extends JComponent
}
/**
- * Separator
+ * This is the private JToolBar layout manager.
+ */
+ private class DefaultToolBarLayout implements LayoutManager
+ {
+ /**
+ * This method is called when a new component is added to the container.
+ *
+ * @param name The name of the component added.
+ * @param comp The component that was added.
*/
- public static class Separator extends JSeparator {
+ public void addLayoutComponent(String name, Component comp)
+ {
+ // Do nothing.
+ }
- private static final long serialVersionUID = -1656745644823105219L;
+ /**
+ * This method is called to lay out the given container to position and
+ * size the child components.
+ *
+ * @param c The container to lay out.
+ *
+ * @throws Error DOCUMENT ME!
+ */
+ public void layoutContainer(Container c)
+ {
+ if (! (c instanceof JToolBar))
+ throw new Error("DefaultToolBarLayout can only be used on JToolBars.");
+ Insets insets = getInsets();
+ Insets margin = getMargin();
+ int middle;
+ if (margin != null)
+ {
+ insets.left += margin.left;
+ insets.top += margin.top;
+ insets.bottom += margin.bottom;
+ insets.right += margin.right;
+ }
+ Component[] components = c.getComponents();
+ Dimension tdims = c.getSize();
+ int start = 0;
+ Dimension pref;
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
+ if (getOrientation() == SwingUtilities.HORIZONTAL)
+ {
+ start += insets.left;
+ for (int i = 0; i < components.length; i++)
+ {
+ if (components[i] != null && components[i].isVisible())
+ {
+ pref = components[i].getPreferredSize();
+ if (pref != null)
+ {
+ middle = (tdims.height - pref.height) / 2;
+ components[i].setBounds(start, middle, pref.width,
+ pref.height);
+ start += pref.width;
+ }
+ }
+ }
+ }
+ else
+ {
+ start += insets.top;
+ for (int i = 0; i < components.length; i++)
+ {
+ if (components[i] != null && components[i].isVisible())
+ {
+ pref = components[i].getPreferredSize();
+ if (pref != null)
+ {
+ middle = (tdims.width - pref.width) / 2;
+ components[i].setBounds(middle, start, pref.width,
+ pref.height);
+ start += pref.height;
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * This method returns the minimum size of the given container given the
+ * child components.
+ *
+ * @param parent The container to measure.
+ *
+ * @return The minimum size of the given container.
+ */
+ public Dimension minimumLayoutSize(Container parent)
+ {
+ return preferredLayoutSize(parent);
+ }
/**
- * separatorSize
+ * This method returns the preferred size of the given container given the
+ * child components.
+ *
+ * @param parent The container to measure.
+ *
+ * @return The preferred size of the given container.
*/
- private Dimension size;
+ public Dimension preferredLayoutSize(Container parent)
+ {
+ int orientation = getOrientation();
+ Component[] components = getComponents();
+ int limit = 0;
+ int total = 0;
+ Dimension dims;
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
+ int w = 0;
+ int h = 0;
+
+ if (orientation == SwingConstants.HORIZONTAL)
+ {
+ for (int i = 0; i < components.length; i++)
+ {
+ dims = components[i].getPreferredSize();
+ if (dims != null)
+ {
+ if (dims.height > limit)
+ limit = dims.height;
+ total += dims.width;
+ }
+ }
+ w = total;
+ h = limit;
+ }
+ else
+ {
+ for (int i = 0; i < components.length; i++)
+ {
+ dims = components[i].getPreferredSize();
+ if (dims != null)
+ {
+ if (dims.width > limit)
+ limit = dims.width;
+ total += dims.height;
+ }
+ }
+ w = limit;
+ h = total;
+ }
+
+ Insets insets = getInsets();
+ w += insets.left + insets.right;
+ h += insets.top + insets.bottom;
+
+ Insets margin = getMargin();
+ if (margin != null)
+ {
+ w += margin.left + margin.right;
+ h += margin.top + margin.bottom;
+ }
+
+ return new Dimension(w, h);
+ }
/**
- * Constructor Separator
+ * This method is called when the given component is removed from the
+ * container.
+ *
+ * @param comp The component removed.
*/
- public Separator() {
- // TODO
- } // Separator()
+ public void removeLayoutComponent(Component comp)
+ {
+ // Do nothing.
+ }
+ }
/**
- * Constructor Separator
- * @param size TODO
+ * This is an extension of JSeparator used in toolbars. Unlike JSeparator,
+ * nothing is painted for this Separator, it is only blank space that
+ * separates components.
*/
- public Separator(Dimension size) {
- // TODO
- } // Separator()
+ public static class Separator extends JSeparator
+ {
+ /** DOCUMENT ME! */
+ private static final long serialVersionUID = -1656745644823105219L;
+ /**
+ * Creates a new Separator object.
+ */
+ public Separator()
+ {
+ super();
+ } // Separator()
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ /**
+ * Creates a new Separator object with the given size.
+ *
+ * @param size The size of the separator.
+ */
+ public Separator(Dimension size)
+ {
+ setPreferredSize(size);
+ } // Separator()
/**
- * getUIClassID
- * @returns String
+ * This method returns the String ID of the UI class of Separator.
+ *
+ * @return The UI class' String ID.
*/
- public String getUIClassID() {
- return null; // TODO
+ public String getUIClassID()
+ {
+ return "ToolBarSeparatorUI";
} // getUIClassID()
/**
- * getPreferredSize
- * @returns Dimension
+ * This method returns the preferred size of the Separator.
+ *
+ * @return The preferred size of the Separator.
*/
- public Dimension getPreferredSize() {
- return null; // TODO
+ public Dimension getPreferredSize()
+ {
+ return super.getPreferredSize();
} // getPreferredSize()
/**
- * getMaximumSize
- * @returns Dimension
+ * This method returns the maximum size of the Separator.
+ *
+ * @return The maximum size of the Separator.
*/
- public Dimension getMaximumSize() {
- return null; // TODO
+ public Dimension getMaximumSize()
+ {
+ return super.getPreferredSize();
} // getMaximumSize()
/**
- * getMinimumSize
- * @returns Dimension
+ * This method returns the minimum size of the Separator.
+ *
+ * @return The minimum size of the Separator.
*/
- public Dimension getMinimumSize() {
- return null; // TODO
+ public Dimension getMinimumSize()
+ {
+ return super.getPreferredSize();
} // getMinimumSize()
/**
- * getSeparatorSize
- * @returns Dimension
+ * This method returns the size of the Separator.
+ *
+ * @return The size of the Separator.
*/
- public Dimension getSeparatorSize() {
- return null; // TODO
+ public Dimension getSeparatorSize()
+ {
+ return super.getPreferredSize();
} // getSeparatorSize()
/**
- * setSeparatorSize
- * @param size TODO
+ * This method sets the size of the Separator.
+ *
+ * @param size The new size of the Separator.
*/
- public void setSeparatorSize(Dimension size) {
- // TODO
+ public void setSeparatorSize(Dimension size)
+ {
+ setPreferredSize(size);
} // setSeparatorSize()
-
-
} // Separator
-// /**
-// * DefaultJToolBarLayout
-// */
-// private class DefaultJToolBarLayout {
-//
-// private void DefaultJToolBarLayout() {
-// }
-//
-// private LayoutManager getLayout() {
-// switch (JToolBar.this.getOrientation()) {
-// case HORIZONTAL: setLayout(new GridLayout(1, 0, 4, 4));
-// break;
-// case VERTICAL: setLayout(new GridLayout(0, 1, 4, 4));
-// break;
-// }
-// }
-// } // DefaultJToolBarLayout
-
-
+ /** DOCUMENT ME! */
private static final long serialVersionUID = -1269915519555129643L;
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
+ /** Whether the JToolBar paints its border. */
+ private transient boolean paintBorder = true;
- /**
- * uiClassID
- */
- private static final String uiClassID = "ToolBarUI";
+ /** The extra insets around the JToolBar. */
+ private transient Insets margin;
- /**
- * paintBorder
- */
- private boolean paintBorder;
-
- /**
- * margin
- */
- private Insets margin;
+ /** Whether the JToolBar can float (and be dragged around). */
+ private transient boolean floatable = true;
- /**
- * floatable
- */
- private boolean floatable;
+ /** Whether the buttons will have rollover borders. */
+ private transient boolean rollover;
- /**
- * orientation
- */
+ /** The orientation of the JToolBar. */
private int orientation = HORIZONTAL;
-// protected transient DefaultJToolBarLayout toolbarLayout;
-
- /** Fired in a PropertyChangeEvent when the "orientation" property changes.
- */
+ /** Fired in a PropertyChangeEvent when the orientation property changes. */
public static final String ORIENTATION_CHANGED_PROPERTY = "orientation";
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
+ /** Fired in a PropertyChangeEvent when the floatable property changes. */
+ public static final String FLOATABLE_CHANGED_PROPERTY = "floatable";
+
+ /** Fired in a PropertyChangeEvent when the borderPainted property changes. */
+ public static final String BORDER_PAINTED_CHANGED_PROPERTY = "borderPainted";
+
+ /** Fired in a PropertyChangeEvent when the margin property changes. */
+ public static final String MARGIN_CHANGED_PROPERTY = "margin";
+
+ /** Fired in a PropertyChangeEvent when the rollover property changes. */
+ public static final String ROLLOVER_CHANGED_PROPERTY = "rollover";
/**
- * Constructor JToolBar
+ * This method creates a new JToolBar object with horizontal orientation
+ * and no name.
*/
- public JToolBar() {
- this(null);
+ public JToolBar()
+ {
+ this(null, HORIZONTAL);
} // JToolBar()
/**
- * Constructor JToolBar
+ * This method creates a new JToolBar with the given orientation and no
+ * name.
+ *
* @param orientation JToolBar orientation (HORIZONTAL or VERTICAL)
*/
- public JToolBar(int orientation) {
+ public JToolBar(int orientation)
+ {
this(null, orientation);
} // JToolBar()
/**
- * Constructor JToolBar
+ * This method creates a new JToolBar object with the given name and
+ * horizontal orientation.
+ *
* @param name Name assigned to undocked tool bar.
*/
- public JToolBar(String name) {
+ public JToolBar(String name)
+ {
this(name, HORIZONTAL);
} // JToolBar()
/**
- * Constructor JToolBar
+ * This method creates a new JToolBar object with the given name and
+ * orientation.
+ *
* @param name Name assigned to undocked tool bar.
* @param orientation JToolBar orientation (HORIZONTAL or VERTICAL)
*/
- public JToolBar(String name, int orientation) {
+ public JToolBar(String name, int orientation)
+ {
setName(name);
- if (orientation != HORIZONTAL && orientation != VERTICAL)
- throw new IllegalArgumentException(orientation + " is not a legal orientation");
- this.orientation = orientation;
-// toolbarLayout = new DefaultJToolBarLayout();
+ setOrientation(orientation);
+ setLayout(new DefaultToolBarLayout());
+ revalidate();
updateUI();
} // JToolBar()
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * writeObject
- * @param stream TODO
- * @exception IOException TODO
- */
- private void writeObject(ObjectOutputStream stream) throws IOException {
- // TODO
- } // writeObject()
-
/**
- * add
- * @param action TODO
- * @returns JButton
+ * This method adds a new JButton that performs the given Action to the
+ * JToolBar.
+ *
+ * @param action The Action to add to the JToolBar.
+ *
+ * @return The JButton that wraps the Action.
*/
- public JButton add(Action action) {
- return null; // TODO
+ public JButton add(Action action)
+ {
+ JButton b = createActionComponent(action);
+ add(b);
+ return b;
} // add()
/**
- * paintBorder
- * @param graphics TODO
+ * This method paints the border if the borderPainted property is true.
+ *
+ * @param graphics The graphics object to paint with.
*/
- protected void paintBorder(Graphics graphics) {
- // TODO
+ protected void paintBorder(Graphics graphics)
+ {
+ if (paintBorder && isFloatable())
+ super.paintBorder(graphics);
} // paintBorder()
/**
- * getUI
- * @returns ToolBarUI
+ * This method returns the UI class used to paint this JToolBar.
+ *
+ * @return The UI class for this JToolBar.
*/
- public ToolBarUI getUI() {
- System.out.println("ui = " + ui);
+ public ToolBarUI getUI()
+ {
return (ToolBarUI) ui;
} // getUI()
/**
- * setUI
- * @param ui TODO
+ * This method sets the UI used with the JToolBar.
+ *
+ * @param ui The UI used with the JToolBar.
*/
- public void setUI(ToolBarUI ui) {
+ public void setUI(ToolBarUI ui)
+ {
super.setUI(ui);
} // setUI()
/**
- * updateUI
+ * This method resets the UI used to the Look and Feel defaults.
*/
- public void updateUI() {
+ public void updateUI()
+ {
setUI((ToolBarUI)UIManager.getUI(this));
+ revalidate();
+ repaint();
} // updateUI()
/**
- * getUIClassID
- * @returns String
+ * This method returns the String identifier for the UI class to the used
+ * with the JToolBar.
+ *
+ * @return The String identifier for the UI class.
*/
- public String getUIClassID() {
- return uiClassID;
+ public String getUIClassID()
+ {
+ return "ToolBarUI";
} // getUIClassID()
/**
- * getComponentIndex
- * @param component TODO
- * @returns int
+ * This method sets the rollover property for the JToolBar. In rollover
+ * mode, JButtons inside the JToolBar will only display their borders when
+ * the mouse is moving over them.
+ *
+ * @param b The new rollover property.
*/
- public int getComponentIndex(Component component) {
- return 0; // TODO
+ public void setRollover(boolean b)
+ {
+ if (b != rollover)
+ {
+ rollover = b;
+ firePropertyChange(ROLLOVER_CHANGED_PROPERTY, ! rollover, rollover);
+ revalidate();
+ repaint();
+ }
+ }
+
+ /**
+ * This method returns the rollover property.
+ *
+ * @return The rollover property.
+ */
+ public boolean isRollover()
+ {
+ return rollover;
+ }
+
+ /**
+ * This method returns the index of the given component.
+ *
+ * @param component The component to find.
+ *
+ * @return The index of the given component.
+ */
+ public int getComponentIndex(Component component)
+ {
+ Component[] components = getComponents();
+ if (components == null)
+ return -1;
+
+ for (int i = 0; i < components.length; i++)
+ if (components[i] == component)
+ return i;
+
+ return -1;
} // getComponentIndex()
/**
- * getComponentAtIndex
- * @param index TODO
- * @returns Component
+ * This method returns the component at the given index.
+ *
+ * @param index The index of the component.
+ *
+ * @return The component at the given index.
*/
- public Component getComponentAtIndex(int index) {
- return null; // TODO
+ public Component getComponentAtIndex(int index)
+ {
+ return getComponent(index);
} // getComponentAtIndex()
/**
- * getMargin
- * @returns Insets
+ * This method returns the margin property.
+ *
+ * @return The margin property.
*/
- public Insets getMargin() {
- return null; // TODO
+ public Insets getMargin()
+ {
+ return margin;
} // getMargin()
/**
- * setMargin
- * @param margin TODO
+ * This method sets the margin property. The margin property determines the
+ * extra space between the children components of the JToolBar and the
+ * border.
+ *
+ * @param margin The margin property.
*/
- public void setMargin(Insets margin) {
- // TODO
+ public void setMargin(Insets margin)
+ {
+ if ((this.margin != null && margin == null)
+ || (this.margin == null && margin != null)
+ || (margin != null && this.margin != null
+ && (margin.left != this.margin.left
+ || margin.right != this.margin.right || margin.top != this.margin.top
+ || margin.bottom != this.margin.bottom)))
+ {
+ Insets oldMargin = this.margin;
+ this.margin = margin;
+ firePropertyChange(MARGIN_CHANGED_PROPERTY, oldMargin, this.margin);
+ revalidate();
+ repaint();
+ }
} // setMargin()
/**
- * isBorderPainted
- * @returns boolean
+ * This method returns the borderPainted property.
+ *
+ * @return The borderPainted property.
*/
- public boolean isBorderPainted() {
- return false; // TODO
+ public boolean isBorderPainted()
+ {
+ return paintBorder;
} // isBorderPainted()
/**
- * setBorderPainted
- * @param painted TODO
+ * This method sets the borderPainted property. If set to false, the border
+ * will not be painted.
+ *
+ * @param painted Whether the border will be painted.
*/
- public void setBorderPainted(boolean painted) {
- // TODO
+ public void setBorderPainted(boolean painted)
+ {
+ if (painted != paintBorder)
+ {
+ paintBorder = painted;
+ firePropertyChange(BORDER_PAINTED_CHANGED_PROPERTY, ! paintBorder,
+ paintBorder);
+ repaint();
+ }
} // setBorderPainted()
/**
- * isFloatable
- * @returns boolean
+ * This method returns the floatable property.
+ *
+ * @return The floatable property.
*/
- public boolean isFloatable() {
- return false; // TODO
+ public boolean isFloatable()
+ {
+ return floatable;
} // isFloatable()
/**
- * setFloatable
- * @param floatable TODO
+ * This method sets the floatable property. If set to false, the JToolBar
+ * cannot be dragged.
+ *
+ * @param floatable Whether the JToolBar can be dragged.
*/
- public void setFloatable(boolean floatable) {
- // TODO
+ public void setFloatable(boolean floatable)
+ {
+ if (floatable != this.floatable)
+ {
+ this.floatable = floatable;
+ firePropertyChange(FLOATABLE_CHANGED_PROPERTY, ! floatable, floatable);
+ }
} // setFloatable()
/**
- * getOrientation
- * @returns int
+ * This method returns the orientation of the JToolBar.
+ *
+ * @return The orientation of the JToolBar.
*/
- public int getOrientation() {
- return this.orientation;
+ public int getOrientation()
+ {
+ return orientation;
} // getOrientation()
/**
- * setLayout
- * @param mgr
+ * This method sets the layout manager to be used with the JToolBar.
+ *
+ * @param mgr The Layout Manager used with the JToolBar.
*/
- public void setLayout(LayoutManager mgr) {
+ public void setLayout(LayoutManager mgr)
+ {
super.setLayout(mgr);
+ revalidate();
+ repaint();
} // setLayout()
/**
- * setOrientation
- * @param orientation
+ * This method sets the orientation property for JToolBar.
+ *
+ * @param orientation The new orientation for JToolBar.
+ *
+ * @throws IllegalArgumentException If the orientation is not HORIZONTAL or
+ * VERTICAL.
*/
- public void setOrientation(int orientation) {
+ public void setOrientation(int orientation)
+ {
if (orientation != HORIZONTAL && orientation != VERTICAL)
- throw new IllegalArgumentException(orientation + " is not a legal orientation");
+ throw new IllegalArgumentException(orientation
+ + " is not a legal orientation");
if (orientation != this.orientation)
{
int oldOrientation = this.orientation;
this.orientation = orientation;
firePropertyChange(ORIENTATION_CHANGED_PROPERTY, oldOrientation,
this.orientation);
+ revalidate();
+ repaint();
}
} // setOrientation()
/**
- * addSeparator
+ * This method adds a Separator of default size to the JToolBar.
*/
- public void addSeparator() {
- // TODO
+ public void addSeparator()
+ {
+ add(new Separator());
} // addSeparator()
/**
- * addSeparator
- * @param size TODO
+ * This method adds a Separator with the given size to the JToolBar.
+ *
+ * @param size The size of the Separator.
*/
- public void addSeparator(Dimension size) {
- // TODO
+ public void addSeparator(Dimension size)
+ {
+ add(new Separator(size));
} // addSeparator()
/**
- * createActionComponent
- * @param action TODO
- * @returns JButton
+ * This method is used to create JButtons which can be added to the JToolBar
+ * for the given action.
+ *
+ * @param action The action to create a JButton for.
+ *
+ * @return The JButton created from the action.
*/
- protected JButton createActionComponent(Action action) {
- return null; // TODO
+ protected JButton createActionComponent(Action action)
+ {
+ return new JButton(action);
} // createActionComponent()
/**
- * createActionChangeListener
- * @param button TODO
- * @returns PropertyChangeListener
+ * This method creates a pre-configured PropertyChangeListener which updates
+ * the control as changes are made to the Action. However, this is no
+ * longer the recommended way of adding Actions to Containers. As such,
+ * this method returns null.
+ *
+ * @param button The JButton to configure a PropertyChangeListener for.
+ *
+ * @return null.
*/
- protected PropertyChangeListener createActionChangeListener(JButton button) {
- return null; // TODO
+ protected PropertyChangeListener createActionChangeListener(JButton button)
+ {
+ // XXX: As specified, this returns null. But seems kind of strange, usually deprecated methods don't just return null, verify!
+ return null;
} // createActionChangeListener()
/**
- * addImpl
- * @param component TODO
- * @param constraints TODO
- * @param index TODO
- */
- /*
- protected void addImpl(Component component, Object constraints, int index) {
- // TODO
- } // addImpl()
+ * This method overrides Container's addImpl method. If a JButton is added,
+ * it is disabled.
+ *
+ * @param component The Component to add.
+ * @param constraints The Constraints placed on the component.
+ * @param index The index to place the Component at.
*/
+ protected void addImpl(Component component, Object constraints, int index)
+ {
+ // XXX: Sun says disable button but test cases show otherwise.
+ super.addImpl(component, constraints, index);
+ } // addImpl()
+
/**
- * paramString
- * @returns String
+ * This method returns a String description of the JToolBar.
+ *
+ * @return A String description of the JToolBar.
*/
- protected String paramString() {
- return null; // TODO
+ protected String paramString()
+ {
+ return "JToolBar";
} // paramString()
/**
* getAccessibleContext
+ *
* @return AccessibleContext
*/
public AccessibleContext getAccessibleContext()
diff --git a/libjava/javax/swing/JTree.java b/libjava/javax/swing/JTree.java
index 765a0d996e6..4e81bff8422 100644
--- a/libjava/javax/swing/JTree.java
+++ b/libjava/javax/swing/JTree.java
@@ -50,6 +50,7 @@ import javax.swing.event.TreeSelectionListener;
import javax.swing.event.TreeWillExpandListener;
import javax.swing.plaf.TreeUI;
import javax.swing.tree.ExpandVetoException;
+import javax.swing.tree.TreeCellRenderer;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
@@ -60,6 +61,10 @@ public class JTree extends JComponent
{
private static final long serialVersionUID = 7559816092864483649L;
+ protected TreeCellRenderer cellRenderer;
+ protected boolean editable;
+ protected boolean rootVisible;
+ protected boolean showsRootHandles;
protected TreeModel treeModel;
/**
@@ -142,31 +147,59 @@ public class JTree extends JComponent
return null;
}
+ /**
+ * Return the UI associated with this <code>JTree</code> object.
+ *
+ * @return the associated <code>TreeUI</code> object
+ */
public TreeUI getUI()
{
return (TreeUI) ui;
}
+ /**
+ * Sets the UI associated with this <code>JTree</code> object.
+ *
+ * @param ui the <code>TreeUI</code> to associate
+ */
public void setUI(TreeUI ui)
{
super.setUI(ui);
}
+ /**
+ * This method resets the UI used to the Look and Feel defaults..
+ */
public void updateUI()
{
setUI((TreeUI) UIManager.getUI(this));
}
+ /**
+ * This method returns the String ID of the UI class of Separator.
+ *
+ * @return The UI class' String ID.
+ */
public String getUIClassID()
{
return "TreeUI";
}
+ /**
+ * Gets the AccessibleContext associated with this <code>JToggleButton</code>.
+ *
+ * @return the associated context
+ */
public AccessibleContext getAccessibleContext()
{
return null;
}
+ /**
+ * Returns the preferred viewport size..
+ *
+ * @return the preferred size
+ */
public Dimension getPreferredScrollableViewportSize()
{
return null;
@@ -354,4 +387,87 @@ public class JTree extends JComponent
for (int index = 0; index < listeners.length; ++index)
listeners[index].treeWillExpand(event);
}
+
+ /**
+ * Returns the model of this <code>JTree</code> object.
+ *
+ * @return the associated <code>TreeModel</code>
+ */
+ public TreeModel getModel()
+ {
+ return treeModel;
+ }
+
+ /**
+ * Sets the model to use in <code>JTree</object>.
+ *
+ * @param model the <code>TreeModel</code> to use
+ */
+ public void setModel(TreeModel model)
+ {
+ treeModel = model;
+ }
+
+ /**
+ * Checks if this <code>JTree</code> object is editable.
+ *
+ * @return <code>true</code> if this tree object is editable,
+ * <code>false</code> otherwise
+ */
+ public boolean isEditable()
+ {
+ return editable;
+ }
+
+ /**
+ * Sets the <code>editable</code> property.
+ *
+ * @param flag <code>true</code> to make this tree object editable,
+ * <code>false</code> otherwise
+ */
+ public void setEditable(boolean flag)
+ {
+ if (editable == flag)
+ return;
+
+ boolean oldValue = editable;
+ editable = flag;
+ firePropertyChange("editable", oldValue, editable);
+ }
+
+ /**
+ * Checks if the root element is visible.
+ *
+ * @return <code>true</code> if the root element is visible,
+ * <code>false</code> otherwise
+ */
+ public boolean isRootVisbile()
+ {
+ return rootVisible;
+ }
+
+ public void setRootVisible(boolean flag)
+ {
+ rootVisible = flag;
+ }
+
+ public boolean getShowsRootHandles()
+ {
+ return showsRootHandles;
+ }
+
+ public void setShowRootHandles(boolean flag)
+ {
+ showsRootHandles = flag;
+ }
+
+ public TreeCellRenderer getCellRenderer()
+ {
+ return cellRenderer;
+ }
+
+ public void setCellRenderer(TreeCellRenderer newRenderer)
+ {
+ cellRenderer = newRenderer;
+ }
}
diff --git a/libjava/javax/swing/JViewport.java b/libjava/javax/swing/JViewport.java
index bbb4d5cb683..47ccdf7097f 100644
--- a/libjava/javax/swing/JViewport.java
+++ b/libjava/javax/swing/JViewport.java
@@ -327,11 +327,19 @@ public class JViewport extends JComponent
listenerList.remove(ChangeListener.class, listener);
}
+ /**
+ * This method returns the String ID of the UI class of Separator.
+ *
+ * @return The UI class' String ID.
+ */
public String getUIClassID()
{
return "ViewportUI";
}
+ /**
+ * This method resets the UI used to the Look and Feel defaults..
+ */
public void updateUI()
{
setUI((ViewportUI) UIManager.getUI(this));
diff --git a/libjava/javax/swing/JWindow.java b/libjava/javax/swing/JWindow.java
index 81acd1138a7..c035a1bd9cc 100644
--- a/libjava/javax/swing/JWindow.java
+++ b/libjava/javax/swing/JWindow.java
@@ -82,7 +82,7 @@ public class JWindow extends Window implements Accessible, RootPaneContainer
public JWindow()
{
- super(null); // FIXME: This throws an exception.
+ super(SwingUtilities.getOwnerFrame());
}
// huuu ?
diff --git a/libjava/javax/swing/LookAndFeel.java b/libjava/javax/swing/LookAndFeel.java
index aa6b8a2ec6f..dc28065c373 100644
--- a/libjava/javax/swing/LookAndFeel.java
+++ b/libjava/javax/swing/LookAndFeel.java
@@ -37,6 +37,8 @@ exception statement from your version. */
package javax.swing;
+import java.awt.Component;
+import java.awt.Toolkit;
import javax.swing.text.JTextComponent;
@@ -60,6 +62,20 @@ public abstract class LookAndFeel
public abstract String getName();
/**
+ * Returns true when the Look and Feel supports window decorations,
+ * false others. This method returns always false and needs to be overwritten
+ * when the derived Look and Feel supports this.
+ *
+ * @return false
+ *
+ * @since 1.4
+ */
+ public boolean getSupportsWindowDecorations()
+ {
+ return false;
+ }
+
+ /**
* UIManager.setLookAndFeel calls this method before the first call
* (and typically the only call) to getDefaults().
*/
@@ -141,6 +157,18 @@ public abstract class LookAndFeel
}
/**
+ * Invoked when the user attempts an invalid operation. The default implement
+ * just beeps. Subclasses that wish to change this need to override this
+ * method.
+ *
+ * @param component the component the error occured in
+ */
+ public void provideErrorFeedback(Component component)
+ {
+ Toolkit.getDefaultToolkit().beep();
+ }
+
+ /**
* Returns a string that displays and identifies this object's properties.
*
* @return the string "LookAndFeel"
diff --git a/libjava/javax/swing/MenuSelectionManager.java b/libjava/javax/swing/MenuSelectionManager.java
index 33988003b47..a61ca4ec51a 100644
--- a/libjava/javax/swing/MenuSelectionManager.java
+++ b/libjava/javax/swing/MenuSelectionManager.java
@@ -38,6 +38,7 @@ exception statement from your version. */
package javax.swing;
import java.awt.Component;
+import java.awt.Dimension;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
@@ -124,24 +125,56 @@ public class MenuSelectionManager
for (int i = selectedPath.size() - 1; i >= 0; i--)
((MenuElement) selectedPath.get(i)).menuSelectionChanged(false);
- // notify all listeners that the selected path was changed
- fireStateChanged();
-
// clear selected path
selectedPath.clear();
+
+ // notify all listeners that the selected path was changed
+ fireStateChanged();
}
/**
- * DOCUMENT ME!
+ * This method returns menu element on the selected path that contains
+ * given source point. If no menu element on the selected path contains this
+ * point, then null is returned.
*
- * @param source DOCUMENT ME!
- * @param sourcePoint DOCUMENT ME!
+ * @param source Component relative to which sourcePoint is given
+ * @param sourcePoint point for which we want to find menu element that contains it
*
- * @return DOCUMENT ME!
+ * @return Returns menu element that contains given source point and belongs
+ * to the currently selected path. Null is return if no such menu element found.
*/
public Component componentForPoint(Component source, Point sourcePoint)
{
- throw new UnsupportedOperationException("not implemented");
+ // Convert sourcePoint to screen coordinates.
+ Point sourcePointOnScreen = sourcePoint;
+ SwingUtilities.convertPointToScreen(sourcePointOnScreen, source);
+
+ Point compPointOnScreen;
+ Component resultComp = null;
+
+ // For each menu element on the selected path, express its location
+ // in terms of screen coordinates and check if there is any
+ // menu element on the selected path that contains given source point.
+ for (int i = 0; i < selectedPath.size(); i++)
+ {
+ Component comp = ((Component) selectedPath.get(i));
+ Dimension size = comp.getSize();
+
+ // convert location of this menu item to screen coordinates
+ compPointOnScreen = comp.getLocationOnScreen();
+
+ if (compPointOnScreen.x <= sourcePointOnScreen.x
+ && sourcePointOnScreen.x < compPointOnScreen.x + size.width
+ && compPointOnScreen.y <= sourcePointOnScreen.y
+ && sourcePointOnScreen.y < compPointOnScreen.y + size.height)
+ {
+ Point p = sourcePointOnScreen;
+ SwingUtilities.convertPointFromScreen(p, comp);
+ resultComp = SwingUtilities.getDeepestComponentAt(comp, p.x, p.y);
+ break;
+ }
+ }
+ return resultComp;
}
/**
@@ -176,7 +209,7 @@ public class MenuSelectionManager
* @param c Component for which to check
* @return True if specified component is part of current menu
*/
- boolean isComponentPartOfCurrentMenu(Component c)
+ public boolean isComponentPartOfCurrentMenu(Component c)
{
MenuElement[] subElements;
for (int i = 0; i < selectedPath.size(); i++)
@@ -209,19 +242,42 @@ public class MenuSelectionManager
*/
public void processMouseEvent(MouseEvent event)
{
- Component c = ((Component) event.getSource());
+ Component source = ((Component) event.getSource());
+
+ // In the case of drag event, event.getSource() returns component
+ // where drag event originated. However menu element processing this
+ // event should be the one over which mouse is currently located,
+ // which is not necessary the source of the drag event.
+ Component mouseOverMenuComp;
+
+ // find over which menu element the mouse is currently located
+ if (event.getID() == MouseEvent.MOUSE_DRAGGED
+ || event.getID() == MouseEvent.MOUSE_RELEASED)
+ mouseOverMenuComp = componentForPoint(source, event.getPoint());
+ else
+ mouseOverMenuComp = source;
+
+ // Process this event only if mouse is located over some menu element
+ if (mouseOverMenuComp != null && (mouseOverMenuComp instanceof MenuElement))
+ {
+ MenuElement[] path = getPath(mouseOverMenuComp);
+ ((MenuElement) mouseOverMenuComp).processMouseEvent(event, path,
+ manager);
- MenuElement[] path = getPath(c);
- ((MenuElement) c).processMouseEvent(event, path, manager);
+ // FIXME: Java specification says that mouse events should be
+ // forwarded to subcomponents. The code below does it, but
+ // menu's work fine without it. This code is commented for now.
- // forward events to subcomponents
- MenuElement[] subComponents = ((MenuElement) c).getSubElements();
+ /*
+ MenuElement[] subComponents = ((MenuElement) mouseOverMenuComp)
+ .getSubElements();
for (int i = 0; i < subComponents.length; i++)
{
- if (subComponents[i] instanceof JMenuItem)
subComponents[i].processMouseEvent(event, path, manager);
}
+ */
+ }
}
/**
@@ -237,13 +293,13 @@ public class MenuSelectionManager
return;
}
- fireStateChanged();
-
int i;
int minSize = path.length; // size of the smaller path.
if (path.length > selectedPath.size())
{
+ minSize = selectedPath.size();
+
// if new selected path contains more elements then current
// selection then first add all elements at
// the indexes > selectedPath.size
@@ -252,8 +308,6 @@ public class MenuSelectionManager
selectedPath.add(path[i]);
path[i].menuSelectionChanged(true);
}
-
- minSize = selectedPath.size();
}
else if (path.length < selectedPath.size())
@@ -274,19 +328,21 @@ public class MenuSelectionManager
// same location and adjust selection until
// same menu elements will be encountered at the
// same index in both current and new selection path.
- MenuElement oldSelectedPath;
+ MenuElement oldSelectedItem;
for (i = minSize - 1; i >= 0; i--)
{
- oldSelectedPath = (MenuElement) selectedPath.get(i);
+ oldSelectedItem = (MenuElement) selectedPath.get(i);
- if (path[i].equals(oldSelectedPath))
+ if (path[i].equals(oldSelectedItem))
break;
- oldSelectedPath.menuSelectionChanged(false);
+ oldSelectedItem.menuSelectionChanged(false);
path[i].menuSelectionChanged(true);
selectedPath.setElementAt(path[i], i);
}
+
+ fireStateChanged();
}
/**
@@ -298,7 +354,18 @@ public class MenuSelectionManager
*/
private MenuElement[] getPath(Component c)
{
+ // FIXME: There is the same method in BasicMenuItemUI. However I
+ // cannot use it here instead of this method, since I cannot assume that
+ // all the menu elements on the selected path are JMenuItem or JMenu.
+ // For now I've just duplicated it here. Please
+ // fix me or delete me if another better approach will be found, and
+ // this method will not be necessary.
ArrayList path = new ArrayList();
+
+ // if given component is JMenu, we also need to include
+ // it's popup menu in the path
+ if (c instanceof JMenu)
+ path.add(((JMenu) c).getPopupMenu());
while (c instanceof MenuElement)
{
path.add(0, (MenuElement) c);
diff --git a/libjava/javax/swing/RepaintManager.java b/libjava/javax/swing/RepaintManager.java
index 30b6e19769e..05b974f914c 100644
--- a/libjava/javax/swing/RepaintManager.java
+++ b/libjava/javax/swing/RepaintManager.java
@@ -252,16 +252,22 @@ public class RepaintManager
*/
public synchronized void addInvalidComponent(JComponent component)
{
- while ((component.getParent() != null)
- && (component.getParent() instanceof JComponent)
- && (component.isValidateRoot()))
- component = (JComponent) component.getParent();
+ Component ancestor = component.getParent();
+
+ while (ancestor != null
+ && (! (ancestor instanceof JComponent)
+ || ! ((JComponent) ancestor).isValidateRoot() ))
+ ancestor = ancestor.getParent();
+
+ if (ancestor != null
+ && ancestor instanceof JComponent
+ && ((JComponent) ancestor).isValidateRoot())
+ component = (JComponent) ancestor;
if (invalidComponents.contains(component))
return;
invalidComponents.add(component);
- component.invalidate();
if (! repaintWorker.isLive())
{
diff --git a/libjava/javax/swing/ScrollPaneLayout.java b/libjava/javax/swing/ScrollPaneLayout.java
index a249c277340..5e51e1895eb 100644
--- a/libjava/javax/swing/ScrollPaneLayout.java
+++ b/libjava/javax/swing/ScrollPaneLayout.java
@@ -44,6 +44,7 @@ import java.awt.Dimension;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.awt.Rectangle;
+import java.awt.Point;
import java.io.Serializable;
import javax.swing.border.Border;
@@ -197,9 +198,27 @@ public class ScrollPaneLayout
return null;
}
+ private static void maybeSetPreferredSize(JComponent src, Dimension dim)
+ {
+ Dimension tmp = null;
+ if (src != null)
+ tmp = src.getPreferredSize();
+ if (tmp != null)
+ dim.setSize(tmp);
+ }
+
+ private static void maybeSetMinimumSize(JComponent src, Dimension dim)
+ {
+ Dimension tmp = null;
+ if (src != null)
+ tmp = src.getMinimumSize();
+ if (tmp != null)
+ dim.setSize(tmp);
+ }
+
public Dimension preferredLayoutSize(Container parent)
{
- if (parent instanceof JScrollPane)
+ if (parent != null && parent instanceof JScrollPane)
{
JScrollPane sc = (JScrollPane) parent;
synchronized (sc.getTreeLock ())
@@ -217,36 +236,38 @@ public class ScrollPaneLayout
Insets viewportInsets = null;
if (viewportBorder != null)
+ {
viewportInsets = viewportBorder.getBorderInsets(parent);
+ if (viewportInsets != null)
+ viewportInsetsSize.setSize(viewportInsets.left + viewportInsets.right,
+ viewportInsets.top + viewportInsets.bottom);
+ }
if (insets != null)
insetsSize.setSize(insets.left + insets.right,
insets.top + insets.bottom);
if (viewport != null)
- viewportSize.setSize(viewport.getPreferredSize());
-
- if (colHead != null)
- columnHeaderSize.setSize(colHead.getPreferredSize());
-
- if (rowHead != null)
- rowHeaderSize.setSize(rowHead.getPreferredSize());
-
- if (vsb != null)
- verticalScrollBarSize.setSize(vsb.getPreferredSize());
-
- if (hsb != null)
- horizontalScrollBarSize.setSize(hsb.getPreferredSize());
-
- /*
- System.err.println("widths: [vp=" + viewportSize.width +
- ", h=" + columnHeaderSize.width +
- ", sc=" + horizontalScrollBarSize.width + "]");
-
- System.err.println("heights: [vp=" + viewportSize.height +
- ", h=" + rowHeaderSize.height +
- ", sc=" + verticalScrollBarSize.height + "]");
- */
+ {
+ Component view = null;
+ Scrollable scr = null;
+ Dimension pref = null;
+
+ view = viewport.getView();
+ if (view != null && view instanceof Scrollable)
+ scr = (Scrollable) view;
+ if (scr != null)
+ pref = scr.getPreferredScrollableViewportSize();
+ if (pref == null)
+ pref = viewport.getPreferredSize();
+ if (pref != null)
+ viewportSize.setSize(pref);
+ }
+
+ maybeSetPreferredSize(colHead, columnHeaderSize);
+ maybeSetPreferredSize(rowHead, rowHeaderSize);
+ maybeSetPreferredSize(vsb, verticalScrollBarSize);
+ maybeSetPreferredSize(hsb, horizontalScrollBarSize);
return new Dimension(insetsSize.width
+ viewportSize.width
@@ -286,28 +307,26 @@ public class ScrollPaneLayout
Insets viewportInsets = null;
if (viewportBorder != null)
+ {
viewportInsets = viewportBorder.getBorderInsets(parent);
+ if (viewportInsets != null)
+ viewportInsetsSize.setSize(viewportInsets.left + viewportInsets.right,
+ viewportInsets.top + viewportInsets.bottom);
+ }
if (insets != null)
insetsSize.setSize(insets.left + insets.right,
insets.top + insets.bottom);
- if (viewport != null)
- viewportSize.setSize(viewport.getMinimumSize());
-
- if (colHead != null)
- columnHeaderSize.setSize(colHead.getMinimumSize());
-
- if (rowHead != null)
- rowHeaderSize.setSize(rowHead.getMinimumSize());
+ maybeSetMinimumSize(viewport, viewportSize);
+ maybeSetMinimumSize(colHead, columnHeaderSize);
+ maybeSetMinimumSize(rowHead, rowHeaderSize);
- if (vsb != null
- && vsbPolicy != VERTICAL_SCROLLBAR_NEVER)
- verticalScrollBarSize.setSize(vsb.getMinimumSize());
+ if (vsbPolicy != VERTICAL_SCROLLBAR_NEVER)
+ maybeSetMinimumSize(vsb, verticalScrollBarSize);
- if (hsb != null
- && hsbPolicy != HORIZONTAL_SCROLLBAR_NEVER)
- horizontalScrollBarSize.setSize(hsb.getMinimumSize());
+ if (hsbPolicy != HORIZONTAL_SCROLLBAR_NEVER)
+ maybeSetMinimumSize(hsb, horizontalScrollBarSize);
return new Dimension(insetsSize.width
+ viewportSize.width
@@ -355,14 +374,15 @@ public class ScrollPaneLayout
JScrollPane sc = (JScrollPane) parent;
synchronized (sc.getTreeLock ())
{
- Rectangle scrollPaneBounds = sc.getBounds();
JViewport viewport = sc.getViewport();
- Dimension viewportSize = viewport.getSize();
- Dimension viewSize = viewport.getView().getSize();
+ Dimension viewSize = viewport.getViewSize();
+ Point viewPos = viewport.getViewPosition();
int x1 = 0, x2 = 0, x3 = 0, x4 = 0;
int y1 = 0, y2 = 0, y3 = 0, y4 = 0;
+ Rectangle scrollPaneBounds = SwingUtilities.calculateInnerArea(sc, null);
+
x1 = scrollPaneBounds.x;
y1 = scrollPaneBounds.y;
x4 = scrollPaneBounds.x + scrollPaneBounds.width;
@@ -381,26 +401,25 @@ public class ScrollPaneLayout
int vsbPolicy = sc.getVerticalScrollBarPolicy();
int hsbPolicy = sc.getHorizontalScrollBarPolicy();
+ x3 = x4 - vsb.getPreferredSize().width;
+ y3 = y4 - hsb.getPreferredSize().height;
+
boolean showVsb =
(vsb != null)
&& ((vsbPolicy == VERTICAL_SCROLLBAR_ALWAYS)
|| (vsbPolicy == VERTICAL_SCROLLBAR_AS_NEEDED
- && viewSize.height > viewportSize.height));
+ && viewSize.height > (y3 - y2)));
boolean showHsb =
(hsb != null)
&& ((hsbPolicy == HORIZONTAL_SCROLLBAR_ALWAYS)
|| (hsbPolicy == HORIZONTAL_SCROLLBAR_AS_NEEDED
- && viewSize.width > viewportSize.width));
+ && viewSize.width > (x3 - x2)));
- if (showVsb)
- x3 = x4 - vsb.getPreferredSize().width;
- else
+ if (!showVsb)
x3 = x4;
- if (showHsb)
- y3 = y4 - hsb.getPreferredSize().height;
- else
+ if (!showHsb)
y3 = y4;
// now set the layout
@@ -415,10 +434,20 @@ public class ScrollPaneLayout
rowHead.setBounds(new Rectangle(x1, y2, x2-x1, y3-y2));
if (showVsb)
+ {
+ vsb.setVisible(true);
vsb.setBounds(new Rectangle(x3, y2, x4-x3, y3-y2));
+ }
+ else if (vsb != null)
+ vsb.setVisible(false);
if (showHsb)
+ {
+ hsb.setVisible(true);
hsb.setBounds(new Rectangle(x2, y3, x3-x2, y4-y3));
+ }
+ else if (hsb != null)
+ hsb.setVisible(false);
if (upperLeft != null)
upperLeft.setBounds(new Rectangle(x1, y1, x2-x1, y2-y1));
diff --git a/libjava/javax/swing/SwingUtilities.java b/libjava/javax/swing/SwingUtilities.java
index 7162edbd75f..62b156161f3 100644
--- a/libjava/javax/swing/SwingUtilities.java
+++ b/libjava/javax/swing/SwingUtilities.java
@@ -65,8 +65,11 @@ import java.lang.reflect.InvocationTargetException;
*/
public class SwingUtilities implements SwingConstants
{
-
- private static Frame ownerFrame;
+ /**
+ * This frame should be used as parent for JWindow or JDialog
+ * that doesn't an owner
+ */
+ private static OwnerFrame ownerFrame;
/**
* Calculates the portion of the base rectangle which is inside the
@@ -197,8 +200,6 @@ public class SwingUtilities implements SwingConstants
*
* @see #getAncestorOfClass
* @see #windowForComponent
- * @see
- *
*/
public static Container getAncestorOfClass(Class c, Component comp)
{
@@ -711,11 +712,14 @@ public class SwingUtilities implements SwingConstants
{
case TOP:
textR.y = 0;
- iconR.y = textR.height + textIconGap;
+ iconR.y = (horizontalTextPosition == CENTER
+ ? textR.height + textIconGap : 0);
break;
case BOTTOM:
iconR.y = 0;
- textR.y = iconR.height + textIconGap;
+ textR.y = (horizontalTextPosition == CENTER
+ ? iconR.height + textIconGap
+ : iconR.height - textR.height);
break;
case CENTER:
int centerLine = Math.max(textR.height, iconR.height) / 2;
@@ -838,15 +842,15 @@ public class SwingUtilities implements SwingConstants
}
/**
- * This method returns the common Frame owner used in JDialogs
- * when no owner is provided.
+ * This method returns the common Frame owner used in JDialogs or
+ * JWindow when no owner is provided.
*
* @return The common Frame
*/
static Frame getOwnerFrame()
{
if (ownerFrame == null)
- ownerFrame = new Frame();
+ ownerFrame = new OwnerFrame();
return ownerFrame;
}
@@ -888,4 +892,23 @@ public class SwingUtilities implements SwingConstants
return ((event.getModifiers() & InputEvent.BUTTON3_DOWN_MASK)
== InputEvent.BUTTON3_DOWN_MASK);
}
+
+ /**
+ * This frame should be used when constructing a Window/JDialog without
+ * a parent. In this case, we are forced to use this frame as a window's
+ * parent, because we simply cannot pass null instead of parent to Window
+ * constructor, since doing it will result in NullPointerException.
+ */
+ private static class OwnerFrame extends Frame
+ {
+ public void setVisible(boolean b)
+ {
+ // Do nothing here.
+ }
+
+ public boolean isShowing()
+ {
+ return true;
+ }
+ }
}
diff --git a/libjava/javax/swing/Timer.java b/libjava/javax/swing/Timer.java
index 57a412a1910..2b2920a1827 100644
--- a/libjava/javax/swing/Timer.java
+++ b/libjava/javax/swing/Timer.java
@@ -114,6 +114,7 @@ public class Timer implements Serializable
while (running)
{
sleep(delay);
+ queueEvent();
if (logTimers)
System.out.println("javax.swing.Timer -> clocktick");
diff --git a/libjava/javax/swing/ToolTipManager.java b/libjava/javax/swing/ToolTipManager.java
index 762d5d338b6..3a855f708c4 100644
--- a/libjava/javax/swing/ToolTipManager.java
+++ b/libjava/javax/swing/ToolTipManager.java
@@ -43,135 +43,86 @@ import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
+
/**
* ToolTipManager
+ *
* @author Andrew Selkirk
- * @version 1.0
*/
-public class ToolTipManager extends MouseAdapter implements MouseMotionListener {
-
- //-------------------------------------------------------------
- // Classes ----------------------------------------------------
- //-------------------------------------------------------------
-
+public class ToolTipManager extends MouseAdapter
+ implements MouseMotionListener
+{
/**
* stillInsideTimerAction
*/
- protected class stillInsideTimerAction implements ActionListener {
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
+ protected class stillInsideTimerAction
+ implements ActionListener
+ {
/**
* Constructor stillInsideTimerAction
- * @param manager TODO
*/
- protected stillInsideTimerAction(ToolTipManager manager) {
+ protected stillInsideTimerAction()
+ {
// TODO
- } // stillInsideTimerAction()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* actionPerformed
* @param event TODO
*/
- public void actionPerformed(ActionEvent event) {
+ public void actionPerformed(ActionEvent event)
+ {
// TODO
- } // actionPerformed()
-
-
- } // stillInsideTimerAction
+ }
+ }
/**
* outsideTimerAction
*/
- protected class outsideTimerAction implements ActionListener {
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
+ protected class outsideTimerAction
+ implements ActionListener
+ {
/**
* Constructor outsideTimerAction
- * @param manager TODO
*/
- protected outsideTimerAction(ToolTipManager manager) {
+ protected outsideTimerAction()
+ {
// TODO
- } // outsideTimerAction()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* actionPerformed
* @param value0 TODO
*/
- public void actionPerformed(ActionEvent event) {
+ public void actionPerformed(ActionEvent event)
+ {
// TODO
- } // actionPerformed()
-
-
- } // outsideTimerAction
+ }
+ }
/**
* insideTimerAction
*/
- protected class insideTimerAction implements ActionListener {
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
+ protected class insideTimerAction
+ implements ActionListener
+ {
/**
* Constructor insideTimerAction
- * @param manager TODO
*/
- protected insideTimerAction(ToolTipManager manager) {
+ protected insideTimerAction()
+ {
// TODO
- } // insideTimerAction()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* actionPerformed
* @param event TODO
*/
- public void actionPerformed(ActionEvent event) {
+ public void actionPerformed(ActionEvent event)
+ {
// TODO
- } // actionPerformed()
-
-
- } // insideTimerAction
-
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
+ }
+ }
/**
* enterTimer
@@ -228,166 +179,173 @@ public class ToolTipManager extends MouseAdapter implements MouseMotionListener
*/
protected boolean heavyWeightPopupEnabled;
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
/**
* Constructor ToolTipManager
*/
- ToolTipManager() {
+ ToolTipManager()
+ {
// TODO
- } // ToolTipManager()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* sharedInstance
- * @returns ToolTipManager
+ * @return ToolTipManager
*/
- public static ToolTipManager sharedInstance() {
+ public static ToolTipManager sharedInstance()
+ {
return null; // TODO
- } // sharedInstance()
+ }
/**
* setEnabled
* @param enabled TODO
*/
- public void setEnabled(boolean enabled) {
+ public void setEnabled(boolean enabled)
+ {
// TODO
- } // setEnabled()
+ }
/**
* isEnabled
- * @returns boolean
+ * @return boolean
*/
- public boolean isEnabled() {
+ public boolean isEnabled()
+ {
return false; // TODO
- } // isEnabled()
+ }
/**
* isLightWeightPopupEnabled
- * @returns boolean
+ * @return boolean
*/
- public boolean isLightWeightPopupEnabled() {
+ public boolean isLightWeightPopupEnabled()
+ {
return false; // TODO
- } // isLightWeightPopupEnabled()
+ }
/**
* setLightWeightPopupEnabled
* @param enabled TODO
*/
- public void setLightWeightPopupEnabled(boolean enabled) {
+ public void setLightWeightPopupEnabled(boolean enabled)
+ {
// TODO
- } // setLightWeightPopupEnabled()
+ }
/**
* getInitialDelay
- * @returns int
+ * @return int
*/
- public int getInitialDelay() {
+ public int getInitialDelay()
+ {
return 0; // TODO
- } // getInitialDelay()
+ }
/**
* setInitialDelay
* @param delay TODO
*/
- public void setInitialDelay(int delay) {
+ public void setInitialDelay(int delay)
+ {
// TODO
- } // setInitialDelay()
+ }
/**
* getDismissDelay
- * @returns int
+ * @return int
*/
- public int getDismissDelay() {
+ public int getDismissDelay()
+ {
return 0; // TODO
- } // getDismissDelay()
+ }
/**
* setDismissDelay
* @param delay TODO
*/
- public void setDismissDelay(int delay) {
+ public void setDismissDelay(int delay)
+ {
// TODO
- } // setDismissDelay()
+ }
/**
* getReshowDelay
- * @returns int
+ * @return int
*/
- public int getReshowDelay() {
+ public int getReshowDelay()
+ {
return 0; // TODO
- } // getReshowDelay()
+ }
/**
* setReshowDelay
* @param delay TODO
*/
- public void setReshowDelay(int delay) {
+ public void setReshowDelay(int delay)
+ {
// TODO
- } // setReshowDelay()
+ }
/**
* registerComponent
* @param component TODO
*/
- public void registerComponent(JComponent component) {
+ public void registerComponent(JComponent component)
+ {
// TODO
- } // registerComponent()
+ }
/**
* unregisterComponent
* @param component TODO
*/
- public void unregisterComponent(JComponent component) {
+ public void unregisterComponent(JComponent component)
+ {
// TODO
- } // unregisterComponent()
+ }
/**
* mouseEntered
* @param event TODO
*/
- public void mouseEntered(MouseEvent event) {
+ public void mouseEntered(MouseEvent event)
+ {
// TODO
- } // mouseEntered()
+ }
/**
* mouseExited
* @param event TODO
*/
- public void mouseExited(MouseEvent event) {
+ public void mouseExited(MouseEvent event)
+ {
// TODO
- } // mouseExited()
+ }
/**
* mousePressed
* @param event TODO
*/
- public void mousePressed(MouseEvent event) {
+ public void mousePressed(MouseEvent event)
+ {
// TODO
- } // mousePressed()
+ }
/**
* mouseDragged
* @param event TODO
*/
- public void mouseDragged(MouseEvent event) {
+ public void mouseDragged(MouseEvent event)
+ {
// TODO
- } // mouseDragged()
+ }
/**
* mouseMoved
* @param event TODO
*/
- public void mouseMoved(MouseEvent event) {
+ public void mouseMoved(MouseEvent event)
+ {
// TODO
- } // mouseMoved()
-
-
-} // ToolTipManager
+ }
+}
diff --git a/libjava/javax/swing/UIDefaults.java b/libjava/javax/swing/UIDefaults.java
index 8141399f549..f72c2748cb0 100644
--- a/libjava/javax/swing/UIDefaults.java
+++ b/libjava/javax/swing/UIDefaults.java
@@ -43,10 +43,9 @@ import java.awt.Font;
import java.awt.Insets;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
import java.lang.reflect.Method;
-import java.util.HashSet;
import java.util.Hashtable;
-import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;
import java.util.Locale;
@@ -66,15 +65,14 @@ import javax.swing.plaf.ComponentUI;
*/
public class UIDefaults extends Hashtable
{
+ private LinkedList bundles;
+ private Locale defaultLocale;
+ private PropertyChangeSupport propertyChangeSupport;
- LinkedList bundles;
- Set listeners;
- Locale defaultLocale;
-
- interface ActiveValue
+ public interface ActiveValue
{
Object createValue(UIDefaults table);
- } // interface ActiveValue
+ }
public static class LazyInputMap implements LazyValue
{
@@ -93,12 +91,12 @@ public class UIDefaults extends Hashtable
}
return im;
}
- } // class LazyInputMap
+ }
- interface LazyValue
+ public interface LazyValue
{
Object createValue(UIDefaults table);
- } // interface LazyValue
+ }
public static class ProxyLazyValue implements LazyValue
{
@@ -209,28 +207,24 @@ public class UIDefaults extends Hashtable
{
return inner.createValue (table);
}
- } // class ProxyLazyValue
+ }
private static final long serialVersionUID = 7341222528856548117L;
public UIDefaults()
{
bundles = new LinkedList ();
- listeners = new HashSet ();
defaultLocale = Locale.getDefault ();
+ propertyChangeSupport = new PropertyChangeSupport(this);
}
public UIDefaults(Object[] entries)
{
- bundles = new LinkedList ();
- listeners = new HashSet ();
- defaultLocale = Locale.getDefault ();
+ this();
for (int i = 0; (2*i+1) < entries.length; ++i)
- {
put (entries[2*i], entries[2*i+1]);
}
- }
public Object get(Object key)
{
@@ -472,7 +466,6 @@ public class UIDefaults extends Hashtable
getUIError ("InvocationTargetException ("+ ite.getTargetException()
+") calling createUI(...) on " + cls.toString ());
return null;
-
}
catch (Exception e)
{
@@ -481,43 +474,38 @@ public class UIDefaults extends Hashtable
}
}
- void addPropertyChangeListener(PropertyChangeListener listener)
+ public void addPropertyChangeListener(PropertyChangeListener listener)
{
- listeners.add (listener);
+ propertyChangeSupport.addPropertyChangeListener(listener);
}
void removePropertyChangeListener(PropertyChangeListener listener)
{
- listeners.remove (listener);
+ propertyChangeSupport.removePropertyChangeListener(listener);
}
public PropertyChangeListener[] getPropertyChangeListeners()
{
- return (PropertyChangeListener[]) listeners.toArray ();
+ return propertyChangeSupport.getPropertyChangeListeners();
}
- protected void firePropertyChange(String property, Object o, Object n)
+ protected void firePropertyChange(String property,
+ Object oldValue, Object newValue)
{
- Iterator i = listeners.iterator ();
- PropertyChangeEvent pce = new PropertyChangeEvent (this, property, o, n);
- while (i.hasNext ())
- {
- PropertyChangeListener pcl = (PropertyChangeListener) i.next ();
- pcl.propertyChange (pce);
- }
+ propertyChangeSupport.firePropertyChange(property, oldValue, newValue);
}
- void addResourceBundle(String name)
+ public void addResourceBundle(String name)
{
bundles.addFirst (name);
}
- void removeResourceBundle(String name)
+ public void removeResourceBundle(String name)
{
bundles.remove (name);
}
- void setDefaultLocale(Locale loc)
+ public void setDefaultLocale(Locale loc)
{
defaultLocale = loc;
}
@@ -526,4 +514,4 @@ public class UIDefaults extends Hashtable
{
return defaultLocale;
}
-} // class UIDefaults
+}
diff --git a/libjava/javax/swing/UIManager.java b/libjava/javax/swing/UIManager.java
index 4ad95308647..eca96f91078 100644
--- a/libjava/javax/swing/UIManager.java
+++ b/libjava/javax/swing/UIManager.java
@@ -1,5 +1,5 @@
/* UIManager.java --
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -87,18 +87,31 @@ public class UIManager implements Serializable
// Do nothing here.
}
+ /**
+ * Add a <code>PropertyChangeListener</code> to the listener list.
+ *
+ * @param listener the listener to add
+ */
public static void addPropertyChangeListener (PropertyChangeListener listener)
{
// FIXME
}
+ /**
+ * Remove a <code>PropertyChangeListener</code> from the listener list.
+ *
+ * @param listener the listener to remove
+ */
public static void removePropertyChangeListener (PropertyChangeListener listener)
- // Remove a PropertyChangeListener from the listener list.
{
// FIXME
}
/**
+ * Returns an array of all added <code>PropertyChangeListener</code> objects.
+ *
+ * @return an array of listeners
+ *
* @since 1.4
*/
public static PropertyChangeListener[] getPropertyChangeListeners ()
@@ -107,9 +120,11 @@ public class UIManager implements Serializable
throw new Error ("Not implemented");
}
+ /**
+ * Add a LookAndFeel to the list of auxiliary look and feels.
+ */
public static void addAuxiliaryLookAndFeel (LookAndFeel l)
{
- // Add a LookAndFeel to the list of auxiliary look and feels.
if (aux_installed == null)
{
aux_installed = new LookAndFeel[1];
@@ -194,21 +209,25 @@ public class UIManager implements Serializable
*
* @param key an Object that specifies the font. Typically,
* this is a String such as
- * <code>&quot;TitledBorder.font&quot;</code>.
+ * <code>TitledBorder.font</code>.
*/
public static Font getFont(Object key)
{
return (Font) getLookAndFeel().getDefaults().get(key);
}
+ /**
+ * Returns an Icon from the defaults table.
+ */
public static Icon getIcon(Object key)
- // Returns an Icon from the defaults table.
{
return (Icon) getLookAndFeel().getDefaults().get(key);
}
+ /**
+ * Returns an Insets object from the defaults table.
+ */
public static Insets getInsets(Object key)
- // Returns an Insets object from the defaults table.
{
return (Insets) getLookAndFeel().getDefaults().getInsets(key);
}
@@ -240,49 +259,71 @@ public class UIManager implements Serializable
return getLookAndFeel().getDefaults();
}
+ /**
+ * Returns a string from the defaults table.
+ */
public static String getString(Object key)
- // Returns a string from the defaults table.
{
return (String) getLookAndFeel().getDefaults().get(key);
}
+ /**
+ * Returns the name of the LookAndFeel class that implements the
+ * native systems look and feel if there is one, otherwise the name
+ * of the default cross platform LookAndFeel class.
+ */
public static String getSystemLookAndFeelClassName()
- // Returns the name of the LookAndFeel class that implements the native systems look and feel if there is one, otherwise the name of the default cross platform LookAndFeel class.
{
return getCrossPlatformLookAndFeelClassName();
}
+ /**
+ * Returns the L&amp;F object that renders the target component.
+ */
public static ComponentUI getUI(JComponent target)
- // Returns the L&F object that renders the target component.
{
- ComponentUI ui = getDefaults().getUI(target);
- //System.out.println("GET-UI-> " + ui + ", for " + target);
- return ui;
+ return getDefaults().getUI(target);
}
+ /**
+ * Creates a new look and feel and adds it to the current array.
+ */
public static void installLookAndFeel(String name, String className)
- // Creates a new look and feel and adds it to the current array.
{
}
+ /**
+ * Adds the specified look and feel to the current array and then calls
+ * setInstalledLookAndFeels(javax.swing.UIManager.LookAndFeelInfo[]).
+ */
public static void installLookAndFeel(LookAndFeelInfo info)
- // Adds the specified look and feel to the current array and then calls setInstalledLookAndFeels(javax.swing.UIManager.LookAndFeelInfo[]).
{
}
+ /**
+ * Stores an object in the defaults table.
+ */
public static Object put(Object key, Object value)
- // Stores an object in the defaults table.
{
return getLookAndFeel().getDefaults().put(key,value);
}
+ /**
+ * Replaces the current array of installed LookAndFeelInfos.
+ */
public static void setInstalledLookAndFeels(UIManager.LookAndFeelInfo[] infos)
- // Replaces the current array of installed LookAndFeelInfos.
{
}
+ /**
+ * Set the current default look.
+ */
public static void setLookAndFeel(LookAndFeel newLookAndFeel)
+ throws UnsupportedLookAndFeelException
{
+ if (! newLookAndFeel.isSupportedLookAndFeel())
+ throw new UnsupportedLookAndFeelException(newLookAndFeel.getName());
+
if (look_and_feel != null)
look_and_feel.uninitialize();
@@ -294,11 +335,13 @@ public class UIManager implements Serializable
//repaint();
}
+ /**
+ * Set the current default look and feel using a class name.
+ */
public static void setLookAndFeel (String className)
throws ClassNotFoundException, InstantiationException, IllegalAccessException,
UnsupportedLookAndFeelException
{
- // Set the current default look and feel using a class name.
Class c = Class.forName(className);
LookAndFeel a = (LookAndFeel) c.newInstance(); // throws class-cast-exception
setLookAndFeel(a);
diff --git a/libjava/javax/swing/ViewportLayout.java b/libjava/javax/swing/ViewportLayout.java
index d419c497956..4738baccd1a 100644
--- a/libjava/javax/swing/ViewportLayout.java
+++ b/libjava/javax/swing/ViewportLayout.java
@@ -67,13 +67,6 @@ public class ViewportLayout implements LayoutManager, Serializable
{
JViewport vp = (JViewport)parent;
Component view = vp.getView();
- if (view instanceof Scrollable)
- {
- Scrollable sc = (Scrollable) view;
- Dimension d = sc.getPreferredScrollableViewportSize();
- return d;
- }
- else
return view.getPreferredSize();
}
public Dimension minimumLayoutSize(Container parent)
@@ -126,7 +119,7 @@ public class ViewportLayout implements LayoutManager, Serializable
// the viewport require inputs in view space.
Rectangle portBounds = port.getViewRect();
- Dimension viewSize = port.getViewSize();
+ Dimension viewPref = view.getPreferredSize();
Dimension viewMinimum = view.getMinimumSize();
Point portLowerRight = new Point(portBounds.x + portBounds.width,
portBounds.y + portBounds.height);
@@ -135,12 +128,12 @@ public class ViewportLayout implements LayoutManager, Serializable
if (portBounds.height >= viewMinimum.height)
{
portBounds.y = 0;
- viewSize.height = portBounds.height;
+ viewPref.height = portBounds.height;
}
else
{
- viewSize.height = viewMinimum.height;
- int overextension = portLowerRight.y - viewSize.height;
+ viewPref.height = viewMinimum.height;
+ int overextension = portLowerRight.y - viewPref.height;
if (overextension > 0)
portBounds.y -= overextension;
}
@@ -149,17 +142,17 @@ public class ViewportLayout implements LayoutManager, Serializable
if (portBounds.width >= viewMinimum.width)
{
portBounds.x = 0;
- viewSize.width = portBounds.width;
+ viewPref.width = portBounds.width;
}
else
{
- viewSize.width = viewMinimum.width;
- int overextension = portLowerRight.x - viewSize.width;
+ viewPref.width = viewMinimum.width;
+ int overextension = portLowerRight.x - viewPref.width;
if (overextension > 0)
portBounds.x -= overextension;
}
port.setViewPosition(portBounds.getLocation());
- port.setViewSize(viewSize);
+ port.setViewSize(viewPref);
}
}
diff --git a/libjava/javax/swing/border/TitledBorder.java b/libjava/javax/swing/border/TitledBorder.java
index 8b9fe2a73be..b257ce1c7ad 100644
--- a/libjava/javax/swing/border/TitledBorder.java
+++ b/libjava/javax/swing/border/TitledBorder.java
@@ -252,7 +252,7 @@ public class TitledBorder
* The border underneath the title. If this value is
* <code>null</code>, the border will be retrieved from the {@link
* javax.swing.UIManager}&#x2019;s defaults table using the key
- * <code>&quot;TitledBorder.border&quot;</code>.
+ * <code>TitledBorder.border</code>.
*/
protected Border border;
@@ -279,7 +279,7 @@ public class TitledBorder
* The font for displaying the title text. If this value is
* <code>null</code>, the font will be retrieved from the {@link
* javax.swing.UIManager}&#x2019;s defaults table using the key
- * <code>&quot;TitledBorder.font&quot;</code>.
+ * <code>TitledBorder.font</code>.
*/
protected Font titleFont;
@@ -288,7 +288,7 @@ public class TitledBorder
* The color for displaying the title text. If this value is
* <code>null</code>, the color will be retrieved from the {@link
* javax.swing.UIManager}&#x2019;s defaults table using the key
- * <code>&quot;TitledBorder.titleColor&quot;</code>.
+ * <code>TitledBorder.titleColor</code>.
*/
protected Color titleColor;
@@ -717,11 +717,11 @@ public class TitledBorder
* Retrieves the border underneath the title. If no border has been
* set, or if it has been set to<code>null</code>, the current
* {@link javax.swing.LookAndFeel} will be asked for a border
- * using the key <code>&quot;TitledBorder.border&quot;</code>.
+ * using the key <code>TitledBorder.border</code>.
*
* @return a border, or <code>null</code> if the current LookAndFeel
* does not provide a border for the key
- * <code>&quot;TitledBorder.border&quot;</code>.
+ * <code>TitledBorder.border</code>.
*
* @see javax.swing.UIManager#getBorder(Object)
*/
@@ -766,11 +766,11 @@ public class TitledBorder
* Retrieves the font for displaying the title text. If no font has
* been set, or if it has been set to<code>null</code>, the current
* {@link javax.swing.LookAndFeel} will be asked for a font
- * using the key <code>&quot;TitledBorder.font&quot;</code>.
+ * using the key <code>TitledBorder.font</code>.
*
* @return a font, or <code>null</code> if the current LookAndFeel
* does not provide a font for the key
- * <code>&quot;TitledBorder.font&quot;</code>.
+ * <code>TitledBorder.font</code>.
*
* @see javax.swing.UIManager#getFont(Object)
*/
@@ -787,11 +787,11 @@ public class TitledBorder
* Retrieves the color for displaying the title text. If no color has
* been set, or if it has been set to<code>null</code>, the current
* {@link javax.swing.LookAndFeel} will be asked for a color
- * using the key <code>&quot;TitledBorder.titleColor&quot;</code>.
+ * using the key <code>TitledBorder.titleColor</code>.
*
* @return a color, or <code>null</code> if the current LookAndFeel
* does not provide a color for the key
- * <code>&quot;TitledBorder.titleColor&quot;</code>.
+ * <code>TitledBorder.titleColor</code>.
*
* @see javax.swing.UIManager#getColor(Object)
*/
@@ -1088,7 +1088,7 @@ public class TitledBorder
/**
- * The border that constitues the &quot;interior&quot; border
+ * The border that constitues the interior border
* underneath the title text.
*/
Border border;
diff --git a/libjava/javax/swing/plaf/basic/BasicArrowButton.java b/libjava/javax/swing/plaf/basic/BasicArrowButton.java
index cb2c99baf58..b1245015703 100644
--- a/libjava/javax/swing/plaf/basic/BasicArrowButton.java
+++ b/libjava/javax/swing/plaf/basic/BasicArrowButton.java
@@ -40,9 +40,11 @@ package javax.swing.plaf.basic;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
+import java.awt.Insets;
import java.awt.Graphics;
import java.awt.Polygon;
import java.awt.Rectangle;
+import javax.swing.border.Border;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.SwingConstants;
@@ -170,6 +172,47 @@ public class BasicArrowButton extends JButton implements SwingConstants
/** The top and left edges of the button. */
private transient Color highlight = Color.BLACK;
+ /** The border around the ArrowButton. */
+ private transient Border tmpBorder = new Border()
+ {
+ public Insets getBorderInsets(Component c)
+ {
+ return new Insets(0, 0, 0, 0);
+ }
+
+ public boolean isBorderOpaque()
+ {
+ return false;
+ }
+
+ public void paintBorder(Component c, Graphics g, int x, int y, int w, int h)
+ {
+ Rectangle bounds = getBounds();
+
+ Color saved = g.getColor();
+ g.setColor(highlight);
+
+ g.drawLine(bounds.x, bounds.y, bounds.x, bounds.y + bounds.height);
+ g.drawLine(bounds.x, bounds.y, bounds.x + bounds.width, bounds.y);
+
+ g.setColor(shadow);
+
+ g.drawLine(bounds.x + 1, bounds.y + bounds.height - 1,
+ bounds.x + bounds.width - 1, bounds.y + bounds.height - 1);
+ g.drawLine(bounds.x + bounds.width - 1, bounds.y + 1,
+ bounds.x + bounds.width - 1, bounds.y + bounds.height - 1);
+
+ g.setColor(darkShadow);
+
+ g.drawLine(bounds.x, bounds.y + bounds.height, bounds.x + bounds.width,
+ bounds.y + bounds.height);
+ g.drawLine(bounds.x + bounds.width, bounds.y, bounds.x + bounds.width,
+ bounds.y + bounds.height);
+
+ g.setColor(saved);
+ }
+ };
+
/**
* Creates a new BasicArrowButton object.
*
@@ -179,6 +222,7 @@ public class BasicArrowButton extends JButton implements SwingConstants
{
super();
setDirection(direction);
+ setBorder(tmpBorder);
}
/**
@@ -234,29 +278,6 @@ public class BasicArrowButton extends JButton implements SwingConstants
public void paint(Graphics g)
{
super.paint(g);
- Rectangle bounds = getBounds();
-
- Color saved = g.getColor();
- g.setColor(highlight);
-
- g.drawLine(bounds.x, bounds.y, bounds.x, bounds.y + bounds.height);
- g.drawLine(bounds.x, bounds.y, bounds.x + bounds.width, bounds.y);
-
- g.setColor(shadow);
-
- g.drawLine(bounds.x + 1, bounds.y + bounds.height - 1,
- bounds.x + bounds.width - 1, bounds.y + bounds.height - 1);
- g.drawLine(bounds.x + bounds.width - 1, bounds.y + 1,
- bounds.x + bounds.width - 1, bounds.y + bounds.height - 1);
-
- g.setColor(darkShadow);
-
- g.drawLine(bounds.x, bounds.y + bounds.height, bounds.x + bounds.width,
- bounds.y + bounds.height);
- g.drawLine(bounds.x + bounds.width, bounds.y, bounds.x + bounds.width,
- bounds.y + bounds.height);
-
- g.setColor(saved);
}
/**
diff --git a/libjava/javax/swing/plaf/basic/BasicButtonUI.java b/libjava/javax/swing/plaf/basic/BasicButtonUI.java
index b766d387db9..9134fb2e2e1 100644
--- a/libjava/javax/swing/plaf/basic/BasicButtonUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicButtonUI.java
@@ -61,7 +61,7 @@ public class BasicButtonUI extends ButtonUI
{
/** A constant used to pad out elements in the button's layout and
preferred size calculations. */
- int defaultTextIconGap = 3;
+ int defaultTextIconGap = 4;
/** A constant added to the defaultTextIconGap to adjust the text
within this particular button. */
@@ -92,6 +92,7 @@ public class BasicButtonUI extends ButtonUI
b.setBackground(defaults.getColor("Button.background"));
b.setMargin(defaults.getInsets("Button.margin"));
b.setBorder(defaults.getBorder("Button.border"));
+ b.setIconTextGap(defaults.getInt("Button.textIconGap"));
b.setOpaque(true);
}
@@ -100,6 +101,7 @@ public class BasicButtonUI extends ButtonUI
b.setForeground(null);
b.setBackground(null);
b.setBorder(null);
+ b.setIconTextGap(defaultTextIconGap);
b.setMargin(null);
}
@@ -234,19 +236,19 @@ public class BasicButtonUI extends ButtonUI
b.getVerticalTextPosition(),
b.getHorizontalTextPosition(),
vr, ir, tr,
- defaultTextIconGap
+ b.getIconTextGap()
+ defaultTextShiftOffset);
if ((b.getModel().isArmed() && b.getModel().isPressed())
|| b.isSelected())
- paintButtonPressed(g, br, c);
+ paintButtonPressed(g, b);
else
paintButtonNormal(g, br, c);
paintIcon(g, c, ir);
if (text != null)
- paintText(g, c, tr, b.getText());
- paintFocus(g, c, vr, tr, ir);
+ paintText(g, b, tr, text);
+ paintFocus(g, b, vr, tr, ir);
}
/**
@@ -256,7 +258,7 @@ public class BasicButtonUI extends ButtonUI
* "focusPainted" property is <code>true</code>.
*
* @param g Graphics context to paint with
- * @param c Component to paint the focus of
+ * @param b Button to paint the focus of
* @param vr Visible rectangle, the area in which to paint
* @param tr Text rectangle, contained in visible rectangle
* @param ir Icon rectangle, contained in visible rectangle
@@ -264,10 +266,9 @@ public class BasicButtonUI extends ButtonUI
* @see AbstractButton.isFocusPainted()
* @see JComponent.hasFocus()
*/
- protected void paintFocus(Graphics g, JComponent c, Rectangle vr,
+ protected void paintFocus(Graphics g, AbstractButton b, Rectangle vr,
Rectangle tr, Rectangle ir)
{
- AbstractButton b = (AbstractButton) c;
if (b.hasFocus() && b.isFocusPainted())
{
Graphics2D g2 = (Graphics2D) g;
@@ -313,13 +314,14 @@ public class BasicButtonUI extends ButtonUI
* pressedBackgroundColor}.
*
* @param g The graphics context to paint with
- * @param area The area in which to paint
- * @param b The component to paint the state of
+ * @param b The button to paint the state of
*/
- protected void paintButtonPressed(Graphics g, Rectangle area, JComponent b)
+ protected void paintButtonPressed(Graphics g, AbstractButton b)
{
- if (((AbstractButton)b).isContentAreaFilled())
+ if (b.isContentAreaFilled())
{
+ Rectangle area = new Rectangle();
+ SwingUtilities.calculateInnerArea(b, area);
g.setColor(b.getBackground().darker());
g.fillRect(area.x, area.y, area.width, area.height);
}
@@ -334,7 +336,7 @@ public class BasicButtonUI extends ButtonUI
* @param area The area in which to paint
* @param b The component to paint the state of
*/
- protected void paintButtonNormal(Graphics g, Rectangle area, JComponent b)
+ private void paintButtonNormal(Graphics g, Rectangle area, JComponent b)
{
if (((AbstractButton)b).isContentAreaFilled() && b.isOpaque())
{
@@ -355,20 +357,37 @@ public class BasicButtonUI extends ButtonUI
protected void paintText(Graphics g, JComponent c, Rectangle textRect,
String text)
{
- Font f = c.getFont();
+ paintText(g, (AbstractButton) c, textRect, text);
+ }
+
+ /**
+ * Paints the "text" property of an {@link AbstractButton}, using the
+ * {@link textColor} color.
+ *
+ * @param g The graphics context to paint with
+ * @param b The button to paint the state of
+ * @param textRect The area in which to paint the text
+ * @param text The text to paint
+ *
+ * @since 1.4
+ */
+ protected void paintText(Graphics g, AbstractButton b, Rectangle textRect,
+ String text)
+ {
+ Font f = b.getFont();
g.setFont(f);
FontMetrics fm = g.getFontMetrics(f);
- if (c.isEnabled())
+ if (b.isEnabled())
{
- g.setColor(c.getForeground());
+ g.setColor(b.getForeground());
g.drawString(text, textRect.x, textRect.y + fm.getAscent());
}
else
{
- g.setColor(c.getBackground().brighter());
+ g.setColor(b.getBackground().brighter());
g.drawString(text, textRect.x, textRect.y + fm.getAscent());
- g.setColor(c.getBackground().darker());
+ g.setColor(b.getBackground().darker());
g.drawString(text, textRect.x + 1, textRect.y + fm.getAscent() + 1);
}
}
diff --git a/libjava/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java b/libjava/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java
index 397a2f100c2..c7d88d1a6ae 100644
--- a/libjava/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java
@@ -53,11 +53,12 @@ import javax.swing.plaf.ComponentUI;
public class BasicCheckBoxMenuItemUI extends BasicMenuItemUI
{
/**
- * DOCUMENT ME!
+ * Factory method to create a BasicCheckBoxMenuItemUI for the given {@link
+ * JComponent}, which should be a JCheckBoxMenuItem
*
- * @param c DOCUMENT ME!
+ * @param c The {@link JComponent} a UI is being created for.
*
- * @return $returnType$ DOCUMENT ME!
+ * @return A BasicCheckBoxMenuItemUI for the {@link JComponent}.
*/
public static ComponentUI createUI(final JComponent c)
{
@@ -71,11 +72,12 @@ public class BasicCheckBoxMenuItemUI extends BasicMenuItemUI
*/
protected String getPropertyPrefix()
{
- return null; // TODO
+ return null;
}
/**
- * DOCUMENT ME!
+ * This method installs the defaults that are defined in the Basic look and
+ * feel for this JRadioButtonMenuItem
*/
protected void installDefaults()
{
@@ -93,7 +95,8 @@ public class BasicCheckBoxMenuItemUI extends BasicMenuItemUI
* @param path DOCUMENT ME!
* @param manager DOCUMENT ME!
*/
- void processMouseEvent(JMenuItem item, MouseEvent e, MenuElement[] path,
+ public void processMouseEvent(JMenuItem item, MouseEvent e,
+ MenuElement[] path,
MenuSelectionManager manager)
{
}
diff --git a/libjava/javax/swing/plaf/basic/BasicInternalFrameUI.java b/libjava/javax/swing/plaf/basic/BasicInternalFrameUI.java
index 5c598b763ce..d394b951b7e 100644
--- a/libjava/javax/swing/plaf/basic/BasicInternalFrameUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicInternalFrameUI.java
@@ -37,6 +37,7 @@ exception statement from your version. */
package javax.swing.plaf.basic;
+import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
@@ -179,6 +180,9 @@ public class BasicInternalFrameUI extends InternalFrameUI
/** The direction that the resize is occuring in. */
private transient int direction = -1;
+ /** Cache rectangle that can be reused. */
+ private transient Rectangle cacheRect = new Rectangle();
+
/**
* This method is called when the mouse is clicked.
*
@@ -204,6 +208,9 @@ public class BasicInternalFrameUI extends InternalFrameUI
return;
DesktopManager dm = getDesktopManager();
Rectangle b = frame.getBounds();
+ Dimension min = frame.getMinimumSize();
+ if (min == null)
+ min = new Dimension(0, 0);
Insets insets = frame.getInsets();
int x = e.getX();
int y = e.getY();
@@ -212,31 +219,43 @@ public class BasicInternalFrameUI extends InternalFrameUI
switch (direction)
{
case NORTH:
- dm.resizeFrame(frame, b.x, b.y + y, b.width, b.height - y);
+ cacheRect.setBounds(b.x,
+ Math.min(b.y + y, b.y + b.height
+ - min.height), b.width, b.height
+ - y);
break;
case NORTH_EAST:
- dm.resizeFrame(frame, b.x, b.y + y, x, b.height - y);
+ cacheRect.setBounds(b.x,
+ Math.min(b.y + y, b.y + b.height
+ - min.height), x, b.height - y);
break;
case EAST:
- dm.resizeFrame(frame, b.x, b.y, x, b.height);
+ cacheRect.setBounds(b.x, b.y, x, b.height);
break;
case SOUTH_EAST:
- dm.resizeFrame(frame, b.x, b.y, x, y);
+ cacheRect.setBounds(b.x, b.y, x, y);
break;
case SOUTH:
- dm.resizeFrame(frame, b.x, b.y, b.width, y);
+ cacheRect.setBounds(b.x, b.y, b.width, y);
break;
case SOUTH_WEST:
- dm.resizeFrame(frame, b.x + x, b.y, b.width - x, y);
+ cacheRect.setBounds(Math.min(b.x + x, b.x + b.width - min.width),
+ b.y, b.width - x, y);
break;
case WEST:
- dm.resizeFrame(frame, b.x + x, b.y, b.width - x, b.height);
+ cacheRect.setBounds(Math.min(b.x + x, b.x + b.width - min.width),
+ b.y, b.width - x, b.height);
break;
case NORTH_WEST:
- dm.resizeFrame(frame, b.x + x, b.y + y, b.width - x, b.height
- - y);
+ cacheRect.setBounds(Math.min(b.x + x, b.x + b.width - min.width),
+ Math.min(b.y + y, b.y + b.height
+ - min.height), b.width - x,
+ b.height - y);
break;
}
+ dm.resizeFrame(frame, cacheRect.x, cacheRect.y,
+ Math.max(min.width, cacheRect.width),
+ Math.max(min.height, cacheRect.height));
}
else if (e.getSource() == titlePane)
{
@@ -498,7 +517,7 @@ public class BasicInternalFrameUI extends InternalFrameUI
*/
public Dimension minimumLayoutSize(Container c)
{
- return preferredLayoutSize(c);
+ return getSize(c, true);
}
/**
@@ -522,9 +541,24 @@ public class BasicInternalFrameUI extends InternalFrameUI
*/
public Dimension preferredLayoutSize(Container c)
{
+ return getSize(c, false);
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param c DOCUMENT ME!
+ * @param min DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ private Dimension getSize(Container c, boolean min)
+ {
Insets insets = frame.getInsets();
Dimension contentDims = frame.getContentPane().getPreferredSize();
+ if (min)
+ contentDims.width = contentDims.height = 0;
int nWidth = 0;
int nHeight = 0;
int sWidth = 0;
@@ -578,8 +612,8 @@ public class BasicInternalFrameUI extends InternalFrameUI
int width = Math.max(sWidth, nWidth);
width = Math.max(width, contentDims.width + eWidth + wWidth);
- int height = Math.max(contentDims.height, eHeight);
- height = Math.max(height, wHeight);
+ int height = Math.max(eHeight, wHeight);
+ height = Math.max(height, contentDims.height);
height += nHeight + sHeight;
width += insets.left + insets.right;
@@ -606,6 +640,18 @@ public class BasicInternalFrameUI extends InternalFrameUI
*/
protected class GlassPaneDispatcher implements MouseInputListener
{
+ /** The MouseEvent target. */
+ private transient Component mouseEventTarget;
+
+ /** The component pressed. */
+ private transient Component pressedComponent;
+
+ /** The last component entered. */
+ private transient Component lastComponentEntered;
+
+ /** The number of presses. */
+ private transient int pressCount;
+
/**
* This method is called when the mouse enters the glass pane.
*
@@ -613,7 +659,7 @@ public class BasicInternalFrameUI extends InternalFrameUI
*/
public void mouseEntered(MouseEvent e)
{
- dispatchFor(e);
+ handleEvent(e);
}
/**
@@ -623,7 +669,7 @@ public class BasicInternalFrameUI extends InternalFrameUI
*/
public void mouseClicked(MouseEvent e)
{
- dispatchFor(e);
+ handleEvent(e);
}
/**
@@ -633,7 +679,7 @@ public class BasicInternalFrameUI extends InternalFrameUI
*/
public void mouseDragged(MouseEvent e)
{
- dispatchFor(e);
+ handleEvent(e);
}
/**
@@ -643,7 +689,7 @@ public class BasicInternalFrameUI extends InternalFrameUI
*/
public void mouseExited(MouseEvent e)
{
- dispatchFor(e);
+ handleEvent(e);
}
/**
@@ -653,7 +699,7 @@ public class BasicInternalFrameUI extends InternalFrameUI
*/
public void mouseMoved(MouseEvent e)
{
- dispatchFor(e);
+ handleEvent(e);
}
/**
@@ -664,7 +710,7 @@ public class BasicInternalFrameUI extends InternalFrameUI
public void mousePressed(MouseEvent e)
{
activateFrame(frame);
- dispatchFor(e);
+ handleEvent(e);
}
/**
@@ -674,27 +720,149 @@ public class BasicInternalFrameUI extends InternalFrameUI
*/
public void mouseReleased(MouseEvent e)
{
- dispatchFor(e);
+ handleEvent(e);
}
/**
- * This helper method redispatches the MouseEvent to the proper sub
- * component.
+ * This method acquires a candidate component to dispatch the MouseEvent
+ * to.
*
- * @param e The MouseEvent.
+ * @param me The MouseEvent to acquire a component for.
*/
- private void dispatchFor(MouseEvent e)
+ private void acquireComponentForMouseEvent(MouseEvent me)
{
- Component candidate = SwingUtilities.getDeepestComponentAt(frame.getRootPane()
- .getContentPane(),
- e.getX(),
- e.getY());
- if (candidate == null || candidate == frame.getRootPane().getGlassPane())
+ int x = me.getX();
+ int y = me.getY();
+
+ // Find the candidate which should receive this event.
+ Component parent = frame.getContentPane();
+ if (parent == null)
return;
- MouseEvent newevt = SwingUtilities.convertMouseEvent(frame.getRootPane()
+ Component candidate = null;
+ Point p = me.getPoint();
+ while (candidate == null && parent != null)
+ {
+ candidate = SwingUtilities.getDeepestComponentAt(parent, p.x, p.y);
+ if (candidate == null)
+ {
+ p = SwingUtilities.convertPoint(parent, p.x, p.y,
+ parent.getParent());
+ parent = parent.getParent();
+ }
+ }
+
+ // If the only candidate we found was the native container itself,
+ // don't dispatch any event at all. We only care about the lightweight
+ // children here.
+ if (candidate == frame.getContentPane())
+ candidate = null;
+
+ // If our candidate is new, inform the old target we're leaving.
+ if (lastComponentEntered != null && lastComponentEntered.isShowing()
+ && lastComponentEntered != candidate)
+ {
+ Point tp = SwingUtilities.convertPoint(frame.getContentPane(), x, y,
+ lastComponentEntered);
+ MouseEvent exited = new MouseEvent(lastComponentEntered,
+ MouseEvent.MOUSE_EXITED,
+ me.getWhen(), me.getModifiers(),
+ tp.x, tp.y, me.getClickCount(),
+ me.isPopupTrigger(),
+ me.getButton());
+ lastComponentEntered.dispatchEvent(exited);
+ lastComponentEntered = null;
+ }
+
+ // If we have a candidate, maybe enter it.
+ if (candidate != null)
+ {
+ mouseEventTarget = candidate;
+ if (candidate.isLightweight() && candidate.isShowing()
+ && candidate != frame.getContentPane()
+ && candidate != lastComponentEntered)
+ {
+ lastComponentEntered = mouseEventTarget;
+ Point cp = SwingUtilities.convertPoint(frame.getContentPane(),
+ x, y, lastComponentEntered);
+ MouseEvent entered = new MouseEvent(lastComponentEntered,
+ MouseEvent.MOUSE_ENTERED,
+ me.getWhen(),
+ me.getModifiers(), cp.x,
+ cp.y, me.getClickCount(),
+ me.isPopupTrigger(),
+ me.getButton());
+ lastComponentEntered.dispatchEvent(entered);
+ }
+ }
+
+ if (me.getID() == MouseEvent.MOUSE_RELEASED
+ || me.getID() == MouseEvent.MOUSE_PRESSED && pressCount > 0
+ || me.getID() == MouseEvent.MOUSE_DRAGGED)
+ // If any of the following events occur while a button is held down,
+ // they should be dispatched to the same component to which the
+ // original MOUSE_PRESSED event was dispatched:
+ // - MOUSE_RELEASED
+ // - MOUSE_PRESSED: another button pressed while the first is held down
+ // - MOUSE_DRAGGED
+ mouseEventTarget = pressedComponent;
+ else if (me.getID() == MouseEvent.MOUSE_CLICKED)
+ {
+ // Don't dispatch CLICKED events whose target is not the same as the
+ // target for the original PRESSED event.
+ if (candidate != pressedComponent)
+ mouseEventTarget = null;
+ else if (pressCount == 0)
+ pressedComponent = null;
+ }
+ }
+
+ /**
+ * This is a helper method that dispatches the GlassPane MouseEvents to
+ * the proper component.
+ *
+ * @param e The AWTEvent to be dispatched. Usually an instance of
+ * MouseEvent.
+ */
+ private void handleEvent(AWTEvent e)
+ {
+ if (e instanceof MouseEvent)
+ {
+ MouseEvent me = SwingUtilities.convertMouseEvent(frame.getRootPane()
.getGlassPane(),
- e, candidate);
- candidate.dispatchEvent(newevt);
+ (MouseEvent) e,
+ frame.getRootPane()
+ .getGlassPane());
+
+ acquireComponentForMouseEvent(me);
+
+ // Avoid dispatching ENTERED and EXITED events twice.
+ if (mouseEventTarget != null && mouseEventTarget.isShowing()
+ && e.getID() != MouseEvent.MOUSE_ENTERED
+ && e.getID() != MouseEvent.MOUSE_EXITED)
+ {
+ MouseEvent newEvt = SwingUtilities.convertMouseEvent(frame
+ .getContentPane(),
+ me,
+ mouseEventTarget);
+ mouseEventTarget.dispatchEvent(newEvt);
+
+ switch (e.getID())
+ {
+ case MouseEvent.MOUSE_PRESSED:
+ if (pressCount++ == 0)
+ pressedComponent = mouseEventTarget;
+ break;
+ case MouseEvent.MOUSE_RELEASED:
+ // Clear our memory of the original PRESSED event, only if
+ // we're not expecting a CLICKED event after this. If
+ // there is a CLICKED event after this, it will do clean up.
+ if (--pressCount == 0
+ && mouseEventTarget != pressedComponent)
+ pressedComponent = null;
+ break;
+ }
+ }
+ }
}
}
@@ -1108,7 +1276,7 @@ public class BasicInternalFrameUI extends InternalFrameUI
*/
public Dimension getMinimumSize(JComponent x)
{
- return getPreferredSize(x);
+ return internalFrameLayout.minimumLayoutSize(x);
}
/**
diff --git a/libjava/javax/swing/plaf/basic/BasicLabelUI.java b/libjava/javax/swing/plaf/basic/BasicLabelUI.java
index 782c2f0e5fa..46d012ddd58 100644
--- a/libjava/javax/swing/plaf/basic/BasicLabelUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicLabelUI.java
@@ -59,7 +59,7 @@ import javax.swing.plaf.LabelUI;
/**
* This is the Basic Look and Feel class for the JLabel. One BasicLabelUI
- * object is used to paint all JLabels that utilize the Basic L&F.
+ * object is used to paint all JLabels that utilize the Basic Look and Feel.
*/
public class BasicLabelUI extends LabelUI implements PropertyChangeListener
{
@@ -81,7 +81,7 @@ public class BasicLabelUI extends LabelUI implements PropertyChangeListener
*
* @param c The {@link JComponent} that a UI is being created for.
*
- * @return A label UI for the Basic L&F.
+ * @return A label UI for the Basic Look and Feel.
*/
public static ComponentUI createUI(JComponent c)
{
diff --git a/libjava/javax/swing/plaf/basic/BasicListUI.java b/libjava/javax/swing/plaf/basic/BasicListUI.java
index b356bdf2a9a..bd5c53b04ff 100644
--- a/libjava/javax/swing/plaf/basic/BasicListUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicListUI.java
@@ -121,7 +121,6 @@ public class BasicListUI extends ListUI
*/
public void contentsChanged(ListDataEvent e)
{
- // System.err.println(this + ".contentsChanged(" + e + ")");
BasicListUI.this.damageLayout();
}
@@ -132,7 +131,6 @@ public class BasicListUI extends ListUI
*/
public void intervalAdded(ListDataEvent e)
{
- // System.err.println(this + ".intervalAdded(" + e + ")");
BasicListUI.this.damageLayout();
}
@@ -143,7 +141,6 @@ public class BasicListUI extends ListUI
*/
public void intervalRemoved(ListDataEvent e)
{
- // System.err.println(this + ".intervalRemoved(" + e + ")");
BasicListUI.this.damageLayout();
}
}
@@ -161,7 +158,6 @@ public class BasicListUI extends ListUI
*/
public void valueChanged(ListSelectionEvent e)
{
- // System.err.println(this + ".valueChanged(" + e + ")");
}
}
@@ -189,12 +185,10 @@ public class BasicListUI extends ListUI
*/
public void mousePressed(MouseEvent event)
{
- // System.err.println("got mouse click event " + event);
int row = BasicListUI.this.convertYToRow(event.getY());
if (row == -1)
return;
- // System.err.println("clicked on row " + row);
BasicListUI.this.list.setSelectedIndex(row);
}
@@ -262,7 +256,6 @@ public class BasicListUI extends ListUI
*/
public void propertyChange(PropertyChangeEvent e)
{
- // System.err.println(this + ".propertyChange(" + e + ")");
if (e.getSource() == BasicListUI.this.list)
{
if (e.getOldValue() != null && e.getOldValue() instanceof ListModel)
@@ -357,6 +350,8 @@ public class BasicListUI extends ListUI
*/
public Rectangle getCellBounds(JList l, int index1, int index2)
{
+ maybeUpdateLayoutState();
+
if (l != list || cellWidth == -1)
return null;
@@ -366,6 +361,7 @@ public class BasicListUI extends ListUI
getRowHeight(lo));
Rectangle hibounds = new Rectangle(0, convertRowToY(hi), cellWidth,
getRowHeight(hi));
+
return lobounds.union(hibounds);
}
@@ -408,7 +404,6 @@ public class BasicListUI extends ListUI
{
int h = getRowHeight(row);
- // System.err.println("convertYToRow(" + y0 + ") vs. " + h);
if (y0 < h)
return row;
y0 -= h;
@@ -468,7 +463,6 @@ public class BasicListUI extends ListUI
*/
void maybeUpdateLayoutState()
{
- // System.err.println(this + ".maybeUpdateLayoutState()");
if (updateLayoutStateNeeded != 0)
{
updateLayoutState();
@@ -576,7 +570,6 @@ public class BasicListUI extends ListUI
installDefaults();
installListeners();
installKeyboardActions();
- // System.err.println(this + ".installUI()");
maybeUpdateLayoutState();
}
@@ -618,11 +611,9 @@ public class BasicListUI extends ListUI
*/
public Dimension getPreferredSize(JComponent c)
{
- maybeUpdateLayoutState();
if (list.getModel().getSize() == 0)
return new Dimension(0, 0);
- int nrows = Math.min(list.getVisibleRowCount(), list.getModel().getSize());
- Rectangle bounds = getCellBounds(list, 0, nrows - 1);
+ Rectangle bounds = getCellBounds(list, 0, list.getModel().getSize() - 1);
return bounds.getSize();
}
@@ -678,7 +669,7 @@ public class BasicListUI extends ListUI
*/
public void paint(Graphics g, JComponent c)
{
- int nrows = Math.min(list.getVisibleRowCount(), list.getModel().getSize());
+ int nrows = list.getModel().getSize();
if (nrows == 0)
return;
@@ -687,11 +678,13 @@ public class BasicListUI extends ListUI
ListModel model = list.getModel();
ListSelectionModel sel = list.getSelectionModel();
int lead = sel.getLeadSelectionIndex();
+ Rectangle clip = g.getClipBounds();
paintBackground(g, list);
for (int row = 0; row < nrows; ++row)
{
Rectangle bounds = getCellBounds(list, row, row);
+ if (bounds.intersects(clip))
paintCell(g, row, bounds, render, model, sel, lead);
}
}
diff --git a/libjava/javax/swing/plaf/basic/BasicLookAndFeel.java b/libjava/javax/swing/plaf/basic/BasicLookAndFeel.java
index 0da43dd9a39..324fa01ff08 100644
--- a/libjava/javax/swing/plaf/basic/BasicLookAndFeel.java
+++ b/libjava/javax/swing/plaf/basic/BasicLookAndFeel.java
@@ -1,5 +1,5 @@
/* BasicLookAndFeel.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -228,7 +228,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
{
Object[] uiDefaults;
- // The JDK's default L&F happens to use these three purple shades
+ // The default Look and Feel happens to use these three purple shades
// extensively.
Color lightPurple = new Color(0xCC, 0xCC, 0xFF);
Color midPurple = new Color(0x99, 0x99, 0xCC);
@@ -250,7 +250,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
"Button.foreground", new ColorUIResource(Color.black),
"Button.highlight", new ColorUIResource(Color.white),
"Button.light", new ColorUIResource(Color.lightGray.brighter()),
- "Button.margin", new InsetsUIResource(2, 2, 2, 2),
+ "Button.margin", new InsetsUIResource(2, 14, 2, 14),
"Button.shadow", new ColorUIResource(Color.gray),
"Button.textIconGap", new Integer(4),
"Button.textShiftOffset", new Integer(0),
@@ -493,7 +493,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
"ENTER", "return",
"SPACE", "return"
},
- "Menutext.selectionBackground", new ColorUIResource(lightPurple),
+ "Menu.selectionBackground", new ColorUIResource(lightPurple),
"Menu.selectionForeground", new ColorUIResource(Color.black),
"MenuBar.background", new ColorUIResource(Color.lightGray),
"MenuBar.border", new BasicBorders.MenuBarBorder(null, null),
@@ -875,12 +875,12 @@ public abstract class BasicLookAndFeel extends LookAndFeel
"ToolBar.background", new ColorUIResource(Color.lightGray),
"ToolBar.border", new BorderUIResource.EtchedBorderUIResource(),
"ToolBar.dockingBackground", new ColorUIResource(Color.lightGray),
- "ToolBar.dockingForeground", new ColorUIResource(Color.red),
+ "ToolBar.dockingForeground", new ColorUIResource(11, 30, 143),
"ToolBar.floatingBackground", new ColorUIResource(Color.lightGray),
- "ToolBar.floatingForeground", new ColorUIResource(Color.darkGray),
+ "ToolBar.floatingForeground", new ColorUIResource(113, 171, 212),
"ToolBar.font", new FontUIResource("Dialog", Font.PLAIN, 12),
"ToolBar.foreground", new ColorUIResource(Color.black),
- "ToolBar.separatorSize", new DimensionUIResource(10, 10),
+ "ToolBar.separatorSize", new DimensionUIResource(20, 20),
"ToolTip.background", new ColorUIResource(Color.white),
"ToolTip.border", new BorderUIResource.LineBorderUIResource(Color.lightGray),
"ToolTip.font", new FontUIResource("SansSerif", Font.PLAIN, 12),
diff --git a/libjava/javax/swing/plaf/basic/BasicMenuBarUI.java b/libjava/javax/swing/plaf/basic/BasicMenuBarUI.java
index cff8a011cbc..f0bd73fa0bf 100644
--- a/libjava/javax/swing/plaf/basic/BasicMenuBarUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicMenuBarUI.java
@@ -101,9 +101,9 @@ public class BasicMenuBarUI extends MenuBarUI
}
/**
- * DOCUMENT ME!
+ * Creates ChangeListener
*
- * @return DOCUMENT ME!
+ * @return The ChangeListener
*/
protected ChangeListener createChangeListener()
{
@@ -112,7 +112,7 @@ public class BasicMenuBarUI extends MenuBarUI
/**
* Creates ContainerListener() to listen for ContainerEvents
- * fired by JMenuBar
+ * fired by JMenuBar.
*
* @return The ContainerListener
*/
@@ -242,7 +242,7 @@ public class BasicMenuBarUI extends MenuBarUI
}
/**
- * DOCUMENT ME!
+ * Unregisters all the listeners that this UI delegate was using.
*/
protected void uninstallListeners()
{
@@ -273,7 +273,8 @@ public class BasicMenuBarUI extends MenuBarUI
}
/**
- * This class handles ContainerEvents fired by JMenuBar
+ * This class handles ContainerEvents fired by JMenuBar. It revalidates
+ * and repaints menu bar whenever menu is added or removed from it.
*/
protected class ContainerHandler implements ContainerListener
{
@@ -284,17 +285,19 @@ public class BasicMenuBarUI extends MenuBarUI
*/
public void componentAdded(ContainerEvent e)
{
- System.out.println("BasicMenuBar...componentAdded.. listener");
+ menuBar.revalidate();
+ menuBar.repaint();
}
/**
- * This method is called whenever menu is removed from the menu bar
+ * This method is called whenever menu is removed from the menu bar.
*
* @param e The ContainerEvent.
*/
public void componentRemoved(ContainerEvent e)
{
- System.out.println("BasicMenuBar...componentRemoved.. listener");
+ menuBar.revalidate();
+ menuBar.repaint();
}
}
@@ -313,6 +316,8 @@ public class BasicMenuBarUI extends MenuBarUI
{
if (e.getPropertyName().equals(JMenuBar.BORDER_PAINTED_CHANGED_PROPERTY))
menuBar.repaint();
+ if (e.getPropertyName().equals(JMenuBar.MARGIN_CHANGED_PROPERTY))
+ menuBar.repaint();
}
}
}
diff --git a/libjava/javax/swing/plaf/basic/BasicMenuItemUI.java b/libjava/javax/swing/plaf/basic/BasicMenuItemUI.java
index e5e407a55bb..e52d3f63e79 100644
--- a/libjava/javax/swing/plaf/basic/BasicMenuItemUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicMenuItemUI.java
@@ -35,7 +35,6 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
-
package javax.swing.plaf.basic;
import java.awt.Color;
@@ -152,7 +151,7 @@ public class BasicMenuItemUI extends MenuItemUI
protected Color selectionBackground;
/**
- * Color of the background that is used when menu item is selected.
+ * Color of the text that is used when menu item is selected.
*/
protected Color selectionForeground;
@@ -276,6 +275,11 @@ public class BasicMenuItemUI extends MenuItemUI
public MenuElement[] getPath()
{
ArrayList path = new ArrayList();
+
+ // Path to menu should also include its popup menu.
+ if (menuItem instanceof JMenu)
+ path.add(((JMenu) menuItem).getPopupMenu());
+
Component c = menuItem;
while (c instanceof MenuElement)
{
@@ -306,19 +310,6 @@ public class BasicMenuItemUI extends MenuItemUI
Icon arrowIcon,
int defaultTextIconGap)
{
- // FIXME: Need to implement.
- return null;
- }
-
- /**
- * Returns preferred size of the given component
- *
- * @param c component for which to return preferred size
- *
- * @return $Dimension$ preferred size for the given component
- */
- public Dimension getPreferredSize(JComponent c)
- {
JMenuItem m = (JMenuItem) c;
Dimension d = BasicGraphicsUtils.getPreferredButtonSize(m,
defaultTextIconGap);
@@ -361,10 +352,17 @@ public class BasicMenuItemUI extends MenuItemUI
}
/**
- * DOCUMENT ME!
+ * Returns preferred size of the given component
+ *
+ * @param c component for which to return preferred size
*
- * @return $returnType$ DOCUMENT ME!
+ * @return $Dimension$ preferred size for the given component
*/
+ public Dimension getPreferredSize(JComponent c)
+ {
+ return getPreferredMenuItemSize(c, checkIcon, arrowIcon, defaultTextIconGap);
+ }
+
protected String getPropertyPrefix()
{
return null;
@@ -416,6 +414,7 @@ public class BasicMenuItemUI extends MenuItemUI
protected void installListeners()
{
menuItem.addMouseListener(mouseInputListener);
+ menuItem.addMouseMotionListener(mouseInputListener);
menuItem.addMenuDragMouseListener(menuDragMouseListener);
menuItem.addMenuKeyListener(menuKeyListener);
menuItem.addPropertyChangeListener(propertyChangeListener);
@@ -433,6 +432,7 @@ public class BasicMenuItemUI extends MenuItemUI
super.installUI(c);
menuItem = (JMenuItem) c;
installDefaults();
+ installComponents(menuItem);
installListeners();
}
@@ -516,7 +516,7 @@ public class BasicMenuItemUI extends MenuItemUI
{
if (m.isContentAreaFilled())
{
- g.setColor(m.getBackground().darker());
+ g.setColor(selectionBackground);
g.fillRect(br.x, br.y, br.width, br.height);
}
}
@@ -529,6 +529,7 @@ public class BasicMenuItemUI extends MenuItemUI
}
}
+ // If this menu item is a JCheckBoxMenuItem then paint check icon
if (checkIcon != null)
{
SwingUtilities.layoutCompoundLabel(m, fm, null, checkIcon, vertAlign,
@@ -543,6 +544,7 @@ public class BasicMenuItemUI extends MenuItemUI
vr.x = cr.x + cr.width + defaultTextIconGap;
}
+ // if this is a submenu, then paint arrow icon to indicate it.
if (arrowIcon != null && (c instanceof JMenu))
{
if (! ((JMenu) c).isTopLevelMenu())
@@ -555,27 +557,25 @@ public class BasicMenuItemUI extends MenuItemUI
}
}
- // paint text and user menu icon if it exists
- SwingUtilities.layoutCompoundLabel(c, fm, m.getText(), m.getIcon(),
- vertAlign, horAlign, vertTextPos,
- horTextPos, vr, ir, tr,
- defaultTextIconGap);
-
- paintText(g, m, tr, m.getText());
-
// paint icon
// FIXME: should paint different icon at different button state's.
// i.e disabled icon when button is disabled.. etc.
-
- /*
Icon i = m.getIcon();
if (i != null)
{
- int x = ir.x;
- int y = ir.y;
- i.paintIcon(c, g, x, y);
+ i.paintIcon(c, g, vr.x, vr.y);
+
+ // Adjust view rectangle, s.t text would be drawn after menu item's icon.
+ vr.x += i.getIconWidth() + defaultTextIconGap;
}
- */
+
+ // paint text and user menu icon if it exists
+ SwingUtilities.layoutCompoundLabel(c, fm, m.getText(), m.getIcon(),
+ vertAlign, horAlign, vertTextPos,
+ horTextPos, vr, ir, tr,
+ defaultTextIconGap);
+
+ paintText(g, m, tr, m.getText());
// paint accelerator
String acceleratorText = "";
@@ -612,11 +612,28 @@ public class BasicMenuItemUI extends MenuItemUI
Font f = menuItem.getFont();
g.setFont(f);
FontMetrics fm = g.getFontMetrics(f);
- g.setColor(menuItem.getForeground());
+ if (text != null && ! text.equals(""))
+ {
+ if (menuItem.isEnabled())
+ g.setColor(menuItem.getForeground());
+ else
+ // FIXME: should fix this to use 'disabledForeground', but its
+ // default value in BasicLookAndFeel is null.
+ g.setColor(Color.gray);
+
+ int mnemonicIndex = menuItem.getDisplayedMnemonicIndex();
+
+ if (mnemonicIndex != -1)
+ BasicGraphicsUtils.drawStringUnderlineCharAt(g, text, mnemonicIndex,
+ textRect.x,
+ textRect.y
+ + fm.getAscent());
+ else
BasicGraphicsUtils.drawString(g, text, 0, textRect.x,
textRect.y + fm.getAscent());
}
+ }
/**
* This method uninstalls the components for this {@link JMenuItem}.
@@ -682,6 +699,7 @@ public class BasicMenuItemUI extends MenuItemUI
{
uninstallListeners();
uninstallDefaults();
+ uninstallComponents(menuItem);
menuItem = null;
}
@@ -751,7 +769,14 @@ public class BasicMenuItemUI extends MenuItemUI
{
g.setFont(acceleratorFont);
FontMetrics fm = g.getFontMetrics(acceleratorFont);
+
+ if (menuItem.isEnabled())
g.setColor(acceleratorForeground);
+ else
+ // FIXME: should fix this to use 'disabledForeground', but its
+ // default value in BasicLookAndFeel is null.
+ g.setColor(Color.gray);
+
BasicGraphicsUtils.drawString(g, acceleratorText, 0, acceleratorRect.x,
acceleratorRect.y + fm.getAscent());
}
@@ -859,14 +884,17 @@ public class BasicMenuItemUI extends MenuItemUI
*/
public void mouseReleased(MouseEvent e)
{
- Rectangle size = menuItem.getBounds(); //this.getParent().getSize();
+ Rectangle size = menuItem.getBounds();
+ MenuSelectionManager manager = MenuSelectionManager.defaultManager();
if (e.getX() > 0 && e.getX() < size.width && e.getY() > 0
&& e.getY() < size.height)
{
- MenuSelectionManager manager = MenuSelectionManager.defaultManager();
manager.clearSelectedPath();
- menuItem.doClick(0);
+ menuItem.doClick();
}
+
+ else
+ manager.processMouseEvent(e);
}
}
@@ -882,6 +910,8 @@ public class BasicMenuItemUI extends MenuItemUI
*/
public void menuDragMouseDragged(MenuDragMouseEvent e)
{
+ MenuSelectionManager manager = MenuSelectionManager.defaultManager();
+ manager.setSelectedPath(e.getPath());
}
/**
@@ -892,6 +922,8 @@ public class BasicMenuItemUI extends MenuItemUI
*/
public void menuDragMouseEntered(MenuDragMouseEvent e)
{
+ MenuSelectionManager manager = MenuSelectionManager.defaultManager();
+ manager.setSelectedPath(e.getPath());
}
/**
@@ -912,6 +944,13 @@ public class BasicMenuItemUI extends MenuItemUI
*/
public void menuDragMouseReleased(MenuDragMouseEvent e)
{
+ MenuElement[] path = e.getPath();
+
+ if (path[path.length - 1] instanceof JMenuItem)
+ ((JMenuItem) path[path.length - 1]).doClick();
+
+ MenuSelectionManager manager = MenuSelectionManager.defaultManager();
+ manager.clearSelectedPath();
}
}
@@ -963,6 +1002,8 @@ public class BasicMenuItemUI extends MenuItemUI
*/
public void propertyChange(PropertyChangeEvent evt)
{
+ menuItem.revalidate();
+ menuItem.repaint();
}
}
}
diff --git a/libjava/javax/swing/plaf/basic/BasicMenuUI.java b/libjava/javax/swing/plaf/basic/BasicMenuUI.java
index 1953f480a8e..01dca763dbd 100644
--- a/libjava/javax/swing/plaf/basic/BasicMenuUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicMenuUI.java
@@ -213,8 +213,11 @@ public class BasicMenuUI extends BasicMenuItemUI
acceleratorFont = defaults.getFont("Menu.acceleratorFont");
acceleratorForeground = defaults.getColor("Menu.acceleratorForeground");
acceleratorSelectionForeground = defaults.getColor("Menu.acceleratorSelectionForeground");
+ selectionBackground = defaults.getColor("Menu.selectionBackground");
+ selectionForeground = defaults.getColor("Menu.selectionForeground");
arrowIcon = defaults.getIcon("Menu.arrowIcon");
oldBorderPainted = defaults.getBoolean("Menu.borderPainted");
+ menuItem.setOpaque(true);
}
/**
@@ -233,7 +236,9 @@ public class BasicMenuUI extends BasicMenuItemUI
protected void installListeners()
{
((JMenu) menuItem).addMouseListener(mouseInputListener);
+ ((JMenu) menuItem).addMouseMotionListener(mouseInputListener);
((JMenu) menuItem).addMenuListener(menuListener);
+ ((JMenu) menuItem).addMenuDragMouseListener(menuDragMouseListener);
}
protected void setupPostTimer(JMenu menu)
@@ -254,6 +259,8 @@ public class BasicMenuUI extends BasicMenuItemUI
acceleratorFont = null;
acceleratorForeground = null;
acceleratorSelectionForeground = null;
+ selectionBackground = null;
+ selectionForeground = null;
arrowIcon = null;
}
@@ -304,11 +311,10 @@ public class BasicMenuUI extends BasicMenuItemUI
selected. (If nothing was selected, menu should be pressed before
it will be selected)
*/
-
JMenu menu = (JMenu) menuItem;
if (! menu.isTopLevelMenu()
|| (menu.isTopLevelMenu()
- && (((JMenuBar) menu.getParent()).isSelected())))
+ && (((JMenuBar) menu.getParent()).isSelected() && ! menu.isArmed())))
{
// set new selection and forward this event to MenuSelectionManager
MenuSelectionManager manager = MenuSelectionManager.defaultManager();
@@ -329,7 +335,6 @@ public class BasicMenuUI extends BasicMenuItemUI
public void mousePressed(MouseEvent e)
{
-
MenuSelectionManager manager = MenuSelectionManager.defaultManager();
JMenu menu = (JMenu) menuItem;
manager.processMouseEvent(e);
@@ -339,19 +344,15 @@ public class BasicMenuUI extends BasicMenuItemUI
if (menu.isTopLevelMenu())
{
if (menu.getPopupMenu().isVisible())
- {
// If menu is visible and menu button was pressed..
// then need to cancel the menu
- menu.fireMenuCanceled();
manager.clearSelectedPath();
- }
else
{
// Display the menu
int x = 0;
int y = menu.getHeight();
- menu.fireMenuSelected();
manager.setSelectedPath(getPath());
JMenuBar mb = (JMenuBar) menu.getParent();
@@ -376,30 +377,44 @@ public class BasicMenuUI extends BasicMenuItemUI
{
/**
* This method is called when menu is cancelled. The menu is cancelled
- * when its popup menu is closed without selection.
+ * when its popup menu is closed without selection. It clears selected index
+ * in the selectionModel of the menu parent.
*
* @param e The MenuEvent.
*/
public void menuCanceled(MenuEvent e)
{
+ menuDeselected(e);
}
/**
- * This method is called when menu is deselected.
+ * This method is called when menu is deselected. It clears selected index
+ * in the selectionModel of the menu parent.
*
* @param e The MenuEvent.
*/
public void menuDeselected(MenuEvent e)
{
+ JMenu menu = (JMenu) menuItem;
+ if (menu.isTopLevelMenu())
+ ((JMenuBar) menu.getParent()).getSelectionModel().clearSelection();
+ else
+ ((JPopupMenu) menu.getParent()).getSelectionModel().clearSelection();
}
/**
- * This method is called when menu is selected.
+ * This method is called when menu is selected. It sets selected index
+ * in the selectionModel of the menu parent.
*
* @param e The MenuEvent.
*/
public void menuSelected(MenuEvent e)
{
+ JMenu menu = (JMenu) menuItem;
+ if (menu.isTopLevelMenu())
+ ((JMenuBar) menu.getParent()).setSelected(menu);
+ else
+ ((JPopupMenu) menu.getParent()).setSelected(menu);
}
}
@@ -428,31 +443,35 @@ public class BasicMenuUI extends BasicMenuItemUI
}
/**
- * This class handles mouse dragged events.
+ * This class handles mouse dragged events occuring in the menu.
*/
protected class MenuDragMouseHandler implements MenuDragMouseListener
{
/**
- * Tbis method is invoked when mouse is dragged over the menu item.
+ * This method is invoked when mouse is dragged over the menu item.
*
* @param e The MenuDragMouseEvent
*/
public void menuDragMouseDragged(MenuDragMouseEvent e)
{
+ MenuSelectionManager manager = MenuSelectionManager.defaultManager();
+ manager.setSelectedPath(e.getPath());
}
/**
- * Tbis method is invoked when mouse enters the menu item while it is
+ * This method is invoked when mouse enters the menu item while it is
* being dragged.
*
* @param e The MenuDragMouseEvent
*/
public void menuDragMouseEntered(MenuDragMouseEvent e)
{
+ MenuSelectionManager manager = MenuSelectionManager.defaultManager();
+ manager.setSelectedPath(e.getPath());
}
/**
- * Tbis method is invoked when mouse exits the menu item while
+ * This method is invoked when mouse exits the menu item while
* it is being dragged
*
* @param e The MenuDragMouseEvent
@@ -462,7 +481,7 @@ public class BasicMenuUI extends BasicMenuItemUI
}
/**
- * Tbis method is invoked when mouse was dragged and released
+ * This method is invoked when mouse was dragged and released
* inside the menu item.
*
* @param e The MenuDragMouseEvent
diff --git a/libjava/javax/swing/plaf/basic/BasicOptionPaneUI.java b/libjava/javax/swing/plaf/basic/BasicOptionPaneUI.java
index 8d65ee0928d..8a696b8cbc1 100644
--- a/libjava/javax/swing/plaf/basic/BasicOptionPaneUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicOptionPaneUI.java
@@ -56,6 +56,7 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import java.beans.PropertyVetoException;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.Icon;
@@ -63,6 +64,7 @@ import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JDialog;
+import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
@@ -111,7 +113,7 @@ public class BasicOptionPaneUI extends OptionPaneUI
Object value = new Integer(JOptionPane.CLOSED_OPTION);
Object[] options = optionPane.getOptions();
if (options != null)
- value = options[buttonIndex];
+ value = new Integer(buttonIndex);
else
{
String text = ((JButton) e.getSource()).getText();
@@ -131,6 +133,20 @@ public class BasicOptionPaneUI extends OptionPaneUI
if (owner instanceof JDialog)
((JDialog) owner).dispose();
+
+ //else we probably have some kind of internal frame.
+ JInternalFrame inf = (JInternalFrame) SwingUtilities.getAncestorOfClass(JInternalFrame.class,
+ optionPane);
+ if (inf != null)
+ {
+ try
+ {
+ inf.setClosed(true);
+ }
+ catch (PropertyVetoException pve)
+ {
+ }
+ }
}
}
@@ -642,10 +658,10 @@ public class BasicOptionPaneUI extends OptionPaneUI
toAdd = new JButton((Icon) buttons[i]);
else
toAdd = new JButton(buttons[i].toString());
- ((JButton) toAdd).addActionListener(createButtonActionListener(i));
hasCustomComponents = true;
}
-
+ if (toAdd instanceof JButton)
+ ((JButton) toAdd).addActionListener(createButtonActionListener(i));
if (i == initialIndex)
initialFocusComponent = toAdd;
container.add(toAdd);
@@ -837,8 +853,7 @@ public class BasicOptionPaneUI extends OptionPaneUI
{
public Dimension getPreferredSize()
{
- int w = Math.max(optionPane.getSize().width,
- minimumWidth);
+ int w = Math.max(optionPane.getSize().width, minimumWidth);
Insets i = optionPane.getInsets();
Dimension orig = super.getPreferredSize();
Dimension value = new Dimension(w - i.left - i.right - iconSize,
@@ -856,10 +871,13 @@ public class BasicOptionPaneUI extends OptionPaneUI
{
Object[] selection = optionPane.getSelectionValues();
+// if (selection == null)
+// inputComponent = new JTextField();
+// else if (selection.length < 20)
+// inputComponent = new JComboBox(selection);
+ // FIXME: Uncomment when the widgets are done.
if (selection == null)
- inputComponent = new JTextField();
- else if (selection.length < 20)
- inputComponent = new JComboBox(selection);
+ inputComponent = null;
else
inputComponent = new JList(selection);
if (inputComponent != null)
@@ -972,7 +990,9 @@ public class BasicOptionPaneUI extends OptionPaneUI
tmp = questionIcon;
break;
}
- return new IconUIResource(tmp);
+ return tmp;
+ // FIXME: Don't cast till the default icons are in.
+ // return new IconUIResource(tmp);
}
/**
diff --git a/libjava/javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.java b/libjava/javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.java
index a1adf01731c..caa5f8ddd34 100644
--- a/libjava/javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.java
@@ -53,7 +53,7 @@ import javax.swing.plaf.SeparatorUI;
/**
- * The Basic L&F UI delegate for JPopupMenu.Separator.
+ * The Basic Look and Feel UI delegate for JPopupMenu.Separator.
*/
public class BasicPopupMenuSeparatorUI extends BasicSeparatorUI
{
diff --git a/libjava/javax/swing/plaf/basic/BasicPopupMenuUI.java b/libjava/javax/swing/plaf/basic/BasicPopupMenuUI.java
index 48612d8769e..f5b3e24c277 100644
--- a/libjava/javax/swing/plaf/basic/BasicPopupMenuUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicPopupMenuUI.java
@@ -40,15 +40,20 @@ package javax.swing.plaf.basic;
import java.awt.AWTKeyStroke;
import java.awt.BasicStroke;
import java.awt.Color;
+import java.awt.Component;
+import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagLayout;
+import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.Stroke;
+import java.awt.event.ComponentEvent;
+import java.awt.event.ComponentListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
@@ -88,14 +93,22 @@ import javax.swing.plaf.PopupMenuUI;
/**
- * DOCUMENT ME!
+ * UI Delegate for JPopupMenu
*/
public class BasicPopupMenuUI extends PopupMenuUI
{
+ /* popupMenu for which this UI delegate is for*/
protected JPopupMenu popupMenu;
+
+ /* MouseInputListener listens to mouse events */
private static transient MouseInputListener mouseInputListener;
+
+ /* PopupMenuListener listens to popup menu events fired by JPopupMenu*/
private transient PopupMenuListener popupMenuListener;
+ /* ComponentListener listening to popupMenu's invoker. */
+ private TopWindowListener topWindowListener;
+
/**
* Creates a new BasicPopupMenuUI object.
*/
@@ -103,14 +116,16 @@ public class BasicPopupMenuUI extends PopupMenuUI
{
popupMenuListener = new PopupMenuHandler();
mouseInputListener = new MouseInputHandler();
+ topWindowListener = new TopWindowListener();
}
/**
- * DOCUMENT ME!
+ * Factory method to create a BasicPopupMenuUI for the given {@link
+ * JComponent}, which should be a {@link JMenuItem}.
*
- * @param x DOCUMENT ME!
+ * @param x The {@link JComponent} a UI is being created for.
*
- * @return DOCUMENT ME!
+ * @return A BasicPopupMenuUI for the {@link JComponent}.
*/
public static ComponentUI createUI(JComponent x)
{
@@ -118,9 +133,11 @@ public class BasicPopupMenuUI extends PopupMenuUI
}
/**
- * DOCUMENT ME!
+ * Installs and initializes all fields for this UI delegate. Any properties
+ * of the UI that need to be initialized and/or set to defaults will be
+ * done now. It will also install any listeners necessary.
*
- * @param c DOCUMENT ME!
+ * @param c The {@link JComponent} that is having this UI installed.
*/
public void installUI(JComponent c)
{
@@ -128,14 +145,15 @@ public class BasicPopupMenuUI extends PopupMenuUI
popupMenu = (JPopupMenu) c;
popupMenu.setLayout(new GridBagLayout());
popupMenu.setBorderPainted(true);
- popupMenu.setDefaultLightWeightPopupEnabled(true);
+ JPopupMenu.setDefaultLightWeightPopupEnabled(true);
installDefaults();
installListeners();
}
/**
- * DOCUMENT ME!
+ * This method installs the defaults that are defined in the Basic look and
+ * feel for this {@link JPopupMenu}.
*/
public void installDefaults()
{
@@ -148,7 +166,7 @@ public class BasicPopupMenuUI extends PopupMenuUI
}
/**
- * DOCUMENT ME!
+ * This method installs the listeners for the {@link JMenuItem}.
*/
protected void installListeners()
{
@@ -158,16 +176,19 @@ public class BasicPopupMenuUI extends PopupMenuUI
}
/**
- * DOCUMENT ME!
+ * This method installs the keyboard actions for this {@link JPopupMenu}.
*/
protected void installKeyboardActions()
{
+ // FIXME: Need to implement
}
/**
- * DOCUMENT ME!
+ * Performs the opposite of installUI. Any properties or resources that need
+ * to be cleaned up will be done now. It will also uninstall any listeners
+ * it has. In addition, any properties of this UI will be nulled.
*
- * @param c DOCUMENT ME!
+ * @param c The {@link JComponent} that is having this UI uninstalled.
*/
public void uninstallUI(JComponent c)
{
@@ -177,7 +198,8 @@ public class BasicPopupMenuUI extends PopupMenuUI
}
/**
- * DOCUMENT ME!
+ * This method uninstalls the defaults and sets any objects created during
+ * install to null
*/
protected void uninstallDefaults()
{
@@ -188,25 +210,29 @@ public class BasicPopupMenuUI extends PopupMenuUI
}
/**
- * DOCUMENT ME!
+ * Unregisters all the listeners that this UI delegate was using.
*/
protected void uninstallListeners()
{
+ popupMenu.removeMouseListener(mouseInputListener);
+ popupMenu.removeMouseMotionListener(mouseInputListener);
+ popupMenu.removePopupMenuListener(popupMenuListener);
}
/**
- * DOCUMENT ME!
+ * Uninstalls any keyboard actions.
*/
protected void uninstallKeyboardActions()
{
+ // FIXME: Need to implement
}
/**
- * DOCUMENT ME!
+ * This method returns the minimum size of the JPopupMenu.
*
- * @param c DOCUMENT ME!
+ * @param c The JComponent to find a size for.
*
- * @return DOCUMENT ME!
+ * @return The minimum size.
*/
public Dimension getMinimumSize(JComponent c)
{
@@ -214,11 +240,11 @@ public class BasicPopupMenuUI extends PopupMenuUI
}
/**
- * DOCUMENT ME!
+ * This method returns the preferred size of the JPopupMenu.
*
- * @param c DOCUMENT ME!
+ * @param c The JComponent to find a size for.
*
- * @return DOCUMENT ME!
+ * @return The preferred size.
*/
public Dimension getPreferredSize(JComponent c)
{
@@ -226,11 +252,11 @@ public class BasicPopupMenuUI extends PopupMenuUI
}
/**
- * DOCUMENT ME!
+ * This method returns the minimum size of the JPopupMenu.
*
- * @param c DOCUMENT ME!
+ * @param c The JComponent to find a size for.
*
- * @return DOCUMENT ME!
+ * @return The minimum size.
*/
public Dimension getMaximumSize(JComponent c)
{
@@ -238,11 +264,13 @@ public class BasicPopupMenuUI extends PopupMenuUI
}
/**
- * DOCUMENT ME!
+ * Return true if given mouse event is a platform popup trigger,
+ * and false otherwise
*
- * @param e DOCUMENT ME!
+ * @param e MouseEvent that is to be checked for popup trigger event
*
- * @return DOCUMENT ME!
+ * @return true if given mouse event is a platform popup trigger,
+ * and false otherwise
*/
public boolean isPopupTrigger(MouseEvent e)
{
@@ -250,102 +278,153 @@ public class BasicPopupMenuUI extends PopupMenuUI
}
/**
- * DOCUMENT ME!
+ * This listener handles PopupMenuEvents fired by JPopupMenu
*/
- protected class PopupMenuHandler implements PopupMenuListener
+ private class PopupMenuHandler implements PopupMenuListener
{
/**
- * DOCUMENT ME!
+ * This method is invoked when JPopupMenu is cancelled.
*
- * @param event DOCUMENT ME!
+ * @param event the PopupMenuEvent
*/
public void popupMenuCanceled(PopupMenuEvent event)
{
+ MenuSelectionManager manager = MenuSelectionManager.defaultManager();
+ manager.clearSelectedPath();
}
/**
- * DOCUMENT ME!
+ * This method is invoked when JPopupMenu becomes invisible
*
- * @param event DOCUMENT ME!
+ * @param event the PopupMenuEvent
*/
public void popupMenuWillBecomeInvisible(PopupMenuEvent event)
{
+ // remove listener that listens to component events fired
+ // by the top - level window that this popup belongs to.
+ Component invoker = popupMenu.getInvoker();
+
+ Container rootContainer = (Container) SwingUtilities.getRoot(invoker);
+ rootContainer.removeComponentListener(topWindowListener);
}
/**
- * DOCUMENT ME!
+ * This method is invoked when JPopupMenu becomes visible
*
- * @param event DOCUMENT ME!
+ * @param event the PopupMenuEvent
*/
public void popupMenuWillBecomeVisible(PopupMenuEvent event)
{
+ // Adds topWindowListener to top-level window to listener to
+ // ComponentEvents fired by it. We need to cancel this popup menu
+ // if topWindow to which this popup belongs was resized or moved.
+ Component invoker = popupMenu.getInvoker();
+ Container rootContainer = (Container) SwingUtilities.getRoot(invoker);
+ rootContainer.addComponentListener(topWindowListener);
+
+ // if this popup menu is a free floating popup menu,
+ // then by default its first element should be always selected when
+ // this popup menu becomes visible.
+ MenuSelectionManager manager = MenuSelectionManager.defaultManager();
+
+ if (manager.getSelectedPath().length == 0)
+ {
+ // Set selected path to point to the first item in the popup menu
+ MenuElement[] path = new MenuElement[2];
+ path[0] = popupMenu;
+ Component[] comps = popupMenu.getComponents();
+ if (comps.length != 0 && comps[0] instanceof MenuElement)
+ path[1] = (MenuElement) comps[0];
+ manager.setSelectedPath(path);
+ }
}
}
/**
- * DOCUMENT ME!
+ * ComponentListener that listens to Component Events fired by the
+ * top - level window to which popup menu belongs. If top-level
+ * window was resized, moved or hidded then popup menu will
+ * be hidded and selected path of current menu hierarchy will be set
+ * to null.
+ *
*/
- protected class MouseInputHandler implements MouseInputListener
+ private class TopWindowListener implements ComponentListener
{
/**
- * DOCUMENT ME!
+ * This method is invoked when top-level window is resized.
+ * This method closes current menu hierarchy.
*
- * @param e DOCUMENT ME!
+ * @param e The ComponentEvent
*/
- public void mouseClicked(MouseEvent e)
+ public void componentResized(ComponentEvent e)
{
+ MenuSelectionManager manager = MenuSelectionManager.defaultManager();
+ manager.clearSelectedPath();
}
/**
- * DOCUMENT ME!
+ * This method is invoked when top-level window is moved.
+ * This method closes current menu hierarchy.
*
- * @param e DOCUMENT ME!
+ * @param e The ComponentEvent
*/
- public void mouseDragged(MouseEvent e)
+ public void componentMoved(ComponentEvent e)
{
+ MenuSelectionManager manager = MenuSelectionManager.defaultManager();
+ manager.clearSelectedPath();
}
/**
- * DOCUMENT ME!
+ * This method is invoked when top-level window is shown
+ * This method does nothing by default.
*
- * @param e DOCUMENT ME!
+ * @param e The ComponentEvent
*/
- public void mouseEntered(MouseEvent e)
+ public void componentShown(ComponentEvent e)
{
+ MenuSelectionManager manager = MenuSelectionManager.defaultManager();
+ manager.clearSelectedPath();
}
/**
- * DOCUMENT ME!
+ * This method is invoked when top-level window is hidden
+ * This method closes current menu hierarchy.
*
- * @param e DOCUMENT ME!
+ * @param e The ComponentEvent
*/
+ public void componentHidden(ComponentEvent e)
+ {
+ MenuSelectionManager manager = MenuSelectionManager.defaultManager();
+ manager.clearSelectedPath();
+ }
+ }
+
+ private class MouseInputHandler implements MouseInputListener
+ {
+ public void mouseClicked(MouseEvent e)
+ {
+ }
+
+ public void mouseDragged(MouseEvent e)
+ {
+ }
+
+ public void mouseEntered(MouseEvent e)
+ {
+ }
+
public void mouseExited(MouseEvent e)
{
}
- /**
- * DOCUMENT ME!
- *
- * @param e DOCUMENT ME!
- */
public void mouseMoved(MouseEvent e)
{
}
- /**
- * DOCUMENT ME!
- *
- * @param e DOCUMENT ME!
- */
public void mousePressed(MouseEvent e)
{
}
- /**
- * DOCUMENT ME!
- *
- * @param e DOCUMENT ME!
- */
public void mouseReleased(MouseEvent e)
{
}
diff --git a/libjava/javax/swing/plaf/basic/BasicProgressBarUI.java b/libjava/javax/swing/plaf/basic/BasicProgressBarUI.java
index d171917172f..fa84267efa2 100644
--- a/libjava/javax/swing/plaf/basic/BasicProgressBarUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicProgressBarUI.java
@@ -139,7 +139,7 @@ public class BasicProgressBarUI extends ProgressBarUI
// The total number of frames must be an even number.
// The total number of frames is calculated from
// the cycleTime and repaintInterval given by
- // the basic L&F's defaults.
+ // the basic Look and Feel defaults.
//
// +-----------------------------------------------+
// | frame0 | frame1 | frame2 | frame 3 | frame 4 |
diff --git a/libjava/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java b/libjava/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java
index 4ae25532d20..a63c95fbc55 100644
--- a/libjava/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java
@@ -38,7 +38,6 @@ exception statement from your version. */
package javax.swing.plaf.basic;
import java.awt.event.MouseEvent;
-
import javax.swing.JComponent;
import javax.swing.JMenuItem;
import javax.swing.MenuElement;
@@ -49,7 +48,7 @@ import javax.swing.plaf.ComponentUI;
/**
- * DOCUMENT ME!
+ * UI Delegator for JRadioButtonMenuItem
*/
public class BasicRadioButtonMenuItemUI extends BasicMenuItemUI
{
@@ -64,11 +63,12 @@ public class BasicRadioButtonMenuItemUI extends BasicMenuItemUI
}
/**
- * DOCUMENT ME!
+ * Factory method to create a BasicRadioButtonMenuItemUI for the given {@link
+ * JComponent}, which should be a JRadioButtonMenuItem.
*
- * @param b DOCUMENT ME!
+ * @param b The {@link JComponent} a UI is being created for.
*
- * @return $returnType$ DOCUMENT ME!
+ * @return A BasicRadioButtonMenuItemUI for the {@link JComponent}.
*/
public static ComponentUI createUI(JComponent b)
{
@@ -83,7 +83,6 @@ public class BasicRadioButtonMenuItemUI extends BasicMenuItemUI
protected String getPropertyPrefix()
{
return null;
- // TODO
}
/**
@@ -94,7 +93,8 @@ public class BasicRadioButtonMenuItemUI extends BasicMenuItemUI
* @param path DOCUMENT ME!
* @param manager DOCUMENT ME!
*/
- void processMouseEvent(JMenuItem item, MouseEvent e, MenuElement[] path,
+ public void processMouseEvent(JMenuItem item, MouseEvent e,
+ MenuElement[] path,
MenuSelectionManager manager)
{
}
diff --git a/libjava/javax/swing/plaf/basic/BasicRootPaneUI.java b/libjava/javax/swing/plaf/basic/BasicRootPaneUI.java
index 96f09a11980..7201549a209 100644
--- a/libjava/javax/swing/plaf/basic/BasicRootPaneUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicRootPaneUI.java
@@ -38,12 +38,16 @@ exception statement from your version. */
package javax.swing.plaf.basic;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import javax.swing.JComponent;
+import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.RootPaneUI;
public class BasicRootPaneUI extends RootPaneUI
+ implements PropertyChangeListener
{
public static ComponentUI createUI(JComponent x)
{
@@ -53,7 +57,11 @@ public class BasicRootPaneUI extends RootPaneUI
public void installUI(JComponent c)
{
c.setOpaque(true);
- c.setBackground(javax.swing.UIManager.getColor("control"));
+ c.setBackground(UIManager.getColor("control"));
super.installUI(c);
}
+
+ public void propertyChange(PropertyChangeEvent event)
+ {
+ }
}
diff --git a/libjava/javax/swing/plaf/basic/BasicScrollBarUI.java b/libjava/javax/swing/plaf/basic/BasicScrollBarUI.java
index b16f2a733e2..913b3260b91 100644
--- a/libjava/javax/swing/plaf/basic/BasicScrollBarUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicScrollBarUI.java
@@ -548,14 +548,9 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
3));
/** The Icon that points right. */
- private static Icon rightIcon = new arrowIcon(new Polygon(new int[]
- {
- 3, 7, 3
- },
- new int[]
- {
- 2, 5, 8
- }, 3));
+ private static Icon rightIcon = new arrowIcon(new Polygon(new int[] { 3, 7, 3},
+ new int[] { 2, 5, 8},
+ 3));
/**
* This method adds a component to the layout.
@@ -571,7 +566,7 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
/**
* This method configures the scrollbar's colors. This can be
- * done by looking up the standard colors from the L&F defaults.
+ * done by looking up the standard colors from the Look and Feel defaults.
*/
protected void configureScrollBarColors()
{
@@ -606,7 +601,15 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
protected JButton createIncreaseButton(int orientation)
{
if (incrButton == null)
+ {
incrButton = new JButton();
+ incrButton.setMargin(new Insets(0,0,0,0));
+ incrButton.setHorizontalAlignment(SwingConstants.CENTER);
+ incrButton.setHorizontalTextPosition(SwingConstants.CENTER);
+ incrButton.setVerticalAlignment(SwingConstants.CENTER);
+ incrButton.setVerticalTextPosition(SwingConstants.CENTER);
+ }
+
if (orientation == SwingConstants.HORIZONTAL)
incrButton.setIcon(rightIcon);
else
@@ -626,7 +629,15 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
protected JButton createDecreaseButton(int orientation)
{
if (decrButton == null)
+ {
decrButton = new JButton();
+ decrButton.setMargin(new Insets(0,0,0,0));
+ decrButton.setHorizontalAlignment(SwingConstants.CENTER);
+ decrButton.setHorizontalTextPosition(SwingConstants.CENTER);
+ decrButton.setVerticalAlignment(SwingConstants.CENTER);
+ decrButton.setVerticalTextPosition(SwingConstants.CENTER);
+ }
+
if (orientation == SwingConstants.HORIZONTAL)
decrButton.setIcon(leftIcon);
else
@@ -891,7 +902,7 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
/**
* This method installs the defaults for the scrollbar specified
- * by the Basic L&F.
+ * by the Basic Look and Feel.
*/
protected void installDefaults()
{
@@ -1257,7 +1268,7 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
/**
* This method uninstalls any defaults that this
- * scrollbar acquired from the Basic L&F defaults.
+ * scrollbar acquired from the Basic Look and Feel defaults.
*/
protected void uninstallDefaults()
{
diff --git a/libjava/javax/swing/plaf/basic/BasicScrollPaneUI.java b/libjava/javax/swing/plaf/basic/BasicScrollPaneUI.java
index 2148a92104e..4d70412479a 100644
--- a/libjava/javax/swing/plaf/basic/BasicScrollPaneUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicScrollPaneUI.java
@@ -43,11 +43,15 @@ import java.awt.Graphics;
import javax.swing.JComponent;
import javax.swing.JScrollPane;
+import javax.swing.ScrollPaneConstants;
import javax.swing.ScrollPaneLayout;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.ScrollPaneUI;
public class BasicScrollPaneUI extends ScrollPaneUI
+ implements ScrollPaneConstants
{
public static ComponentUI createUI(final JComponent c)
@@ -55,12 +59,37 @@ public class BasicScrollPaneUI extends ScrollPaneUI
return new BasicScrollPaneUI();
}
+ protected void installDefaults(JScrollPane p)
+ {
+ UIDefaults defaults = UIManager.getLookAndFeelDefaults();
+ p.setForeground(defaults.getColor("ScrollPane.foreground"));
+ p.setBackground(defaults.getColor("ScrollPane.background"));
+ p.setFont(defaults.getFont("ScrollPane.font"));
+ p.setBorder(defaults.getBorder("ScrollPane.border"));
+ p.setOpaque(true);
+ }
+
+ protected void uninstallDefaults(JScrollPane p)
+ {
+ p.setForeground(null);
+ p.setBackground(null);
+ p.setFont(null);
+ p.setBorder(null);
+ }
public void installUI(final JComponent c)
{
super.installUI(c);
+ this.installDefaults((JScrollPane)c);
+ }
+
+ public void uninstallUI(final JComponent c)
+ {
+ super.uninstallUI(c);
+ this.uninstallDefaults((JScrollPane)c);
}
+
public Dimension getMinimumSize(JComponent c)
{
JScrollPane p = (JScrollPane ) c;
diff --git a/libjava/javax/swing/plaf/basic/BasicSeparatorUI.java b/libjava/javax/swing/plaf/basic/BasicSeparatorUI.java
index 8f4500fd58c..9149cb85d80 100644
--- a/libjava/javax/swing/plaf/basic/BasicSeparatorUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicSeparatorUI.java
@@ -51,7 +51,7 @@ import javax.swing.JSeparator;
import javax.swing.SwingUtilities;
/**
- * The Basic L&F UI delegate for JSeparator.
+ * The Basic Look and Feel UI delegate for JSeparator.
*/
public class BasicSeparatorUI extends SeparatorUI
{
@@ -113,7 +113,7 @@ public class BasicSeparatorUI extends SeparatorUI
/**
* This method installs the defaults that are given by
- * the Basic L&F.
+ * the Basic Look and Feel.
*
* @param s The JSeparator that is being installed.
*/
@@ -128,7 +128,7 @@ public class BasicSeparatorUI extends SeparatorUI
/**
* This method removes the defaults that were given
- * by the Basic L&F.
+ * by the Basic Look and Feel.
*
* @param s The JSeparator that is being uninstalled.
*/
diff --git a/libjava/javax/swing/plaf/basic/BasicSliderUI.java b/libjava/javax/swing/plaf/basic/BasicSliderUI.java
index 073e42c0fc1..7334b2e0eb3 100644
--- a/libjava/javax/swing/plaf/basic/BasicSliderUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicSliderUI.java
@@ -58,7 +58,6 @@ import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Dictionary;
import java.util.Enumeration;
-
import javax.swing.BoundedRangeModel;
import javax.swing.JComponent;
import javax.swing.JLabel;
@@ -152,7 +151,6 @@ public class BasicSliderUI extends SliderUI
{
// Maximum, minimum, and extent values will be taken
// care of automatically when the slider is repainted.
-
// Only thing that needs recalculation is the thumb.
calculateThumbLocation();
slider.repaint();
@@ -232,12 +230,12 @@ public class BasicSliderUI extends SliderUI
slider.getModel().addChangeListener(changeListener);
calculateThumbLocation();
}
+
// elif the componentOrientation changes (this is a bound property,
// just undocumented) we change leftToRightCache. In Sun's
// implementation, the LTR cache changes on a repaint. This is strange
// since there is no need to do so. We could events here and
// update the cache.
-
// elif the border/insets change, we recalculateInsets.
slider.repaint();
}
@@ -330,8 +328,9 @@ public class BasicSliderUI extends SliderUI
/** The current Y position of the mouse. */
protected int currentMouseY;
- /** The offset between the current slider value
- and the cursor's position. */
+ /**
+ * The offset between the current slider value and the cursor's position.
+ */
protected int offset;
/**
@@ -390,9 +389,6 @@ public class BasicSliderUI extends SliderUI
if (slider.getSnapToTicks())
value = findClosestTick(value);
- if (value == slider.getValue())
- return;
-
// If the thumb is hit, then we don't need to set the timers to move it.
if (!thumbRect.contains(e.getPoint()))
{
@@ -857,8 +853,8 @@ public class BasicSliderUI extends SliderUI
*/
/**
- * This method returns the preferred size when the slider is
- * horizontally oriented.
+ * This method returns the preferred size when the slider is horizontally
+ * oriented.
*
* @return The dimensions of the preferred horizontal size.
*/
@@ -868,8 +864,9 @@ public class BasicSliderUI extends SliderUI
// The width should cover all the labels (which are usually the
// deciding factor of the width)
- int width = getWidthOfWidestLabel() * (slider.getLabelTable() == null ?
- 0 : slider.getLabelTable().size());
+ int width = getWidthOfWidestLabel() * (slider.getLabelTable() == null ? 0
+ : slider.getLabelTable()
+ .size());
// If there are not enough labels.
// This number is pretty much arbitrary, but it looks nice.
@@ -878,28 +875,27 @@ public class BasicSliderUI extends SliderUI
// We can only draw inside of the focusRectangle, so we have to
// pad it with insets.
- width += insets.left + insets.right + focusInsets.left +
- focusInsets.right;
+ width += insets.left + insets.right + focusInsets.left + focusInsets.right;
// Height is determined by the thumb, the ticks and the labels.
int height = thumbHeight;
- if (slider.getPaintTicks() && slider.getMajorTickSpacing() > 0 ||
- slider.getMinorTickSpacing() > 0)
+ if (slider.getPaintTicks() && slider.getMajorTickSpacing() > 0
+ || slider.getMinorTickSpacing() > 0)
height += tickHeight;
if (slider.getPaintLabels())
height += getHeightOfTallestLabel();
- height += insets.top + insets.bottom + focusInsets.top +
- focusInsets.bottom;
+ height += insets.top + insets.bottom + focusInsets.top
+ + focusInsets.bottom;
return new Dimension(width, height);
}
/**
- * This method returns the preferred size when the slider is
- * vertically oriented.
+ * This method returns the preferred size when the slider is vertically
+ * oriented.
*
* @return The dimensions of the preferred vertical size.
*/
@@ -907,33 +903,33 @@ public class BasicSliderUI extends SliderUI
{
Insets insets = slider.getInsets();
- int height = getHeightOfTallestLabel() * (slider.getLabelTable() == null ?
- 0 : slider.getLabelTable().size());
+ int height = getHeightOfTallestLabel() * (slider.getLabelTable() == null
+ ? 0 : slider.getLabelTable()
+ .size());
if (height < 200)
height = 200;
- height += insets.top + insets.bottom + focusInsets.top +
- focusInsets.bottom;
+ height += insets.top + insets.bottom + focusInsets.top
+ + focusInsets.bottom;
int width = thumbHeight;
- if (slider.getPaintTicks() && slider.getMajorTickSpacing() > 0 ||
- slider.getMinorTickSpacing() > 0)
+ if (slider.getPaintTicks() && slider.getMajorTickSpacing() > 0
+ || slider.getMinorTickSpacing() > 0)
width += tickHeight;
if (slider.getPaintLabels())
width += getWidthOfWidestLabel();
- width += insets.left + insets.right + focusInsets.left +
- focusInsets.right;
+ width += insets.left + insets.right + focusInsets.left + focusInsets.right;
return new Dimension(width, height);
}
/**
- * This method returns the minimum size when the slider is
- * horizontally oriented.
+ * This method returns the minimum size when the slider is horizontally
+ * oriented.
*
* @return The dimensions of the minimum horizontal size.
*/
@@ -943,8 +939,8 @@ public class BasicSliderUI extends SliderUI
}
/**
- * This method returns the minimum size of the slider when it
- * is vertically oriented.
+ * This method returns the minimum size of the slider when it is vertically
+ * oriented.
*
* @return The dimensions of the minimum vertical size.
*/
@@ -1005,8 +1001,8 @@ public class BasicSliderUI extends SliderUI
}
/**
- * This method calculates all the sizes of the rectangles by delegating
- * to the helper methods calculateXXXRect.
+ * This method calculates all the sizes of the rectangles by delegating to
+ * the helper methods calculateXXXRect.
*/
protected void calculateGeometry()
{
@@ -1539,18 +1535,17 @@ public class BasicSliderUI extends SliderUI
c.translate((trackRect.width / 2) + (width / 2), trackRect.height);
d.translate((trackRect.width / 2) + (width / 2), 0);
}
- high = new Polygon(new int[] { b.x, c.x, d.x },
- new int[] { b.y, c.y, d.y }, 3);
- shadow = new Polygon(new int[] { b.x, a.x, d.x },
- new int[] { b.y, a.y, d.y }, 3);
+ g.setColor(Color.GRAY);
+ g.fillRect(a.x, a.y, width, height);
g.setColor(getHighlightColor());
- g.drawPolygon(high);
+ g.drawLine(b.x, b.y, c.x, c.y);
+ g.drawLine(c.x, c.y, d.x, d.y);
+
g.setColor(getShadowColor());
- g.drawPolygon(shadow);
+ g.drawLine(b.x, b.y, a.x, a.y);
+ g.drawLine(a.x, a.y, d.x, d.y);
- g.setColor(Color.GRAY);
- g.fillRect(a.x + 1, a.y + 1, width - 2, height - 2);
g.setColor(saved_color);
}
@@ -1662,8 +1657,11 @@ public class BasicSliderUI extends SliderUI
Rectangle tickBounds, int x)
{
int y = tickRect.y + tickRect.height / 4;
+ Color saved = g.getColor();
+ g.setColor(Color.BLACK);
g.drawLine(x, y, x, y + tickRect.height / 4);
+ g.setColor(saved);
}
/**
@@ -1678,8 +1676,11 @@ public class BasicSliderUI extends SliderUI
Rectangle tickBounds, int x)
{
int y = tickRect.y + tickRect.height / 4;
+ Color saved = g.getColor();
+ g.setColor(Color.BLACK);
g.drawLine(x, y, x, y + tickRect.height / 2);
+ g.setColor(saved);
}
/**
@@ -1694,8 +1695,11 @@ public class BasicSliderUI extends SliderUI
int y)
{
int x = tickRect.x + tickRect.width / 4;
+ Color saved = g.getColor();
+ g.setColor(Color.BLACK);
g.drawLine(x, y, x + tickRect.width / 4, y);
+ g.setColor(saved);
}
/**
@@ -1710,8 +1714,11 @@ public class BasicSliderUI extends SliderUI
int y)
{
int x = tickRect.x + tickRect.width / 4;
+ Color saved = g.getColor();
+ g.setColor(Color.BLACK);
g.drawLine(x, y, x + tickRect.width / 2, y);
+ g.setColor(saved);
}
/**
@@ -1786,7 +1793,6 @@ public class BasicSliderUI extends SliderUI
// the labels may not fit inside the slider's bounds. Rather than mucking
// with font sizes and possible icon sizes, we'll set the bounds for
// the label and let it get clipped.
-
Dimension dim = label.getPreferredSize();
int w = (int) dim.getWidth();
int h = (int) dim.getHeight();
@@ -1804,8 +1810,6 @@ public class BasicSliderUI extends SliderUI
// | |
// | |
// The label must move w/2 to the right to fit directly under the value.
-
-
int xpos = xPositionForValue(value) - w / 2;
int ypos = labelRect.y;
diff --git a/libjava/javax/swing/plaf/basic/BasicSplitPaneDivider.java b/libjava/javax/swing/plaf/basic/BasicSplitPaneDivider.java
index e169f6d0952..e06eb05f580 100644
--- a/libjava/javax/swing/plaf/basic/BasicSplitPaneDivider.java
+++ b/libjava/javax/swing/plaf/basic/BasicSplitPaneDivider.java
@@ -157,6 +157,29 @@ public class BasicSplitPaneDivider extends Container
* buttons. */
private transient int currentDividerLocation = 1;
+ private transient Border tmpBorder = new Border()
+ {
+ public Insets getBorderInsets(Component c)
+ {
+ return new Insets(2, 2, 2, 2);
+ }
+
+ public boolean isBorderOpaque()
+ {
+ return false;
+ }
+
+ public void paintBorder(Component c, Graphics g, int x, int y, int width, int height)
+ {
+ Color saved = g.getColor();
+ g.setColor(Color.BLACK);
+
+ g.drawRect(x + 2, y + 2, width - 4, height - 4);
+
+ g.setColor(saved);
+ }
+ };
+
/**
* Constructs a new divider.
*
@@ -167,6 +190,7 @@ public class BasicSplitPaneDivider extends Container
setLayout(new DividerLayout());
setBasicSplitPaneUI(ui);
setDividerSize(splitPane.getDividerSize());
+ setBorder(tmpBorder);
}
/**
diff --git a/libjava/javax/swing/plaf/basic/BasicSplitPaneUI.java b/libjava/javax/swing/plaf/basic/BasicSplitPaneUI.java
index f1ccb133997..f73b52045ba 100644
--- a/libjava/javax/swing/plaf/basic/BasicSplitPaneUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicSplitPaneUI.java
@@ -133,7 +133,7 @@ public class BasicSplitPaneUI extends SplitPaneUI
throw new IllegalArgumentException("Illegal placement in JSplitPane");
components[i] = component;
resetSizeAt(i);
- layoutContainer(splitPane);
+ splitPane.revalidate();
splitPane.repaint();
}
@@ -1265,15 +1265,9 @@ public class BasicSplitPaneUI extends SplitPaneUI
tmpSizes[1] = layoutManager.getAvailableSize(splitPane.getSize(),
splitPane.getInsets())
- tmpSizes[0] - tmpSizes[1];
- Point p = divider.getLocation();
-// if (getOrientation() == JSplitPane.HORIZONTAL_SPLIT)
- // setLastDragLocation(p.x);
-// else
-// setLastDragLocation(p.y);
layoutManager.setSizes(tmpSizes);
- layoutManager.layoutContainer(splitPane);
-
+ splitPane.revalidate();
splitPane.repaint();
}
@@ -1414,7 +1408,7 @@ public class BasicSplitPaneUI extends SplitPaneUI
getSplitPane().setLayout(layoutManager);
// invalidating by itself does not invalidate the layout.
- getSplitPane().invalidate();
+ getSplitPane().revalidate();
}
/**
@@ -1437,7 +1431,7 @@ public class BasicSplitPaneUI extends SplitPaneUI
nonContinuousLayoutDivider.setVisible(true);
nonContinuousLayoutDivider.setBounds(divider.getBounds());
}
- splitPane.invalidate();
+ splitPane.revalidate();
splitPane.repaint();
}
diff --git a/libjava/javax/swing/plaf/basic/BasicTabbedPaneUI.java b/libjava/javax/swing/plaf/basic/BasicTabbedPaneUI.java
index b1929aa36d3..44e302b0188 100644
--- a/libjava/javax/swing/plaf/basic/BasicTabbedPaneUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicTabbedPaneUI.java
@@ -1108,7 +1108,7 @@ public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants
{
selectedRun = getRunForTab(tabPane.getTabCount(),
tabPane.getSelectedIndex());
- tabPane.layout();
+ tabPane.revalidate();
tabPane.repaint();
}
}
diff --git a/libjava/javax/swing/plaf/basic/BasicTextUI.java b/libjava/javax/swing/plaf/basic/BasicTextUI.java
index af7ab7e3a9b..817a5e4a290 100644
--- a/libjava/javax/swing/plaf/basic/BasicTextUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicTextUI.java
@@ -1,5 +1,5 @@
/* BasicTextUI.java
- Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -35,85 +35,186 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+
package javax.swing.plaf.basic;
import java.awt.Color;
+import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
+import java.awt.Insets;
import java.awt.Point;
import java.awt.Rectangle;
+import java.awt.Shape;
+
import javax.swing.JComponent;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.TextUI;
+import javax.swing.plaf.UIResource;
import javax.swing.text.BadLocationException;
+import javax.swing.text.Caret;
+import javax.swing.text.DefaultCaret;
import javax.swing.text.DefaultEditorKit;
+import javax.swing.text.DefaultHighlighter;
+import javax.swing.text.Document;
import javax.swing.text.EditorKit;
import javax.swing.text.Element;
+import javax.swing.text.Highlighter;
import javax.swing.text.JTextComponent;
+import javax.swing.text.PlainDocument;
import javax.swing.text.Position;
import javax.swing.text.View;
import javax.swing.text.ViewFactory;
-public class BasicTextUI extends TextUI
+public abstract class BasicTextUI extends TextUI
implements ViewFactory
{
- int gap = 3;
- View view = null; // was: new RootView();
- Color textColor;
- Color disabledTextColor;
- Color normalBackgroundColor;
- EditorKit kit = new DefaultEditorKit();
+ public static class BasicCaret extends DefaultCaret
+ implements UIResource
+ {
+ public BasicCaret()
+ {
+ }
+ }
+
+ public static class BasicHighlighter extends DefaultHighlighter
+ implements UIResource
+ {
+ public BasicHighlighter()
+ {
+ }
+ }
- /* *****************************************************************
- * This View is way too incomplete to be of any use. To avoid errors
- * when compiling with the Sun JDK, it has been commented out.
- * -- Sascha Brawer (brawer@dandelis.ch)
- *
- * (begin of commented out section)
- class RootView extends View
+ private class RootView extends View
{
- RootView()
+ private JTextComponent textComponent;
+ private View view;
+
+ public RootView(JTextComponent parent)
{
super(null);
+ textComponent = parent;
}
- public void paint(Graphics g, Shape s)
+
+ public void setView(View v)
{
if (view != null)
+ view.setParent(null);
+
+ if (v != null)
+ v.setParent(null);
+
+ view = v;
+ }
+
+ public Container getContainer()
{
- Rectangle r = s.getBounds();
+ return textComponent;
+ }
+
+ public float getPreferredSpan(int axis)
+ {
+ if (view != null)
+ return view.getPreferredSpan(axis);
- view.setSize((int)r.getWidth(),
- (int)r.getHeight());
- view.paint(g, s);
+ return Integer.MAX_VALUE;
}
+
+ public void paint(Graphics g, Shape s)
+ {
+ System.out.println("Michael: BasicTextUI.RootView.paint");
+
+ if (view != null)
+ view.paint(g, s);
}
}
- * (end of commented out section)
- *************************************************************** */
+
+ RootView rootView;
+ JTextComponent textComponent;
+ int gap = 3;
+ EditorKit kit = new DefaultEditorKit();
+
public BasicTextUI()
{
}
- public static ComponentUI createUI(final JComponent c)
+ protected Caret createCaret()
{
- return new BasicTextUI();
+ return new BasicCaret();
+ }
+
+ protected Highlighter createHighlighter()
+ {
+ return new BasicHighlighter();
+ }
+
+ protected final JTextComponent getComponent()
+ {
+ return textComponent;
}
public void installUI(final JComponent c)
{
super.installUI(c);
+ c.setOpaque(true);
- textColor = new Color(0, 0, 0);
- disabledTextColor = new Color(130, 130, 130);
- normalBackgroundColor = new Color(192, 192, 192);
+ textComponent = (JTextComponent) c;
+
+ Document doc = textComponent.getDocument();
+ if (doc == null)
+ {
+ doc = new PlainDocument();
+ textComponent.setDocument(doc);
}
- public Dimension getPreferredSize(JComponent c)
+ rootView = new RootView(textComponent);
+ setView(create(doc.getDefaultRootElement()));
+
+ installDefaults();
+ installListeners();
+ installKeyboardActions();
+ }
+
+ protected void installDefaults()
+ {
+ }
+
+ protected void installListeners()
{
- JTextComponent b = (JTextComponent) c;
+ }
- View v = getRootView(b);
+ protected void installKeyboardActions()
+ {
+ }
+
+ public void uninstallUI(final JComponent c)
+ {
+ super.uninstallUI(c);
+ rootView = null;
+
+ uninstallDefaults();
+ uninstallListeners();
+ uninstallKeyboardActions();
+ }
+
+ protected void uninstallDefaults()
+ {
+ }
+
+ protected void uninstallListeners()
+ {
+ }
+
+ protected void uninstallKeyboardActions()
+ {
+ }
+
+ protected abstract String getPropertyPrefix();
+
+ public Dimension getPreferredSize(JComponent c)
+ {
+ View v = getRootView(textComponent);
float w = v.getPreferredSpan(View.X_AXIS);
float h = v.getPreferredSpan(View.Y_AXIS);
@@ -121,9 +222,32 @@ public class BasicTextUI extends TextUI
return new Dimension((int) w, (int) h);
}
- public void paint(Graphics g, JComponent c)
+ public final void paint(Graphics g, JComponent c)
{
- // view.paint(
+ paintSafely(g);
+ }
+
+ protected void paintSafely(Graphics g)
+ {
+ Caret caret = textComponent.getCaret();
+ Highlighter highlighter = textComponent.getHighlighter();
+
+ if (textComponent.isOpaque())
+ paintBackground(g);
+
+ rootView.paint(g, getVisibleEditorRect());
+
+ if (highlighter != null)
+ highlighter.paint(g);
+
+ if (caret != null)
+ caret.paint(g);
+ }
+
+ protected void paintBackground(Graphics g)
+ {
+ g.setColor(Color.WHITE); // FIXME: set background color
+ g.fillRect(0, 0, textComponent.getWidth(), textComponent.getHeight());
}
public void damageRange(JTextComponent t, int p0, int p1)
@@ -151,7 +275,7 @@ public class BasicTextUI extends TextUI
public View getRootView(JTextComponent t)
{
- return view;
+ return rootView;
}
public Rectangle modelToView(JTextComponent t, int pos)
@@ -181,4 +305,30 @@ public class BasicTextUI extends TextUI
// subclasses have to implement this to get this functionality
return null;
}
+
+ public View create(Element elem, int p0, int p1)
+ {
+ // subclasses have to implement this to get this functionality
+ return null;
+ }
+
+ protected Rectangle getVisibleEditorRect()
+ {
+ int width = textComponent.getWidth();
+ int height = textComponent.getHeight();
+
+ if (width <= 0 || height <= 0)
+ return null;
+
+ Insets insets = textComponent.getInsets();
+ return new Rectangle(insets.left, insets.top,
+ width - insets.left + insets.right,
+ height - insets.top + insets.bottom);
+ }
+
+ protected final void setView(View view)
+ {
+ rootView.setView(view);
+ view.setParent(rootView);
+ }
}
diff --git a/libjava/javax/swing/plaf/basic/BasicToolBarUI.java b/libjava/javax/swing/plaf/basic/BasicToolBarUI.java
index 9e935a2766d..4fb142b1c9e 100644
--- a/libjava/javax/swing/plaf/basic/BasicToolBarUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicToolBarUI.java
@@ -37,304 +37,1401 @@ exception statement from your version. */
package javax.swing.plaf.basic;
+import java.awt.BorderLayout;
+import java.awt.Color;
import java.awt.Component;
import java.awt.ComponentOrientation;
import java.awt.Container;
-import java.awt.Color;
import java.awt.Dimension;
+import java.awt.Graphics;
import java.awt.GridLayout;
+import java.awt.Insets;
import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Window;
+import java.awt.event.ContainerEvent;
+import java.awt.event.ContainerListener;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowListener;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import java.util.Enumeration;
-import javax.swing.JFrame;
+import java.util.Hashtable;
import javax.swing.JButton;
import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JFrame;
import javax.swing.JToolBar;
import javax.swing.RootPaneContainer;
+import javax.swing.SwingConstants;
+import javax.swing.SwingUtilities;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.event.MouseInputListener;
-
-import java.beans.PropertyChangeListener;
-import java.awt.event.ContainerListener;
-import java.awt.event.FocusListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.WindowListener;
-
+import javax.swing.plaf.BorderUIResource;
+import javax.swing.plaf.BorderUIResource.EtchedBorderUIResource;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.ToolBarUI;
+import javax.swing.plaf.UIResource;
-public class BasicToolBarUI extends ToolBarUI
+
+/**
+ * This is the Basic Look and Feel UI class for JToolBar.
+ */
+public class BasicToolBarUI extends ToolBarUI implements SwingConstants
{
+ /** Static owner of all DragWindows. */
+ private static JFrame owner = new JFrame();
+
+ /** The border used when the JToolBar is in nonrollover mode. */
+ private static Border nonRolloverBorder;
- public class DragWindow
- {}
+ /** The border used when the JToolBar is in rollover mode. */
+ private static Border rolloverBorder;
+ /** The last known BorderLayout constraint before floating. */
protected String constraintBeforeFloating;
+
+ /** The last known orientation of the JToolBar before floating. */
+ private int lastGoodOrientation;
+
+ /** The color of the border when it is dockable. */
protected Color dockingBorderColor;
+
+ /** The background color of the JToolBar when it is dockable. */
protected Color dockingColor;
+
+ /** The docking listener responsible for mouse events on the JToolBar. */
protected MouseInputListener dockingListener;
- //protected KeyStroke downKey
- // Deprecated. As of Java 2 platform v1.3.
+
+ /** The window used for dragging the JToolBar. */
protected BasicToolBarUI.DragWindow dragWindow;
+
+ /** The color of the border when it is not dockable. */
protected Color floatingBorderColor;
+
+ /** The background color of the JToolBar when it is not dockable. */
protected Color floatingColor;
+
+ /** The index of the focused component. */
protected int focusedCompIndex;
- //protected KeyStroke leftKey;
- // Deprecated. As of Java 2 platform v1.3.
+
+ /** The PropertyChangeListener for the JToolBar. */
protected PropertyChangeListener propertyListener;
- //protected KeyStroke rightKey;
- // Deprecated. As of Java 2 platform v1.3.
+
+ /** The JToolBar this UI delegate is responsible for. */
protected JToolBar toolBar;
+
+ /** The Container listener for the JToolBar. */
protected ContainerListener toolBarContListener;
- protected FocusListener toolBarFocusListener;
- // protected KeyStroke upKey;
- // Deprecated. As of Java 2 platform v1.3.
- private Dimension maximumSize;
- private Dimension minimumSize;
- private Dimension preferredSize;
- private boolean floating;
- private boolean rolloverBorders;
+ /** The Focus listener for the JToolBar. */
+ protected FocusListener toolBarFocusListener;
+
+ /**
+ * The floating window that is responsible for holding the JToolBar when it
+ * is dragged outside of its original parent.
+ */
+ private transient Window floatFrame;
+
+ /** The original parent of the JToolBar. */
+ private transient Container origParent;
+
+ /** A hashtable of components and their original borders. */
+ private transient Hashtable borders;
+
+ /** A window listener for the floatable frame. */
+ private transient WindowListener windowListener;
- BasicToolBarUI(JToolBar b)
+ /** A set of cached bounds of the JToolBar. */
+ private transient Dimension cachedBounds;
+
+ /** The cached orientation of the JToolBar. */
+ private transient int cachedOrientation;
+
+ /**
+ * This method creates a new BasicToolBarUI object for the given JToolBar.
+ *
+ * @param b The JToolBar to represent with this UI.
+ */
+ public BasicToolBarUI(JToolBar b)
{
super();
}
- /* Can Component c dock at Point p? */
- boolean canDock(Component c, Point p)
+ /**
+ * This method returns whether the JToolBar can dock at the given position.
+ *
+ * @param c The component to try to dock in.
+ * @param p The position of the mouse cursor relative to the given
+ * component.
+ *
+ * @return Whether the JToolBar can dock.
+ */
+ protected boolean canDock(Component c, Point p)
{
+ if (areaOfClick(c, p) != -1)
+ return true;
+
return false;
}
+ /**
+ * This helper method returns the position of the JToolBar if it can dock.
+ *
+ * @param c The component to try to dock in.
+ * @param p The position of the mouse cursor relative to the given
+ * component.
+ *
+ * @return One of the SwingConstants directions or -1 if the JToolBar can't
+ * dock.
+ */
+ private int areaOfClick(Component c, Point p)
+ {
+ // Has to dock in immediate parent, not eventual root container.
+ Rectangle pBounds = c.getBounds();
+
+ // XXX: In Sun's implementation, the space the toolbar has to dock is dependent on the size it had last.
+ Dimension d = toolBar.getSize();
+ int limit = Math.min(d.width, d.height);
+
+ // The order of checking is 1. top 2. bottom 3. left 4. right
+ if (! pBounds.contains(p))
+ return -1;
+
+ if (p.y < limit)
+ return SwingConstants.NORTH;
+
+ if (p.y > (pBounds.height - limit))
+ return SwingConstants.SOUTH;
+
+ if (p.x < limit)
+ return SwingConstants.WEST;
+
+ if (p.x > (pBounds.width - limit))
+ return SwingConstants.EAST;
+
+ return -1;
+ }
+
+ /**
+ * This method creates a new DockingListener for the JToolBar.
+ *
+ * @return A new DockingListener for the JToolBar.
+ */
protected MouseInputListener createDockingListener()
{
- return null;
+ return new DockingListener(toolBar);
}
+ /**
+ * This method creates a new DragWindow for the given JToolBar.
+ *
+ * @param toolbar The JToolBar to create a DragWindow for.
+ *
+ * @return A new DragWindow.
+ */
protected BasicToolBarUI.DragWindow createDragWindow(JToolBar toolbar)
{
- return null;
+ return new DragWindow();
}
+ /**
+ * This method creates a new floating frame for the JToolBar. By default,
+ * this UI uses createFloatingWindow instead. This method of creating a
+ * floating frame is deprecated.
+ *
+ * @param toolbar The JToolBar to create a floating frame for.
+ *
+ * @return A new floating frame.
+ */
protected JFrame createFloatingFrame(JToolBar toolbar)
{
+ // FIXME: Though deprecated, this should still work.
return null;
}
+ /**
+ * This method creates a new floating window for the JToolBar. This is the
+ * method used by default to create a floating container for the JToolBar.
+ *
+ * @param toolbar The JToolBar to create a floating window for.
+ *
+ * @return A new floating window.
+ */
protected RootPaneContainer createFloatingWindow(JToolBar toolbar)
{
- return null;
+ // This one is used by default though.
+ return new ToolBarDialog();
}
+ /**
+ * This method creates a new WindowListener for the JToolBar.
+ *
+ * @return A new WindowListener.
+ */
protected WindowListener createFrameListener()
{
- return null;
+ return new FrameListener();
}
+ /**
+ * This method creates a new nonRolloverBorder for JButtons when the
+ * JToolBar's rollover property is set to false.
+ *
+ * @return A new NonRolloverBorder.
+ */
protected Border createNonRolloverBorder()
{
- return null;
+ return new EtchedBorderUIResource();
}
+ /**
+ * This method creates a new PropertyChangeListener for the JToolBar.
+ *
+ * @return A new PropertyChangeListener.
+ */
protected PropertyChangeListener createPropertyListener()
{
- return null;
+ return new PropertyListener();
}
+ /**
+ * This method creates a new rollover border for JButtons when the
+ * JToolBar's rollover property is set to true.
+ *
+ * @return A new rollover border.
+ */
protected Border createRolloverBorder()
{
- return null;
+ return new EtchedBorderUIResource()
+ {
+ public void paintBorder(Component c, Graphics g, int x, int y,
+ int width, int height)
+ {
+ if (c instanceof JButton)
+ {
+ if (((JButton) c).getModel().isRollover())
+ super.paintBorder(c, g, x, y, width, height);
+ }
+ }
+ };
}
+ /**
+ * This method creates a new Container listener for the JToolBar.
+ *
+ * @return A new Container listener.
+ */
protected ContainerListener createToolBarContListener()
{
- return null;
+ return new ToolBarContListener();
}
+ /**
+ * This method creates a new FocusListener for the JToolBar.
+ *
+ * @return A new FocusListener for the JToolBar.
+ */
protected FocusListener createToolBarFocusListener()
{
- return null;
+ return new ToolBarFocusListener();
}
+ /**
+ * This method creates a new UI delegate for the given JComponent.
+ *
+ * @param c The JComponent to create a UI delegate for.
+ *
+ * @return A new UI delegate.
+ */
public static ComponentUI createUI(JComponent c)
{
return new BasicToolBarUI((JToolBar) c);
}
+ /**
+ * This method is called to drag the DragWindow around when the JToolBar is
+ * being dragged around.
+ *
+ * @param position The mouse cursor coordinates relative to the JToolBar.
+ * @param origin The screen position of the JToolBar.
+ */
protected void dragTo(Point position, Point origin)
{
+ int loc = areaOfClick(origParent,
+ SwingUtilities.convertPoint(toolBar, position,
+ origParent));
+
+ if (loc != -1)
+ {
+ dragWindow.setBorderColor(dockingBorderColor);
+ dragWindow.setBackground(dockingColor);
+ }
+ else
+ {
+ dragWindow.setBorderColor(floatingBorderColor);
+ dragWindow.setBackground(floatingColor);
+ }
+
+ int w = 0;
+ int h = 0;
+
+ boolean tmp = ((loc == SwingConstants.NORTH)
+ || (loc == SwingConstants.SOUTH) || (loc == -1));
+
+ if (((cachedOrientation == SwingConstants.HORIZONTAL) && tmp)
+ || ((cachedOrientation == VERTICAL) && ! tmp))
+ {
+ w = cachedBounds.width;
+ h = cachedBounds.height;
+ }
+ else
+ {
+ w = cachedBounds.height;
+ h = cachedBounds.width;
}
+ Point p = dragWindow.getOffset();
+ Insets insets = toolBar.getInsets();
+
+ dragWindow.setBounds((origin.x + position.x) - p.x
+ - ((insets.left + insets.right) / 2),
+ (origin.y + position.y) - p.y
+ - ((insets.top + insets.bottom) / 2), w, h);
+
+ if (! dragWindow.isVisible())
+ dragWindow.show();
+ }
+
+ /**
+ * This method is used at the end of a drag session to place the frame in
+ * either its original parent as a docked JToolBar or in its floating
+ * frame.
+ *
+ * @param position The position of the mouse cursor relative to the
+ * JToolBar.
+ * @param origin The screen position of the JToolBar before the drag session
+ * started.
+ */
protected void floatAt(Point position, Point origin)
{
+ Point p = new Point(position);
+ int aoc = areaOfClick(origParent,
+ SwingUtilities.convertPoint(toolBar, p, origParent));
+
+ Container oldParent = toolBar.getParent();
+
+ oldParent.remove(toolBar);
+ oldParent.doLayout();
+ oldParent.repaint();
+
+ Container newParent;
+
+ if (aoc == -1)
+ newParent = ((RootPaneContainer) floatFrame).getContentPane();
+ else
+ {
+ floatFrame.hide();
+ newParent = origParent;
}
- /* Return the Color which is displayed when over a docking area */
- Color getDockingColor()
+ String constraint;
+ switch (aoc)
+ {
+ case SwingConstants.EAST:
+ constraint = BorderLayout.EAST;
+ break;
+ case SwingConstants.NORTH:
+ constraint = BorderLayout.NORTH;
+ break;
+ case SwingConstants.SOUTH:
+ constraint = BorderLayout.SOUTH;
+ break;
+ case SwingConstants.WEST:
+ constraint = BorderLayout.WEST;
+ break;
+ default:
+ constraint = BorderLayout.CENTER;
+ break;
+ }
+
+ int newOrientation = SwingConstants.HORIZONTAL;
+ if ((aoc != -1)
+ && ((aoc == SwingConstants.EAST) || (aoc == SwingConstants.WEST)))
+ newOrientation = SwingConstants.VERTICAL;
+
+ if (aoc != -1)
+ {
+ constraintBeforeFloating = constraint;
+ lastGoodOrientation = newOrientation;
+ }
+
+ newParent.add(toolBar, constraint);
+
+ setFloating(aoc == -1, null);
+ toolBar.setOrientation(newOrientation);
+
+ Insets insets = floatFrame.getInsets();
+ Dimension dims = toolBar.getPreferredSize();
+ p = dragWindow.getOffset();
+ setFloatingLocation((position.x + origin.x) - p.x
+ - ((insets.left + insets.right) / 2),
+ (position.y + origin.y) - p.y
+ - ((insets.top + insets.bottom) / 2));
+
+ if (aoc == -1)
+ {
+ floatFrame.pack();
+ floatFrame.setSize(dims.width + insets.left + insets.right,
+ dims.height + insets.top + insets.bottom);
+ floatFrame.show();
+ }
+
+ newParent.invalidate();
+ newParent.validate();
+ newParent.repaint();
+ }
+
+ /**
+ * This method returns the docking color.
+ *
+ * @return The docking color.
+ */
+ public Color getDockingColor()
{
return dockingColor;
}
- /* Return the Color which is displayed when over a floating area */
- Color getFloatingColor()
+ /**
+ * This method returns the Color which is displayed when over a floating
+ * area.
+ *
+ * @return The color which is displayed when over a floating area.
+ */
+ public Color getFloatingColor()
{
return floatingColor;
}
- /* See ComponentUI */
+ /**
+ * This method returns the maximum size of the given JComponent for this UI.
+ *
+ * @param c The JComponent to find the maximum size for.
+ *
+ * @return The maximum size for this UI.
+ */
public Dimension getMaximumSize(JComponent c)
{
- return null;
+ return getPreferredSize(c);
}
- /* See ComponentUI */
+ /**
+ * This method returns the minimum size of the given JComponent for this UI.
+ *
+ * @param c The JComponent to find a minimum size for.
+ *
+ * @return The minimum size for this UI.
+ */
public Dimension getMinimumSize(JComponent c)
{
- return null;
+ return getPreferredSize(c);
}
- /* See ComponentUI */
+ /**
+ * This method returns the preferred size of the given JComponent for this
+ * UI.
+ *
+ * @param c The JComponent to find a preferred size for.
+ *
+ * @return The preferred size for this UI.
+ */
public Dimension getPreferredSize(JComponent c)
{
- return null;
+ return toolBar.getLayout().preferredLayoutSize(c);
}
+ /**
+ * This method installs the needed components for the JToolBar.
+ */
protected void installComponents()
{
+ floatFrame = (Window) createFloatingWindow(toolBar);
+
+ dragWindow = createDragWindow(toolBar);
+
+ cachedBounds = toolBar.getPreferredSize();
+ cachedOrientation = toolBar.getOrientation();
+
+ nonRolloverBorder = createNonRolloverBorder();
+ rolloverBorder = createRolloverBorder();
+
+ borders = new Hashtable();
+
+ fillHashtable();
}
+ /**
+ * This method installs the defaults as specified by the look and feel.
+ */
protected void installDefaults()
{
+ UIDefaults defaults = UIManager.getLookAndFeelDefaults();
+
+ toolBar.setBorder(new ToolBarBorder());
+ toolBar.setBackground(defaults.getColor("ToolBar.background"));
+ toolBar.setForeground(defaults.getColor("ToolBar.foreground"));
+ toolBar.setFont(defaults.getFont("ToolBar.font"));
+
+ dockingBorderColor = defaults.getColor("ToolBar.dockingForeground");
+ dockingColor = defaults.getColor("ToolBar.dockingBackground");
+
+ floatingBorderColor = defaults.getColor("ToolBar.floatingForeground");
+ floatingColor = defaults.getColor("ToolBar.floatingBackground");
}
+ /**
+ * This method installs the keyboard actions for the JToolBar as specified
+ * by the look and feel.
+ */
protected void installKeyboardActions()
{
+ // FIXME: implement.
}
+ /**
+ * This method installs listeners for the JToolBar.
+ *
+ * @param toolbar The JToolBar to register listeners for.
+ */
protected void installListeners(JToolBar toolbar)
{
- toolbar.addMouseListener(new MouseAdapter() {
- public void mouseClicked(MouseEvent event) {
- System.err.println("toolbar clicked");
- }
- } );
- }
+ dockingListener = createDockingListener();
+ toolBar.addMouseListener(dockingListener);
+ toolBar.addMouseMotionListener(dockingListener);
- /* Call setBorderToNonRollover for each child component of c */
+ propertyListener = createPropertyListener();
+ toolBar.addPropertyChangeListener(propertyListener);
+
+ toolBarContListener = createToolBarContListener();
+ toolBar.addContainerListener(toolBarContListener);
+
+ windowListener = createFrameListener();
+ floatFrame.addWindowListener(windowListener);
+
+ toolBarFocusListener = createToolBarFocusListener();
+ toolBar.addFocusListener(toolBarFocusListener);
+ }
+
+ /**
+ * This method installs non rollover borders for each component inside the
+ * given JComponent.
+ *
+ * @param c The JComponent whose children need to have non rollover borders
+ * installed.
+ */
protected void installNonRolloverBorders(JComponent c)
{
+ Component[] components = toolBar.getComponents();
+
+ for (int i = 0; i < components.length; i++)
+ setBorderToNonRollover(components[i]);
}
- /* Call setBorderToNormal for each child component of c */
+ /**
+ * This method installs normal (or their original) borders for each
+ * component inside the given JComponent.
+ *
+ * @param c The JComponent whose children need to have their original
+ * borders installed.
+ */
protected void installNormalBorders(JComponent c)
{
+ Component[] components = toolBar.getComponents();
+
+ for (int i = 0; i < components.length; i++)
+ setBorderToNormal(components[i]);
}
- /* Call setBorderToRollover for each child component of c */
+ /**
+ * This method install rollover borders for each component inside the given
+ * JComponent.
+ *
+ * @param c The JComponent whose children need to have rollover borders
+ * installed.
+ */
protected void installRolloverBorders(JComponent c)
{
+ Component[] components = toolBar.getComponents();
+
+ for (int i = 0; i < components.length; i++)
+ setBorderToRollover(components[i]);
}
+ /**
+ * This method fills the borders hashtable with a list of components that
+ * are JButtons and their borders.
+ */
+ private void fillHashtable()
+ {
+ Component[] c = toolBar.getComponents();
+
+ for (int i = 0; i < c.length; i++)
+ {
+ if (c[i] instanceof JButton)
+ {
+ // Don't really care about anything other than JButtons
+ JButton b = (JButton) c[i];
+
+ if (b.getBorder() != null)
+ borders.put(b, b.getBorder());
+ }
+ }
+ }
+
+ /**
+ * This method installs the UI for the given JComponent.
+ *
+ * @param c The JComponent to install a UI for.
+ */
public void installUI(JComponent c)
{
super.installUI(c);
+
if (c instanceof JToolBar)
{
toolBar = (JToolBar) c;
toolBar.setOpaque(true);
- switch (toolBar.getOrientation()) {
- case 0: toolBar.setLayout(new GridLayout(1, 0, 4, 4));
- break;
- case 1: toolBar.setLayout(new GridLayout(0, 1, 4, 4));
- break;
- }
+ installDefaults();
+ installComponents();
installListeners(toolBar);
+ installKeyboardActions();
}
}
- boolean isFloating()
+ /**
+ * This method returns whether the JToolBar is floating.
+ *
+ * @return Whether the JToolBar is floating.
+ */
+ public boolean isFloating()
{
- return false;
+ return floatFrame.isVisible();
}
- boolean isRolloverBorders()
+ /**
+ * This method returns whether rollover borders have been set.
+ *
+ * @return Whether rollover borders have been set.
+ */
+ public boolean isRolloverBorders()
{
- return false;
+ return toolBar.isRollover();
}
+ /**
+ * This method navigates in the given direction giving focus to the next
+ * component in the given direction.
+ *
+ * @param direction The direction to give focus to.
+ */
protected void navigateFocusedComp(int direction)
{
+ // FIXME: Implement.
}
- /* Make Component c have a non-rollover border (created by
- createNonRolloverBorder). */
+ /**
+ * This method sets the border of the given component to a non rollover
+ * border.
+ *
+ * @param c The Component whose border needs to be set.
+ */
protected void setBorderToNonRollover(Component c)
{
+ if (c instanceof JButton)
+ {
+ JButton b = (JButton) c;
+ b.setRolloverEnabled(false);
+ b.setBorder(nonRolloverBorder);
+ }
}
- /* Make Component c have the border that it originally had before being
- added to the toolbar. */
+ /**
+ * This method sets the border of the given component to its original value.
+ *
+ * @param c The Component whose border needs to be set.
+ */
protected void setBorderToNormal(Component c)
{
+ if (c instanceof JButton)
+ {
+ JButton b = (JButton) c;
+ Border border = (Border) borders.get(b);
+ b.setBorder(border);
+ }
}
- /* Make Component c have a rollover border (created by
- createRolloverBorder). */
+ /**
+ * This method sets the border of the given component to a rollover border.
+ *
+ * @param c The Component whose border needs to be set.
+ */
protected void setBorderToRollover(Component c)
{
+ if (c instanceof JButton)
+ {
+ JButton b = (JButton) c;
+ b.setRolloverEnabled(true);
+ b.setBorder(rolloverBorder);
+ }
}
- /* Display in Color c when over a docking area */
- void setDockingColor(Color c)
+ /**
+ * This method sets the docking color.
+ *
+ * @param c The docking color.
+ */
+ public void setDockingColor(Color c)
{
dockingColor = c;
}
- void setFloating(boolean b, Point p)
+ /**
+ * This method sets the floating property for the JToolBar.
+ *
+ * @param b Whether the JToolBar is floating.
+ * @param p FIXME
+ */
+ public void setFloating(boolean b, Point p)
+ {
+ // FIXME: use p for something. It's not location
+ // since we already have setFloatingLocation.
+ floatFrame.setVisible(b);
+ }
+
+ /**
+ * This method sets the color displayed when the JToolBar is not in a
+ * dockable area.
+ *
+ * @param c The floating color.
+ */
+ public void setFloatingColor(Color c)
{
+ floatingColor = c;
}
- /* Display in Color c when over a floating area */
- void setFloatingColor(Color c)
+ /**
+ * This method sets the floating location of the JToolBar.
+ *
+ * @param x The x coordinate for the floating frame.
+ * @param y The y coordinate for the floating frame.
+ */
+ public void setFloatingLocation(int x, int y)
+ {
+ // x,y are the coordinates of the new JFrame created to store the toolbar
+ // XXX: The floating location is bogus is not floating.
+ floatFrame.setLocation(x, y);
+ floatFrame.invalidate();
+ floatFrame.validate();
+ floatFrame.repaint();
+ }
+
+ /**
+ * This is a convenience method for changing the orientation of the
+ * JToolBar.
+ *
+ * @param orientation The new orientation.
+ */
+ public void setOrientation(int orientation)
+ {
+ toolBar.setOrientation(orientation);
+ }
+
+ /**
+ * This method changes the child components to have rollover borders if the
+ * given parameter is true. Otherwise, the components are set to have non
+ * rollover borders.
+ *
+ * @param rollover Whether the children will have rollover borders.
+ */
+ public void setRolloverBorders(boolean rollover)
+ {
+ if (rollover)
+ installRolloverBorders(toolBar);
+ else
+ installNonRolloverBorders(toolBar);
+ }
+
+ /**
+ * This method uninstall UI installed components from the JToolBar.
+ */
+ protected void uninstallComponents()
{
- floatingColor = c;
+ installNormalBorders(toolBar);
+ borders = null;
+ rolloverBorder = null;
+ nonRolloverBorder = null;
+ cachedBounds = null;
+
+ floatFrame = null;
+ dragWindow = null;
+ }
+
+ /**
+ * This method removes the defaults installed by the Look and Feel.
+ */
+ protected void uninstallDefaults()
+ {
+ toolBar.setBackground(null);
+ toolBar.setForeground(null);
+ toolBar.setFont(null);
+
+ dockingBorderColor = null;
+ dockingColor = null;
+ floatingBorderColor = null;
+ floatingColor = null;
}
- void setFloatingLocation(int x, int y)
+ /**
+ * This method uninstalls keyboard actions installed by the UI.
+ */
+ protected void uninstallKeyboardActions()
{
+ // FIXME: implement.
}
- void setOrientation(int orientation)
+ /**
+ * This method uninstalls listeners installed by the UI.
+ */
+ protected void uninstallListeners()
{
+ toolBar.removeFocusListener(toolBarFocusListener);
+ toolBarFocusListener = null;
+
+ floatFrame.removeWindowListener(windowListener);
+ windowListener = null;
+
+ toolBar.removeContainerListener(toolBarContListener);
+ toolBarContListener = null;
+
+ toolBar.removeMouseMotionListener(dockingListener);
+ toolBar.removeMouseListener(dockingListener);
+ dockingListener = null;
}
- /* Set flag to enable rollover borders for the toolbar */
- void setRolloverBorders(boolean rollover)
+ /**
+ * This method uninstalls the UI.
+ *
+ * @param c The JComponent that is having this UI removed.
+ */
+ public void uninstallUI(JComponent c)
+ {
+ uninstallKeyboardActions();
+ uninstallListeners();
+ uninstallComponents();
+ uninstallDefaults();
+ toolBar = null;
+ }
+
+ /**
+ * This is the MouseHandler class that allows the user to drag the JToolBar
+ * in and out of the parent and dock it if it can.
+ */
+ protected class DockingListener implements MouseInputListener
+ {
+ /** Whether the JToolBar is being dragged. */
+ protected boolean isDragging;
+
+ /**
+ * The origin point. This point is saved from the beginning press and is
+ * used until the end of the drag session.
+ */
+ protected Point origin;
+
+ /** The JToolBar being dragged. */
+ protected JToolBar toolBar;
+
+ /**
+ * Creates a new DockingListener object.
+ *
+ * @param t The JToolBar this DockingListener is being used for.
+ */
+ public DockingListener(JToolBar t)
{
- rolloverBorders = rollover;
+ toolBar = t;
}
- protected void uninstallComponents()
+ /**
+ * This method is called when the mouse is clicked.
+ *
+ * @param e The MouseEvent.
+ */
+ public void mouseClicked(MouseEvent e)
{
+ // Don't care.
}
- protected void uninstallDefaults()
+ /**
+ * This method is called when the mouse is dragged. It delegates the drag
+ * painting to the dragTo method.
+ *
+ * @param e The MouseEvent.
+ */
+ public void mouseDragged(MouseEvent e)
{
+ if (isDragging)
+ dragTo(e.getPoint(), origin);
}
- protected void uninstallKeyboardActions()
+ /**
+ * This method is called when the mouse enters the JToolBar.
+ *
+ * @param e The MouseEvent.
+ */
+ public void mouseEntered(MouseEvent e)
{
+ // Don't care (yet).
}
- protected void uninstallListeners()
+ /**
+ * This method is called when the mouse exits the JToolBar.
+ *
+ * @param e The MouseEvent.
+ */
+ public void mouseExited(MouseEvent e)
{
+ // Don't care (yet).
}
- public void uninstallUI(JComponent c)
+ /**
+ * This method is called when the mouse is moved in the JToolBar.
+ *
+ * @param e The MouseEvent.
+ */
+ public void mouseMoved(MouseEvent e)
+ {
+ }
+
+ /**
+ * This method is called when the mouse is pressed in the JToolBar. If the
+ * press doesn't occur in a place where it causes the JToolBar to be
+ * dragged, it returns. Otherwise, it starts a drag session.
+ *
+ * @param e The MouseEvent.
+ */
+ public void mousePressed(MouseEvent e)
+ {
+ if (! toolBar.isFloatable())
+ return;
+
+ Point ssd = e.getPoint();
+ Insets insets = toolBar.getInsets();
+
+ // Verify that this click occurs in the top inset.
+ if (toolBar.getOrientation() == SwingConstants.HORIZONTAL)
+ {
+ if (e.getX() > insets.left)
+ return;
+ }
+ else
+ {
+ if (e.getY() > insets.top)
+ return;
+ }
+
+ origin = new Point(0, 0);
+ SwingUtilities.convertPointToScreen(ssd, toolBar);
+
+ if (! (SwingUtilities.getAncestorOfClass(Window.class, toolBar) instanceof UIResource))
+ // Need to know who keeps the toolBar if it gets dragged back into it.
+ origParent = toolBar.getParent();
+
+ SwingUtilities.convertPointToScreen(origin, toolBar);
+
+ isDragging = true;
+
+ if (dragWindow != null)
+ dragWindow.setOffset(new Point(e.getX(), e.getY()));
+
+ dragTo(e.getPoint(), origin);
+ }
+
+ /**
+ * This method is called when the mouse is released from the JToolBar.
+ *
+ * @param e The MouseEvent.
+ */
+ public void mouseReleased(MouseEvent e)
+ {
+ if (! isDragging || ! toolBar.isFloatable())
+ return;
+
+ isDragging = false;
+ floatAt(e.getPoint(), origin);
+ dragWindow.hide();
+ }
+ }
+
+ /**
+ * This is the window that appears when the JToolBar is being dragged
+ * around.
+ */
+ protected class DragWindow extends Window
+ {
+ /**
+ * The current border color. It changes depending on whether the JToolBar
+ * is over a place that allows it to dock.
+ */
+ private Color borderColor;
+
+ /** The between the mouse and the top left corner of the window. */
+ private Point offset;
+
+ /**
+ * Creates a new DragWindow object.
+ */
+ private DragWindow()
+ {
+ super(owner);
+ }
+
+ /**
+ * The color that the border should be.
+ *
+ * @return The border color.
+ */
+ public Color getBorderColor()
+ {
+ if (borderColor == null)
+ return Color.BLACK;
+
+ return borderColor;
+ }
+
+ /**
+ * This method returns the insets for the DragWindow.
+ *
+ * @return The insets for the DragWindow.
+ */
+ public Insets getInsets()
+ {
+ // This window has no decorations, so insets are empty.
+ return new Insets(0, 0, 0, 0);
+ }
+
+ /**
+ * This method returns the mouse offset from the top left corner of the
+ * DragWindow.
+ *
+ * @return The mouse offset.
+ */
+ public Point getOffset()
+ {
+ return offset;
+ }
+
+ /**
+ * This method paints the DragWindow.
+ *
+ * @param g The Graphics object to paint with.
+ */
+ public void paint(Graphics g)
+ {
+ // No visiting children necessary.
+ Color saved = g.getColor();
+ Rectangle b = getBounds();
+
+ g.setColor(getBorderColor());
+ g.drawRect(0, 0, b.width - 1, b.height - 1);
+
+ g.setColor(saved);
+ }
+
+ /**
+ * This method changes the border color.
+ *
+ * @param c The new border color.
+ */
+ public void setBorderColor(Color c)
+ {
+ borderColor = c;
+ }
+
+ /**
+ * This method changes the mouse offset.
+ *
+ * @param p The new mouse offset.
+ */
+ public void setOffset(Point p)
{
+ offset = p;
}
+ /**
+ * FIXME: Do something.
+ *
+ * @param o DOCUMENT ME!
+ */
+ public void setOrientation(int o)
+ {
+ // FIXME: implement.
+ }
+ }
+
+ /**
+ * This helper class listens for Window events from the floatable window and
+ * if it is closed, returns the JToolBar to the last known good location.
+ */
+ protected class FrameListener extends WindowAdapter
+ {
+ /**
+ * This method is called when the floating window is closed.
+ *
+ * @param e The WindowEvent.
+ */
+ public void windowClosing(WindowEvent e)
+ {
+ Container parent = toolBar.getParent();
+ parent.remove(toolBar);
+
+ if (origParent != null)
+ {
+ origParent.add(toolBar,
+ (constraintBeforeFloating != null)
+ ? constraintBeforeFloating : BorderLayout.NORTH);
+ toolBar.setOrientation(lastGoodOrientation);
+ }
+
+ origParent.invalidate();
+ origParent.validate();
+ origParent.repaint();
+ }
+ }
+
+ /**
+ * This helper class listens for PropertyChangeEvents from the JToolBar.
+ */
+ protected class PropertyListener implements PropertyChangeListener
+ {
+ /**
+ * This method is called when a property from the JToolBar is changed.
+ *
+ * @param e The PropertyChangeEvent.
+ */
+ public void propertyChange(PropertyChangeEvent e)
+ {
+ // FIXME: need name properties so can change floatFrame title.
+ if (e.getPropertyName().equals(JToolBar.ROLLOVER_CHANGED_PROPERTY))
+ setRolloverBorders(toolBar.isRollover());
+ }
+ }
+
+ /**
+ * This helper class listens for components added to and removed from the
+ * JToolBar.
+ */
+ protected class ToolBarContListener implements ContainerListener
+ {
+ /**
+ * This method is responsible for setting rollover or non rollover for new
+ * buttons added to the JToolBar.
+ *
+ * @param e The ContainerEvent.
+ */
+ public void componentAdded(ContainerEvent e)
+ {
+ if (e.getChild() instanceof JButton)
+ {
+ JButton b = (JButton) e.getChild();
+
+ if (b.getBorder() != null)
+ borders.put(b, b.getBorder());
+ }
+
+ if (isRolloverBorders())
+ setBorderToRollover(e.getChild());
+ else
+ setBorderToNonRollover(e.getChild());
+
+ cachedBounds = toolBar.getPreferredSize();
+ cachedOrientation = toolBar.getOrientation();
+ }
+
+ /**
+ * This method is responsible for giving the child components their
+ * original borders when they are removed.
+ *
+ * @param e The ContainerEvent.
+ */
+ public void componentRemoved(ContainerEvent e)
+ {
+ setBorderToNormal(e.getChild());
+ cachedBounds = toolBar.getPreferredSize();
+ cachedOrientation = toolBar.getOrientation();
+ }
+ }
+
+ /**
+ * This is the floating window that is returned when getFloatingWindow is
+ * called.
+ */
+ private class ToolBarDialog extends JDialog implements UIResource
+ {
+ /**
+ * Creates a new ToolBarDialog object with the name given by the JToolBar.
+ */
+ public ToolBarDialog()
+ {
+ super();
+ setName((toolBar.getName() != null) ? toolBar.getName() : "");
+ }
+ }
+
+ /**
+ * DOCUMENT ME!
+ */
+ protected class ToolBarFocusListener implements FocusListener
+ {
+ /**
+ * Creates a new ToolBarFocusListener object.
+ */
+ protected ToolBarFocusListener()
+ {
+ // FIXME: implement.
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param e DOCUMENT ME!
+ */
+ public void focusGained(FocusEvent e)
+ {
+ // FIXME: implement.
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param e DOCUMENT ME!
+ */
+ public void focusLost(FocusEvent e)
+ {
+ // FIXME: implement.
+ }
+ }
+
+ /**
+ * This helper class acts as the border for the JToolBar.
+ */
+ private static class ToolBarBorder implements Border
+ {
+ /** The size of the larger, draggable side of the border. */
+ private static int offset = 10;
+
+ /** The other sides. */
+ private static int regular = 2;
+
+ /**
+ * This method returns the border insets for the JToolBar.
+ *
+ * @param c The Component to find insets for.
+ *
+ * @return The border insets.
+ */
+ public Insets getBorderInsets(Component c)
+ {
+ if (c instanceof JToolBar)
+ {
+ JToolBar tb = (JToolBar) c;
+ int orientation = tb.getOrientation();
+
+ if (! tb.isFloatable())
+ return new Insets(regular, regular, regular, regular);
+ else if (orientation == SwingConstants.HORIZONTAL)
+ return new Insets(regular, offset, regular, regular);
+ else
+ return new Insets(offset, regular, regular, regular);
+ }
+
+ return new Insets(0, 0, 0, 0);
+ }
+
+ /**
+ * This method returns whether the border is opaque.
+ *
+ * @return Whether the border is opaque.
+ */
+ public boolean isBorderOpaque()
+ {
+ return false;
+ }
+
+ /**
+ * This method paints the ribbed area of the border.
+ *
+ * @param g The Graphics object to paint with.
+ * @param x The x coordinate of the area.
+ * @param y The y coordinate of the area.
+ * @param w The width of the area.
+ * @param h The height of the area.
+ * @param size The size of the bump.
+ * @param c The color of the bumps.
+ */
+ private void paintBumps(Graphics g, int x, int y, int w, int h, int size,
+ Color c)
+ {
+ Color saved = g.getColor();
+ g.setColor(c);
+
+ int hgap = 2 * size;
+ int vgap = 4 * size;
+ int count = 0;
+
+ for (int i = x; i < (w + x); i += hgap)
+ for (int j = ((count++ % 2) == 0) ? y : (y + (2 * size)); j < (h + y);
+ j += vgap)
+ g.fillRect(i, j, size, size);
+
+ g.setColor(saved);
+ }
+
+ /**
+ * This method paints the border around the given Component.
+ *
+ * @param c The Component whose border is being painted.
+ * @param g The Graphics object to paint with.
+ * @param x The x coordinate of the component.
+ * @param y The y coordinate of the component.
+ * @param width The width of the component.
+ * @param height The height of the component.
+ */
+ public void paintBorder(Component c, Graphics g, int x, int y, int width,
+ int height)
+ {
+ if (c instanceof JToolBar)
+ {
+ JToolBar tb = (JToolBar) c;
+
+ int orientation = tb.getOrientation();
+
+ if (orientation == SwingConstants.HORIZONTAL)
+ {
+ paintBumps(g, x, y, offset, height, 1, Color.WHITE);
+ paintBumps(g, x + 1, y + 1, offset - 1, height - 1, 1, Color.GRAY);
+ }
+ else
+ {
+ paintBumps(g, x, y, width, offset, 1, Color.WHITE);
+ paintBumps(g, x + 1, y + 1, width - 1, offset - 1, 1, Color.GRAY);
+ }
+ }
+ }
+ }
}
diff --git a/libjava/javax/swing/plaf/basic/BasicViewportUI.java b/libjava/javax/swing/plaf/basic/BasicViewportUI.java
index 715c11a6845..feefacaae9b 100644
--- a/libjava/javax/swing/plaf/basic/BasicViewportUI.java
+++ b/libjava/javax/swing/plaf/basic/BasicViewportUI.java
@@ -173,6 +173,7 @@ public class BasicViewportUI extends ViewportUI
g.clearRect(0, 0, portBounds.width, portBounds.height);
}
+ g2.setClip(g.getClipBounds());
g2.translate(-pos.x, -pos.y);
try
{
diff --git a/libjava/javax/swing/table/DefaultTableColumnModel.java b/libjava/javax/swing/table/DefaultTableColumnModel.java
index 2946829f99c..ea46ce5672b 100644
--- a/libjava/javax/swing/table/DefaultTableColumnModel.java
+++ b/libjava/javax/swing/table/DefaultTableColumnModel.java
@@ -35,7 +35,6 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
-
package javax.swing.table;
import java.beans.PropertyChangeEvent;
@@ -52,21 +51,18 @@ import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableColumnModelEvent;
import javax.swing.event.TableColumnModelListener;
+
/**
* DefaultTableColumnModel
* @author Andrew Selkirk
* @version 1.0
*/
public class DefaultTableColumnModel
- implements TableColumnModel, PropertyChangeListener,
- ListSelectionListener, Serializable
+ implements TableColumnModel, PropertyChangeListener, ListSelectionListener,
+ Serializable
{
static final long serialVersionUID = 6580012493508960512L;
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
/**
* tableColumns
*/
@@ -102,265 +98,283 @@ public class DefaultTableColumnModel
*/
protected int totalColumnWidth;
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
/**
* Constructor DefaultTableColumnModel
*/
- public DefaultTableColumnModel() {
+ public DefaultTableColumnModel()
+ {
// TODO
- } // DefaultTableColumnModel()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* addColumn
* @param value0 TODO
*/
- public void addColumn(TableColumn value0) {
+ public void addColumn(TableColumn value0)
+ {
// TODO
- } // addColumn()
+ }
/**
* removeColumn
* @param value0 TODO
*/
- public void removeColumn(TableColumn value0) {
+ public void removeColumn(TableColumn value0)
+ {
// TODO
- } // removeColumn()
+ }
/**
* moveColumn
* @param value0 TODO
* @param value1 TODO
*/
- public void moveColumn(int value0, int value1) {
+ public void moveColumn(int value0, int value1)
+ {
// TODO
- } // moveColumn()
+ }
/**
* setColumnMargin
* @param value0 TODO
*/
- public void setColumnMargin(int value0) {
+ public void setColumnMargin(int value0)
+ {
// TODO
- } // setColumnMargin()
+ }
/**
* getColumnCount
- * @returns int
+ * @return int
*/
- public int getColumnCount() {
+ public int getColumnCount()
+ {
return 0; // TODO
- } // getColumnCount()
+ }
/**
* getColumns
- * @returns Enumeration
+ * @return Enumeration
*/
- public Enumeration getColumns() {
+ public Enumeration getColumns()
+ {
return null; // TODO
- } // getColumns()
+ }
/**
* getColumnIndex
* @param value0 TODO
- * @returns int
+ * @return int
*/
- public int getColumnIndex(Object value0) {
+ public int getColumnIndex(Object value0)
+ {
return 0; // TODO
- } // getColumnIndex()
+ }
/**
* getColumn
* @param value0 TODO
- * @returns TableColumn
+ * @return TableColumn
*/
- public TableColumn getColumn(int value0) {
+ public TableColumn getColumn(int value0)
+ {
return null; // TODO
- } // getColumn()
+ }
/**
* getColumnMargin
- * @returns int
+ * @return int
*/
- public int getColumnMargin() {
+ public int getColumnMargin()
+ {
return 0; // TODO
- } // getColumnMargin()
+ }
/**
* getColumnIndexAtX
* @param value0 TODO
- * @returns int
+ * @return int
*/
- public int getColumnIndexAtX(int value0) {
+ public int getColumnIndexAtX(int value0)
+ {
return 0; // TODO
- } // getColumnIndexAtX()
+ }
/**
* getTotalColumnWidth
- * @returns int
+ * @return int
*/
- public int getTotalColumnWidth() {
+ public int getTotalColumnWidth()
+ {
return 0; // TODO
- } // getTotalColumnWidth()
+ }
/**
* setSelectionModel
* @param value0 TODO
*/
- public void setSelectionModel(ListSelectionModel value0) {
+ public void setSelectionModel(ListSelectionModel value0)
+ {
// TODO
- } // setSelectionModel()
+ }
/**
* getSelectionModel
- * @returns ListSelectionModel
+ * @return ListSelectionModel
*/
- public ListSelectionModel getSelectionModel() {
+ public ListSelectionModel getSelectionModel()
+ {
return null; // TODO
- } // getSelectionModel()
+ }
/**
* setColumnSelectionAllowed
* @param value0 TODO
*/
- public void setColumnSelectionAllowed(boolean value0) {
+ public void setColumnSelectionAllowed(boolean value0)
+ {
// TODO
- } // setColumnSelectionAllowed()
+ }
/**
* getColumnSelectionAllowed
- * @returns boolean
+ * @return boolean
*/
- public boolean getColumnSelectionAllowed() {
+ public boolean getColumnSelectionAllowed()
+ {
return false; // TODO
- } // getColumnSelectionAllowed()
+ }
/**
* getSelectedColumns
- * @returns int[]
+ * @return int[]
*/
- public int[] getSelectedColumns() {
+ public int[] getSelectedColumns()
+ {
return null; // TODO
- } // getSelectedColumns()
+ }
/**
* getSelectedColumnCount
- * @returns int
+ * @return int
*/
- public int getSelectedColumnCount() {
+ public int getSelectedColumnCount()
+ {
return 0; // TODO
- } // getSelectedColumnCount()
+ }
/**
* addColumnModelListener
* @param value0 TODO
*/
- public void addColumnModelListener(TableColumnModelListener value0) {
+ public void addColumnModelListener(TableColumnModelListener value0)
+ {
// TODO
- } // addColumnModelListener()
+ }
/**
* removeColumnModelListener
* @param value0 TODO
*/
- public void removeColumnModelListener(TableColumnModelListener value0) {
+ public void removeColumnModelListener(TableColumnModelListener value0)
+ {
// TODO
- } // removeColumnModelListener()
+ }
/**
* fireColumnAdded
* @param value0 TODO
*/
- protected void fireColumnAdded(TableColumnModelEvent value0) {
+ protected void fireColumnAdded(TableColumnModelEvent value0)
+ {
// TODO
- } // fireColumnAdded()
+ }
/**
* fireColumnRemoved
* @param value0 TODO
*/
- protected void fireColumnRemoved(TableColumnModelEvent value0) {
+ protected void fireColumnRemoved(TableColumnModelEvent value0)
+ {
// TODO
- } // fireColumnRemoved()
+ }
/**
* fireColumnMoved
* @param value0 TODO
*/
- protected void fireColumnMoved(TableColumnModelEvent value0) {
+ protected void fireColumnMoved(TableColumnModelEvent value0)
+ {
// TODO
- } // fireColumnMoved()
+ }
/**
* fireColumnSelectionChanged
* @param value0 TODO
*/
- protected void fireColumnSelectionChanged(ListSelectionEvent value0) {
+ protected void fireColumnSelectionChanged(ListSelectionEvent value0)
+ {
// TODO
- } // fireColumnSelectionChanged()
+ }
/**
* fireColumnMarginChanged
*/
- protected void fireColumnMarginChanged() {
+ protected void fireColumnMarginChanged()
+ {
// TODO
- } // fireColumnMarginChanged()
+ }
/**
* getListeners
* @param value0 TODO
- * @returns EventListener[]
+ * @return EventListener[]
*/
- public EventListener[] getListeners(Class value0) {
+ public EventListener[] getListeners(Class value0)
+ {
return null; // TODO
- } // getListeners()
+ }
/**
* propertyChange
* @param value0 TODO
*/
- public void propertyChange(PropertyChangeEvent value0) {
+ public void propertyChange(PropertyChangeEvent value0)
+ {
// TODO
- } // propertyChange()
+ }
/**
* valueChanged
* @param value0 TODO
*/
- public void valueChanged(ListSelectionEvent value0) {
+ public void valueChanged(ListSelectionEvent value0)
+ {
// TODO
- } // valueChanged()
+ }
/**
* createSelectionModel
- * @returns ListSelectionModel
+ * @return ListSelectionModel
*/
- protected ListSelectionModel createSelectionModel() {
+ protected ListSelectionModel createSelectionModel()
+ {
return null; // TODO
- } // createSelectionModel()
+ }
/**
* recalcWidthCache
*/
- protected void recalcWidthCache() {
+ protected void recalcWidthCache()
+ {
// TODO
- } // recalcWidthCache()
+ }
/**
* invalidateWidthCache
*/
- private void invalidateWidthCache() {
+ private void invalidateWidthCache()
+ {
// TODO
- } // invalidateWidthCache()
-
-
-} // DefaultTableColumnModel
-
+ }
+}
diff --git a/libjava/javax/swing/table/TableColumn.java b/libjava/javax/swing/table/TableColumn.java
index 73313c6c7da..39ae1bd5d0b 100644
--- a/libjava/javax/swing/table/TableColumn.java
+++ b/libjava/javax/swing/table/TableColumn.java
@@ -35,26 +35,23 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
-
package javax.swing.table;
import java.beans.PropertyChangeListener;
import java.io.Serializable;
import javax.swing.event.SwingPropertyChangeSupport;
+
/**
* TableColumn
* @author Andrew Selkirk
* @version 1.0
*/
-public class TableColumn implements Serializable
+public class TableColumn
+ implements Serializable
{
static final long serialVersionUID = -6113660025878112608L;
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
/**
* COLUMN_WIDTH_PROPERTY
*/
@@ -138,36 +135,35 @@ public class TableColumn implements Serializable
/**
* changeSupport
*/
- private SwingPropertyChangeSupport changeSupport = new SwingPropertyChangeSupport(this);
-
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
+ private SwingPropertyChangeSupport changeSupport =
+ new SwingPropertyChangeSupport(this);
/**
* Constructor TableColumn
*/
- public TableColumn() {
+ public TableColumn()
+ {
this(0, 75, null, null);
- } // TableColumn()
+ }
/**
* Constructor TableColumn
* @param modelIndex TODO
*/
- public TableColumn(int modelIndex) {
+ public TableColumn(int modelIndex)
+ {
this(modelIndex, 75, null, null);
- } // TableColumn()
+ }
/**
* Constructor TableColumn
* @param modelIndex TODO
* @param width TODO
*/
- public TableColumn(int modelIndex, int width) {
+ public TableColumn(int modelIndex, int width)
+ {
this(modelIndex, width, null, null);
- } // TableColumn()
+ }
/**
* Constructor TableColumn
@@ -177,7 +173,8 @@ public class TableColumn implements Serializable
* @param cellEditor TODO
*/
public TableColumn(int modelIndex, int width,
- TableCellRenderer cellRenderer, TableCellEditor cellEditor) {
+ TableCellRenderer cellRenderer, TableCellEditor cellEditor)
+ {
this.modelIndex = modelIndex;
this.width = width;
this.preferredWidth = width;
@@ -185,12 +182,7 @@ public class TableColumn implements Serializable
this.cellEditor = cellEditor;
this.headerValue = null;
this.identifier = null;
- } // TableColumn()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* firePropertyChange
@@ -198,9 +190,11 @@ public class TableColumn implements Serializable
* @param oldValue TODO
* @param newValue TODO
*/
- private void firePropertyChange(String property, Object oldValue, Object newValue) {
+ private void firePropertyChange(String property, Object oldValue,
+ Object newValue)
+ {
changeSupport.firePropertyChange(property, oldValue, newValue);
- } // firePropertyChange()
+ }
/**
* firePropertyChange
@@ -208,9 +202,10 @@ public class TableColumn implements Serializable
* @param oldValue TODO
* @param newValue TODO
*/
- private void firePropertyChange(String property, int oldValue, int newValue) {
+ private void firePropertyChange(String property, int oldValue, int newValue)
+ {
firePropertyChange(property, new Integer(oldValue), new Integer(newValue));
- } // firePropertyChange()
+ }
/**
* firePropertyChange
@@ -218,7 +213,8 @@ public class TableColumn implements Serializable
* @param oldValue TODO
* @param newValue TODO
*/
- private void firePropertyChange(String property, boolean oldValue, boolean newValue)
+ private void firePropertyChange(String property, boolean oldValue,
+ boolean newValue)
{
firePropertyChange(property, new Boolean(oldValue), new Boolean(newValue));
}
@@ -227,43 +223,46 @@ public class TableColumn implements Serializable
* setModelIndex
* @param modelIndex TODO
*/
- public void setModelIndex(int modelIndex) {
+ public void setModelIndex(int modelIndex)
+ {
this.modelIndex = modelIndex;
- } // setModelIndex()
+ }
/**
* getModelIndex
- * @returns int
+ * @return int
*/
- public int getModelIndex() {
+ public int getModelIndex()
+ {
return modelIndex;
- } // getModelIndex()
+ }
/**
* setIdentifier
* @param identifier TODO
*/
- public void setIdentifier(Object identifier) {
+ public void setIdentifier(Object identifier)
+ {
this.identifier = identifier;
- } // setIdentifier()
+ }
/**
* getIdentifier
- * @returns Object
+ * @return Object
*/
- public Object getIdentifier() {
- if (identifier == null) {
+ public Object getIdentifier()
+ {
+ if (identifier == null)
return getHeaderValue();
- } // if
return identifier;
- } // getIdentifier()
+ }
/**
* setHeaderValue
* @param headerValue TODO
*/
- public void setHeaderValue(Object headerValue) {
-
+ public void setHeaderValue(Object headerValue)
+ {
// Variables
Object oldValue;
@@ -274,25 +273,24 @@ public class TableColumn implements Serializable
this.headerValue = headerValue;
// Notify Listeners of change
- firePropertyChange(HEADER_VALUE_PROPERTY,
- oldValue, headerValue);
-
- } // setHeaderValue()
+ firePropertyChange(HEADER_VALUE_PROPERTY, oldValue, headerValue);
+ }
/**
* getHeaderValue
- * @returns Object
+ * @return Object
*/
- public Object getHeaderValue() {
+ public Object getHeaderValue()
+ {
return headerValue;
- } // getHeaderValue()
+ }
/**
* setHeaderRenderer
* @param headerRenderer TODO
*/
- public void setHeaderRenderer(TableCellRenderer headerRenderer) {
-
+ public void setHeaderRenderer(TableCellRenderer headerRenderer)
+ {
// Variables
TableCellRenderer oldRenderer;
@@ -303,25 +301,24 @@ public class TableColumn implements Serializable
this.headerRenderer = headerRenderer;
// Notify Listeners of change
- firePropertyChange(HEADER_RENDERER_PROPERTY,
- oldRenderer, headerRenderer);
-
- } // setHeaderRenderer()
+ firePropertyChange(HEADER_RENDERER_PROPERTY, oldRenderer, headerRenderer);
+ }
/**
* getHeaderRenderer
- * @returns TableCellRenderer
+ * @return TableCellRenderer
*/
- public TableCellRenderer getHeaderRenderer() {
+ public TableCellRenderer getHeaderRenderer()
+ {
return headerRenderer;
- } // getHeaderRenderer()
+ }
/**
* setCellRenderer
* @param cellRenderer TODO
*/
- public void setCellRenderer(TableCellRenderer cellRenderer) {
-
+ public void setCellRenderer(TableCellRenderer cellRenderer)
+ {
// Variables
TableCellRenderer oldRenderer;
@@ -332,41 +329,42 @@ public class TableColumn implements Serializable
this.cellRenderer = cellRenderer;
// Notify Listeners of change
- firePropertyChange(CELL_RENDERER_PROPERTY,
- oldRenderer, cellRenderer);
-
- } // setCellRenderer()
+ firePropertyChange(CELL_RENDERER_PROPERTY, oldRenderer, cellRenderer);
+ }
/**
* getCellRenderer
- * @returns TableCellRenderer
+ * @return TableCellRenderer
*/
- public TableCellRenderer getCellRenderer() {
+ public TableCellRenderer getCellRenderer()
+ {
return cellRenderer;
- } // getCellRenderer()
+ }
/**
* setCellEditor
* @param cellEditor TODO
*/
- public void setCellEditor(TableCellEditor cellEditor) {
+ public void setCellEditor(TableCellEditor cellEditor)
+ {
this.cellEditor = cellEditor;
- } // setCellEditor()
+ }
/**
* getCellEditor
- * @returns TableCellEditor
+ * @return TableCellEditor
*/
- public TableCellEditor getCellEditor() {
+ public TableCellEditor getCellEditor()
+ {
return cellEditor;
- } // getCellEditor()
+ }
/**
* setWidth
* @param width TODO
*/
- public void setWidth(int width) {
-
+ public void setWidth(int width)
+ {
// Variables
int oldWidth;
@@ -374,145 +372,154 @@ public class TableColumn implements Serializable
oldWidth = this.width;
// Adjust Width within Limits
- if (width < minWidth) {
+ if (width < minWidth)
this.width = minWidth;
- } else if (width > maxWidth) {
+ else if (width > maxWidth)
this.width = maxWidth;
- } else {
+ else
this.width = width;
- } // if
- // Fire Property Change
firePropertyChange(COLUMN_WIDTH_PROPERTY, oldWidth, this.width);
-
- } // setWidth()
+ }
/**
* getWidth
- * @returns int
+ * @return int
*/
- public int getWidth() {
+ public int getWidth()
+ {
return width;
- } // getWidth()
+ }
/**
* setPreferredWidth
* @param preferredWidth TODO
*/
- public void setPreferredWidth(int preferredWidth) {
- if (preferredWidth < minWidth) {
+ public void setPreferredWidth(int preferredWidth)
+ {
+ if (preferredWidth < minWidth)
this.preferredWidth = minWidth;
- } else if (preferredWidth > maxWidth) {
+ else if (preferredWidth > maxWidth)
this.preferredWidth = maxWidth;
- } else {
+ else
this.preferredWidth = preferredWidth;
- } // if
- } // setPreferredWidth()
+ }
/**
* getPreferredWidth
- * @returns int
+ * @return int
*/
- public int getPreferredWidth() {
+ public int getPreferredWidth()
+ {
return preferredWidth;
- } // getPreferredWidth()
+ }
/**
* setMinWidth
* @param minWidth TODO
*/
- public void setMinWidth(int minWidth) {
+ public void setMinWidth(int minWidth)
+ {
this.minWidth = minWidth;
setWidth(getWidth());
setPreferredWidth(getPreferredWidth());
- } // setMinWidth()
+ }
/**
* getMinWidth
- * @returns int
+ * @return int
*/
- public int getMinWidth() {
+ public int getMinWidth()
+ {
return minWidth;
- } // getMinWidth()
+ }
/**
* setMaxWidth
* @param maxWidth TODO
*/
- public void setMaxWidth(int maxWidth) {
+ public void setMaxWidth(int maxWidth)
+ {
this.maxWidth = maxWidth;
setWidth(getWidth());
setPreferredWidth(getPreferredWidth());
- } // setMaxWidth()
+ }
/**
* getMaxWidth
- * @returns int
+ * @return int
*/
- public int getMaxWidth() {
+ public int getMaxWidth()
+ {
return maxWidth;
- } // getMaxWidth()
+ }
/**
* setResizable
* @param isResizable TODO
*/
- public void setResizable(boolean isResizable) {
+ public void setResizable(boolean isResizable)
+ {
this.isResizable = isResizable;
- } // setResizable()
+ }
/**
* getResizable
- * @returns boolean
+ * @return boolean
*/
- public boolean getResizable() {
+ public boolean getResizable()
+ {
return isResizable;
- } // getResizable()
+ }
/**
* sizeWidthToFit
*/
- public void sizeWidthToFit() {
+ public void sizeWidthToFit()
+ {
// TODO
- } // sizeWidthToFit()
+ }
/**
* disableResizedPosting
*/
- public void disableResizedPosting() {
+ public void disableResizedPosting()
+ {
// Does nothing
- } // disableResizedPosting()
+ }
/**
* enableResizedPosting
*/
- public void enableResizedPosting() {
+ public void enableResizedPosting()
+ {
// Does nothing
- } // enableResizedPosting()
+ }
/**
* addPropertyChangeListener
- * @param listener TODO
+ * @param listener the listener to all
*/
- public synchronized void addPropertyChangeListener(PropertyChangeListener listener) {
+ public synchronized void addPropertyChangeListener(PropertyChangeListener listener)
+ {
changeSupport.addPropertyChangeListener(listener);
- } // addPropertyChangeListener()
+ }
/**
* removePropertyChangeListener
- * @param listener TODO
+ * @param listener the listener to remove
*/
- public synchronized void removePropertyChangeListener(PropertyChangeListener listener) {
+ public synchronized void removePropertyChangeListener(PropertyChangeListener listener)
+ {
changeSupport.removePropertyChangeListener(listener);
- } // removePropertyChangeListener()
+ }
/**
* createDefaultHeaderRenderer
- * @returns TableCellRenderer
+ * @return TableCellRenderer
*/
- protected TableCellRenderer createDefaultHeaderRenderer() {
+ protected TableCellRenderer createDefaultHeaderRenderer()
+ {
return new DefaultTableCellRenderer();
- } // createDefaultHeaderRenderer()
-
-
-} // TableColumn
+ }
+}
diff --git a/libjava/javax/swing/table/TableColumnModel.java b/libjava/javax/swing/table/TableColumnModel.java
index 184569730f4..ef0897d165b 100644
--- a/libjava/javax/swing/table/TableColumnModel.java
+++ b/libjava/javax/swing/table/TableColumnModel.java
@@ -37,17 +37,17 @@ exception statement from your version. */
package javax.swing.table;
-// Imports
import java.util.Enumeration;
import javax.swing.ListSelectionModel;
import javax.swing.event.TableColumnModelListener;
+
/**
* TableColumnModel public interface
* @author Andrew Selkirk
*/
-public interface TableColumnModel {
-
+public interface TableColumnModel
+{
/**
* addColumn
* @param column TableColumn
@@ -75,13 +75,13 @@ public interface TableColumnModel {
/**
* getColumnCount
- * @returns Column count
+ * @return Column count
*/
int getColumnCount();
/**
* getColumns
- * @returns Enumeration of columns
+ * @return Enumeration of columns
*/
Enumeration getColumns();
@@ -99,19 +99,19 @@ public interface TableColumnModel {
/**
* getColumnMargin
- * @returns Column margin
+ * @return Column margin
*/
int getColumnMargin();
/**
* getColumnIndexAtX
- * @returns Column index as position x
+ * @return Column index as position x
*/
int getColumnIndexAtX(int xPosition);
/**
* getTotalColumnWidth
- * @returns Total column width
+ * @return Total column width
*/
int getTotalColumnWidth();
@@ -123,19 +123,19 @@ public interface TableColumnModel {
/**
* getColumnSelectionAllowed
- * @returns true if column selection allowed, false otherwise
+ * @return true if column selection allowed, false otherwise
*/
boolean getColumnSelectionAllowed();
/**
* getSelectedColumns
- * @returns Selected columns
+ * @return Selected columns
*/
int[] getSelectedColumns();
/**
* getSelectedColumnCount
- * @returns Count of selected columns
+ * @return Count of selected columns
*/
int getSelectedColumnCount();
@@ -162,6 +162,4 @@ public interface TableColumnModel {
* @param listener TableColumnModelListener
*/
void removeColumnModelListener(TableColumnModelListener listener);
-
-
-} // TableColumnModel
+}
diff --git a/libjava/javax/swing/table/TableModel.java b/libjava/javax/swing/table/TableModel.java
index 64a08559eab..a4732d061b9 100644
--- a/libjava/javax/swing/table/TableModel.java
+++ b/libjava/javax/swing/table/TableModel.java
@@ -37,38 +37,38 @@ exception statement from your version. */
package javax.swing.table;
-// Imports
import javax.swing.event.TableModelListener;
+
/**
* TableModel public interface
* @author Andrew Selkirk
*/
-public interface TableModel {
-
+public interface TableModel
+{
/**
* getRowCount
- * @returns row count
+ * @return row count
*/
int getRowCount();
/**
* getColumnCount
- * @returns column count
+ * @return column count
*/
int getColumnCount();
/**
* getColumnName
* @param columnIndex Column index
- * @returns Column name
+ * @return Column name
*/
String getColumnName(int columnIndex);
/**
* getColumnClass
* @param columnIndex Column index
- * @returns Column class
+ * @return Column class
*/
Class getColumnClass(int columnIndex);
@@ -76,7 +76,7 @@ public interface TableModel {
* isCellEditable
* @param rowIndex Row index
* @param columnIndex Column index
- * @returns true if editable, false otherwise
+ * @return true if editable, false otherwise
*/
boolean isCellEditable(int rowIndex, int columnIndex);
@@ -84,7 +84,7 @@ public interface TableModel {
* getValueAt
* @param rowIndex Row index
* @param columnIndex Column index
- * @returns Value at specified indices
+ * @return Value at specified indices
*/
Object getValueAt(int rowIndex, int columnIndex);
@@ -107,6 +107,4 @@ public interface TableModel {
* @param listener TableModelListener
*/
void removeTableModelListener(TableModelListener listener);
-
-
-} // TableModel
+}
diff --git a/libjava/javax/swing/text/AbstractDocument.java b/libjava/javax/swing/text/AbstractDocument.java
index 5612fc94bc5..c1ea098c0a9 100644
--- a/libjava/javax/swing/text/AbstractDocument.java
+++ b/libjava/javax/swing/text/AbstractDocument.java
@@ -42,7 +42,6 @@ import java.util.Dictionary;
import java.util.Enumeration;
import java.util.EventListener;
import java.util.Vector;
-
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.EventListenerList;
@@ -57,232 +56,15 @@ import javax.swing.undo.UndoableEdit;
public abstract class AbstractDocument
implements Document, Serializable
{
- public abstract class AbstractElement
- implements Element, TreeNode, Serializable
- {
- private static final long serialVersionUID = 1265312733007397733L;
-
- int count;
- int offset;
- AttributeSet attr;
- Vector elts = new Vector();
- String name;
- Element parent;
- Vector kids = new Vector();
- TreeNode tree_parent;
-
- public AbstractElement(Element p, AttributeSet s)
- {
- parent = p;
- attr = s;
- }
-
- public Enumeration children()
- {
- return kids.elements();
- }
-
- public boolean getAllowsChildren()
- {
- return true;
- }
-
- public TreeNode getChildAt(int index)
- {
- return (TreeNode) kids.elementAt(index);
- }
-
- public int getChildCount()
- {
- return kids.size();
- }
-
- public int getIndex(TreeNode node)
- {
- return kids.indexOf(node);
- }
-
- public TreeNode getParent()
- {
- return tree_parent;
- }
-
- public AttributeSet getAttributes()
- {
- return attr;
- }
-
- public Document getDocument()
- {
- return AbstractDocument.this;
- }
-
- public Element getElement(int index)
- {
- return (Element) elts.elementAt(index);
- }
-
- public String getName()
- {
- return name;
- }
-
- public Element getParentElement()
- {
- return parent;
- }
-
- public abstract boolean isLeaf();
-
- public abstract int getEndOffset();
-
- public abstract int getElementCount();
-
- public abstract int getElementIndex(int offset);
-
- public abstract int getStartOffset();
- }
-
- public interface AttributeContext
- {
- }
-
- public class BranchElement extends AbstractElement
- {
- private static final long serialVersionUID = -8595176318868717313L;
-
- public BranchElement(Element e, AttributeSet a, int s, int end)
- {
- super(e, a);
- }
-
- public boolean isLeaf()
- {
- return false;
- }
-
- public int getEndOffset()
- {
- return 0;
- }
-
- public int getElementCount()
- {
- return 0;
- }
-
- public int getElementIndex(int offset)
- {
- return 0;
- }
-
- public int getStartOffset()
- {
- return 0;
- }
- }
-
- public interface Content
- {
- Position createPosition(int offset) throws BadLocationException;
-
- int length();
-
- UndoableEdit insertString(int where, String str)
- throws BadLocationException;
-
- UndoableEdit remove(int where, int nitems) throws BadLocationException;
-
- String getString(int where, int len) throws BadLocationException;
-
- void getChars(int where, int len, Segment txt) throws BadLocationException;
- }
-
- public class DefaultDocumentEvent extends CompoundEdit
- implements DocumentEvent
- {
- private static final long serialVersionUID = -7406103236022413522L;
-
- public int len;
- public int off;
-
- public Document getDocument()
- {
- return AbstractDocument.this;
- }
-
- public int getLength()
- {
- return len;
- }
-
- public int getOffset()
- {
- return off;
- }
-
- public DocumentEvent.EventType getType()
- {
- return null;
- }
-
- public DocumentEvent.ElementChange getChange(Element elem)
- {
- return null;
- }
- }
-
- public static class ElementEdit extends AbstractUndoableEdit
- {
- private static final long serialVersionUID = -1216620962142928304L;
- }
-
- public class LeafElement extends AbstractElement
- {
- private static final long serialVersionUID = 5115368706941283802L;
-
- public LeafElement(Element e, AttributeSet a, int s, int end)
- {
- super(e, a);
- }
-
- public boolean isLeaf()
- {
- return true;
- }
-
- public int getEndOffset()
- {
- return 0;
- }
-
- public int getElementCount()
- {
- return 0;
- }
-
- public int getElementIndex(int offset)
- {
- return 0;
- }
-
- public int getStartOffset()
- {
- return 0;
- }
- }
-
private static final long serialVersionUID = -116069779446114664L;
-
protected static final String BAD_LOCATION = "document location failure";
-
public static final String BidiElementName = "bidi level";
public static final String ContentElementName = "content";
public static final String ParagraphElementName = "paragraph";
public static final String SectionElementName = "section";
public static final String ElementNameAttribute = "$ename";
-
Content content;
+ protected EventListenerList listenerList = new EventListenerList();
protected AbstractDocument(Content doc)
{
@@ -294,8 +76,6 @@ public abstract class AbstractDocument
content = doc;
}
- protected EventListenerList listenerList = new EventListenerList();
-
// these still need to be implemented by a derived class:
public abstract Element getParagraphElement(int pos);
@@ -312,14 +92,16 @@ public abstract class AbstractDocument
return new LeafElement(parent, a, p0, p1 - p0);
}
- public Position createPosition(int offs)
+ public Position createPosition(final int offset) throws BadLocationException
{
- final int a = offs;
+ if (offset < 0 || offset > getLength())
+ throw new BadLocationException(getText(0, getLength()), offset);
+
return new Position()
{
public int getOffset()
{
- return a;
+ return offset;
}
};
}
@@ -416,21 +198,13 @@ public abstract class AbstractDocument
return null;
}
- public String getText(int offset, int length)
- {
- try
+ public String getText(int offset, int length) throws BadLocationException
{
return content.getString(offset, length);
}
- catch (Exception e)
- {
- System.out.println("Hmmm, fail to getText: " + offset + " -> "
- + length);
- return null;
- }
- }
public void getText(int offset, int length, Segment txt)
+ throws BadLocationException
{
String a = getText(offset, length);
@@ -439,6 +213,7 @@ public abstract class AbstractDocument
txt.offset = 0;
txt.count = 0;
txt.array = new char[0];
+
return;
}
@@ -478,7 +253,7 @@ public abstract class AbstractDocument
{
}
- public void remove(int offs, int len)
+ public void remove(int offset, int length) throws BadLocationException
{
}
@@ -565,4 +340,316 @@ public abstract class AbstractDocument
protected void writeUnlock()
{
}
+
+ public interface AttributeContext
+ {
+ AttributeSet addAttribute(AttributeSet old, Object name, Object value);
+
+ AttributeSet addAttributes(AttributeSet old, AttributeSet attributes);
+
+ AttributeSet getEmptySet();
+
+ void reclaim(AttributeSet attributes);
+
+ AttributeSet removeAttribute(AttributeSet old, Object name);
+
+ AttributeSet removeAttributes(AttributeSet old, AttributeSet attributes);
+
+ AttributeSet removeAttributes(AttributeSet old, Enumeration names);
+ }
+
+ public interface Content
+ {
+ Position createPosition(int offset) throws BadLocationException;
+
+ int length();
+
+ UndoableEdit insertString(int where, String str)
+ throws BadLocationException;
+
+ UndoableEdit remove(int where, int nitems) throws BadLocationException;
+
+ String getString(int where, int len) throws BadLocationException;
+
+ void getChars(int where, int len, Segment txt) throws BadLocationException;
+ }
+
+ public abstract class AbstractElement
+ implements Element, TreeNode, Serializable
+ {
+ private static final long serialVersionUID = 1265312733007397733L;
+ int count;
+ int offset;
+ AttributeSet attr;
+ Vector elts = new Vector();
+ String name;
+ Element parent;
+ Vector kids = new Vector();
+ TreeNode tree_parent;
+
+ public AbstractElement(Element p, AttributeSet s)
+ {
+ parent = p;
+ attr = s;
+ }
+
+ public Enumeration children()
+ {
+ return kids.elements();
+ }
+
+ public boolean getAllowsChildren()
+ {
+ return true;
+ }
+
+ public TreeNode getChildAt(int index)
+ {
+ return (TreeNode) kids.elementAt(index);
+ }
+
+ public int getChildCount()
+ {
+ return kids.size();
+ }
+
+ public int getIndex(TreeNode node)
+ {
+ return kids.indexOf(node);
+ }
+
+ public TreeNode getParent()
+ {
+ return tree_parent;
+ }
+
+ public AttributeSet getAttributes()
+ {
+ return attr;
+ }
+
+ public Document getDocument()
+ {
+ return AbstractDocument.this;
+ }
+
+ public Element getElement(int index)
+ {
+ return (Element) elts.elementAt(index);
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public Element getParentElement()
+ {
+ return parent;
+ }
+
+ public abstract boolean isLeaf();
+
+ public abstract int getEndOffset();
+
+ public abstract int getElementCount();
+
+ public abstract int getElementIndex(int offset);
+
+ public abstract int getStartOffset();
+ }
+
+ public class BranchElement extends AbstractElement
+ {
+ private static final long serialVersionUID = -8595176318868717313L;
+ private int start;
+ private int end;
+ private Vector children = new Vector();
+
+ public BranchElement(Element parent, AttributeSet attributes, int start,
+ int end)
+ {
+ super(parent, attributes);
+ this.start = start;
+ this.end = end;
+ }
+
+ public Enumeration children()
+ {
+ return children.elements();
+ }
+
+ public boolean getAllowsChildren()
+ {
+ return true;
+ }
+
+ public Element getElement(int index)
+ {
+ return (Element) children.get(index);
+ }
+
+ public int getElementCount()
+ {
+ return children.size();
+ }
+
+ public int getElementIndex(int offset)
+ {
+ return children.indexOf(positionToElement(offset));
+ }
+
+ public int getEndOffset()
+ {
+ return end;
+ }
+
+ public String getName()
+ {
+ return "AbstractDocument.BranchElement";
+ }
+
+ public int getStartOffset()
+ {
+ return start;
+ }
+
+ public boolean isLeaf()
+ {
+ return false;
+ }
+
+ public Element positionToElement(int position)
+ {
+ // XXX: There is surely a better algorithm
+ // as beginning from first element each time.
+ for (int index = 0; index < children.size(); ++index)
+ {
+ Element elem = (Element) children.get(index);
+
+ if ((elem.getStartOffset() <= position)
+ && (position < elem.getEndOffset()))
+ return elem;
+ }
+
+ return null;
+ }
+
+ public void replace(int offset, int length, Element[] elems)
+ {
+ for (int index = 0; index < length; ++index)
+ children.removeElementAt(offset);
+
+ for (int index = 0; index < elems.length; ++index)
+ children.add(offset + index, elems[index]);
+ }
+
+ public String toString()
+ {
+ return getName() + ": " + "content";
+ }
+ }
+
+ public class DefaultDocumentEvent extends CompoundEdit
+ implements DocumentEvent
+ {
+ private static final long serialVersionUID = -7406103236022413522L;
+ public int len;
+ public int off;
+
+ public Document getDocument()
+ {
+ return AbstractDocument.this;
+ }
+
+ public int getLength()
+ {
+ return len;
+ }
+
+ public int getOffset()
+ {
+ return off;
+ }
+
+ public DocumentEvent.EventType getType()
+ {
+ return null;
+ }
+
+ public DocumentEvent.ElementChange getChange(Element elem)
+ {
+ return null;
+ }
+ }
+
+ public static class ElementEdit extends AbstractUndoableEdit
+ {
+ private static final long serialVersionUID = -1216620962142928304L;
+ }
+
+ public class LeafElement extends AbstractElement
+ {
+ private static final long serialVersionUID = 5115368706941283802L;
+ private int start;
+ private int end;
+
+ public LeafElement(Element parent, AttributeSet attributes, int start,
+ int end)
+ {
+ super(parent, attributes);
+ this.start = start;
+ this.end = end;
+ }
+
+ public Enumeration children()
+ {
+ return null;
+ }
+
+ public boolean getAllowsChildren()
+ {
+ return false;
+ }
+
+ public Element getElement()
+ {
+ return null;
+ }
+
+ public int getElementCount()
+ {
+ return 0;
+ }
+
+ public int getElementIndex(int offset)
+ {
+ return -1;
+ }
+
+ public int getEndOffset()
+ {
+ return end;
+ }
+
+ public String getName()
+ {
+ return "AbstractDocument.LeafElement";
+ }
+
+ public int getStartOffset()
+ {
+ return start;
+ }
+
+ public boolean isLeaf()
+ {
+ return true;
+ }
+
+ public String toString()
+ {
+ return getName() + ": " + "content";
+ }
+ }
}
diff --git a/libjava/javax/swing/text/AttributeSet.java b/libjava/javax/swing/text/AttributeSet.java
index 5c08a04f013..3c31767cf3a 100644
--- a/libjava/javax/swing/text/AttributeSet.java
+++ b/libjava/javax/swing/text/AttributeSet.java
@@ -41,6 +41,22 @@ import java.util.Enumeration;
public interface AttributeSet
{
+ static interface CharacterAttribute
+ {
+ }
+
+ static interface ColorAttribute
+ {
+ }
+
+ static interface FontAttribute
+ {
+ }
+
+ static interface ParagraphAttribute
+ {
+ }
+
boolean containsAttribute(Object name, Object value);
boolean containsAttributes(AttributeSet attributes);
AttributeSet copyAttributes();
diff --git a/libjava/javax/swing/text/CharacterIterator.java b/libjava/javax/swing/text/CharacterIterator.java
deleted file mode 100644
index 71c8d660e4f..00000000000
--- a/libjava/javax/swing/text/CharacterIterator.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/* CharacterIterator.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.text;
-
-
-public interface CharacterIterator extends Cloneable
-{
- Object clone();
- char current();
- char first();
- int getBeginIndex();
- int getEndIndex();
- int getIndex();
- char last();
- char next();
- char previous();
- char setIndex(int position);
-}
diff --git a/libjava/javax/swing/text/ComponentView.java b/libjava/javax/swing/text/ComponentView.java
index bd509b8dbcb..0305a717462 100644
--- a/libjava/javax/swing/text/ComponentView.java
+++ b/libjava/javax/swing/text/ComponentView.java
@@ -79,6 +79,7 @@ public class ComponentView extends View
}
public Shape modelToView(int pos, Shape a, Position.Bias b)
+ throws BadLocationException
{
return null;
}
diff --git a/libjava/javax/swing/text/DefaultCaret.java b/libjava/javax/swing/text/DefaultCaret.java
index 8a17a369ba5..968bf1ffdf6 100644
--- a/libjava/javax/swing/text/DefaultCaret.java
+++ b/libjava/javax/swing/text/DefaultCaret.java
@@ -41,7 +41,9 @@ import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;
+import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
+import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.EventListener;
@@ -54,6 +56,8 @@ import javax.swing.event.EventListenerList;
public class DefaultCaret extends Rectangle
implements Caret, FocusListener, MouseListener, MouseMotionListener
{
+ private static final long serialVersionUID = 228155774675466193L;
+
protected ChangeEvent changeEvent = new ChangeEvent(this);
protected EventListenerList listenerList = new EventListenerList();
@@ -67,39 +71,47 @@ public class DefaultCaret extends Rectangle
boolean vis = true;
- public void mouseDragged(java.awt.event.MouseEvent evt)
+ public void mouseDragged(MouseEvent event)
+ {
+ }
+
+ public void mouseMoved(MouseEvent event)
+ {
+ }
+
+ public void mouseClicked(MouseEvent event)
{
}
- public void mouseMoved(java.awt.event.MouseEvent evt)
+ public void mouseEntered(MouseEvent event)
{
}
- public void mouseClicked(java.awt.event.MouseEvent evt)
+ public void mouseExited(MouseEvent event)
{
}
- public void mouseEntered(java.awt.event.MouseEvent evt)
+ public void mousePressed(MouseEvent event)
{
}
- public void mouseExited(java.awt.event.MouseEvent evt)
+ public void mouseReleased(MouseEvent event)
{
}
- public void mousePressed(java.awt.event.MouseEvent evt)
+ public void focusGained(FocusEvent event)
{
}
- public void mouseReleased(java.awt.event.MouseEvent evt)
+ public void focusLost(FocusEvent event)
{
}
- public void focusGained(java.awt.event.FocusEvent evt)
+ protected void moveCaret(MouseEvent event)
{
}
- public void focusLost(java.awt.event.FocusEvent evt)
+ protected void positionCaret(MouseEvent event)
{
}
@@ -144,7 +156,7 @@ public class DefaultCaret extends Rectangle
return vis_sel;
}
- private void repaint()
+ protected final void repaint()
{
if (parent != null)
parent.repaint();
diff --git a/libjava/javax/swing/text/DefaultEditorKit.java b/libjava/javax/swing/text/DefaultEditorKit.java
index 037ca9166f9..8611de5a0eb 100644
--- a/libjava/javax/swing/text/DefaultEditorKit.java
+++ b/libjava/javax/swing/text/DefaultEditorKit.java
@@ -38,14 +38,17 @@ exception statement from your version. */
package javax.swing.text;
import java.io.InputStream;
+import java.io.IOException;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
import javax.swing.Action;
import javax.swing.JEditorPane;
+
public class DefaultEditorKit extends EditorKit
{
+ private static final long serialVersionUID = 9017245433028523428L;
public static final String backwardAction = "caret-backward";
public static final String beepAction = "beep";
public static final String beginAction = "caret-begin";
@@ -60,7 +63,7 @@ public class DefaultEditorKit extends EditorKit
public static final String downAction = "caret-down";
public static final String endAction = "caret-end";
public static final String endLineAction = "caret-end-line";
- public static final String endOfLineStringProperty = "__EndOfLine__";
+ public static final String EndOfLineStringProperty = "__EndOfLine__";
public static final String endParagraphAction = "caret-end-paragraph";
public static final String endWordAction = "caret-end-word";
public static final String forwardAction = "caret-forward";
@@ -77,16 +80,19 @@ public class DefaultEditorKit extends EditorKit
public static final String selectionBackwardAction = "selection-backward";
public static final String selectionBeginAction = "selection-begin";
public static final String selectionBeginLineAction = "selection-begin-line";
- public static final String selectionBeginParagraphAction = "selection-begin-paragraph";
+ public static final String selectionBeginParagraphAction =
+ "selection-begin-paragraph";
public static final String selectionBeginWordAction = "selection-begin-word";
public static final String selectionDownAction = "selection-down";
public static final String selectionEndAction = "selection-end";
public static final String selectionEndLineAction = "selection-end-line";
- public static final String selectionEndParagraphAction = "selection-end-paragraph";
+ public static final String selectionEndParagraphAction =
+ "selection-end-paragraph";
public static final String selectionEndWordAction = "selection-end-word";
public static final String selectionForwardAction = "selection-forward";
public static final String selectionNextWordAction = "selection-next-word";
- public static final String selectionPreviousWordAction = "selection-previous-word";
+ public static final String selectionPreviousWordAction =
+ "selection-previous-word";
public static final String selectionUpAction = "selection-up";
public static final String selectLineAction = "select-line";
public static final String selectParagraphAction = "select-paragraph";
@@ -94,48 +100,63 @@ public class DefaultEditorKit extends EditorKit
public static final String upAction = "caret-up";
public static final String writableAction = "set-writable";
- void deinstall(JEditorPane c)
+ public DefaultEditorKit()
+ {
+ }
+
+ /**
+ * Called when the kit is being removed from the JEditorPane.
+ */
+ public void deinstall(JEditorPane c)
{
- // Called when the kit is being removed from the JEditorPane.
}
- void install(JEditorPane c)
+
+ public void install(JEditorPane c)
{
}
- Caret createCaret()
+ public Caret createCaret()
{
return null;
}
- Document createDefaultDocument()
+
+ public Document createDefaultDocument()
{
return new PlainDocument();
}
- Action[] getActions()
+ public Action[] getActions()
{
return null;
}
- String getContentType()
+ public String getContentType()
{
return "text/plain";
}
- ViewFactory getViewFactory()
+ public ViewFactory getViewFactory()
{
return null;
}
- void read(InputStream in, Document doc, int pos)
+
+ public void read(InputStream in, Document doc, int pos)
+ throws BadLocationException, IOException
{
}
- void read(Reader in, Document doc, int pos)
+
+ public void read(Reader in, Document doc, int pos)
+ throws BadLocationException, IOException
{
}
- void write(OutputStream out, Document doc, int pos, int len)
+
+ public void write(OutputStream out, Document doc, int pos, int len)
+ throws BadLocationException, IOException
{
}
- void write(Writer out, Document doc, int pos, int len)
+
+ public void write(Writer out, Document doc, int pos, int len)
+ throws BadLocationException, IOException
{
}
}
-
diff --git a/libjava/javax/swing/text/Document.java b/libjava/javax/swing/text/Document.java
index 6ecb7ca21db..d197924bdf9 100644
--- a/libjava/javax/swing/text/Document.java
+++ b/libjava/javax/swing/text/Document.java
@@ -50,7 +50,8 @@ public interface Document
void addUndoableEditListener(UndoableEditListener listener);
- Position createPosition(int offs);
+ Position createPosition(int offs)
+ throws BadLocationException;
Element getDefaultRootElement();
@@ -64,16 +65,19 @@ public interface Document
Position getStartPosition();
- String getText(int offset, int length);
+ String getText(int offset, int length)
+ throws BadLocationException;
- void getText(int offset, int length, Segment txt);
+ void getText(int offset, int length, Segment txt)
+ throws BadLocationException;
void insertString(int offset, String str, AttributeSet a)
throws BadLocationException;
void putProperty(Object key, Object value);
- void remove(int offs, int len);
+ void remove(int offs, int len)
+ throws BadLocationException;
void removeDocumentListener(DocumentListener listener);
diff --git a/libjava/javax/swing/text/EditorKit.java b/libjava/javax/swing/text/EditorKit.java
index acc21c114c1..0609332f0b8 100644
--- a/libjava/javax/swing/text/EditorKit.java
+++ b/libjava/javax/swing/text/EditorKit.java
@@ -38,38 +38,58 @@ exception statement from your version. */
package javax.swing.text;
import java.io.InputStream;
+import java.io.IOException;
import java.io.OutputStream;
import java.io.Reader;
+import java.io.Serializable;
import java.io.Writer;
import javax.swing.Action;
import javax.swing.JEditorPane;
-public abstract class EditorKit implements Cloneable
+
+public abstract class EditorKit
+ implements Cloneable, Serializable
{
- EditorKit()
+ private static final long serialVersionUID = -5044124649345887822L;
+
+ public EditorKit()
{
}
- EditorKit(EditorKit kit)
+ public Object clone()
{
+ try
+ {
+ return super.clone();
}
-
- void deinstall(JEditorPane c)
+ catch (CloneNotSupportedException e)
{
- // Called when the kit is being removed from the JEditorPane.
+ return null;
}
- void install(JEditorPane c)
+ }
+
+ /**
+ * Called when the kit is being removed from the JEditorPane.
+ */
+ public void deinstall(JEditorPane c)
{
}
- abstract Caret createCaret();
- abstract Document createDefaultDocument();
- abstract Action[] getActions();
- abstract String getContentType();
- abstract ViewFactory getViewFactory();
- abstract void read(InputStream in, Document doc, int pos);
- abstract void read(Reader in, Document doc, int pos);
- abstract void write(OutputStream out, Document doc, int pos, int len);
- abstract void write(Writer out, Document doc, int pos, int len);
+ public void install(JEditorPane c)
+ {
}
+ public abstract Caret createCaret();
+ public abstract Document createDefaultDocument();
+ public abstract Action[] getActions();
+ public abstract String getContentType();
+ public abstract ViewFactory getViewFactory();
+ public abstract void read(InputStream in, Document doc, int pos)
+ throws BadLocationException, IOException;
+ public abstract void read(Reader in, Document doc, int pos)
+ throws BadLocationException, IOException;
+ public abstract void write(OutputStream out, Document doc, int pos, int len)
+ throws BadLocationException, IOException;
+ public abstract void write(Writer out, Document doc, int pos, int len)
+ throws BadLocationException, IOException;
+}
diff --git a/libjava/javax/swing/text/JTextComponent.java b/libjava/javax/swing/text/JTextComponent.java
index 6451ef5c31f..e44c5296d86 100644
--- a/libjava/javax/swing/text/JTextComponent.java
+++ b/libjava/javax/swing/text/JTextComponent.java
@@ -38,6 +38,7 @@ exception statement from your version. */
package javax.swing.text;
import java.awt.AWTEvent;
+import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Image;
@@ -67,12 +68,6 @@ import javax.swing.plaf.TextUI;
public abstract class JTextComponent extends JComponent
implements Scrollable, Accessible
{
-// public class AccessibleJTextComponent extends AccessibleJComponent
-// implements AccessibleText, CaretListener, DocumentListener,
-// AccessibleAction, AccessibleEditableText
-// {
-// }
-
/**
* AccessibleJTextComponent
*/
@@ -82,11 +77,6 @@ public abstract class JTextComponent extends JComponent
private static final long serialVersionUID = 7664188944091413696L;
/**
- * caretPos
- */
- int caretPos;
-
- /**
* Constructor AccessibleJTextComponent
* @param component TODO
*/
@@ -280,6 +270,12 @@ public abstract class JTextComponent extends JComponent
public KeyStroke key;
public String actionName;
+ /**
+ * Creates a new <code>KeyBinding</code> instance.
+ *
+ * @param key a <code>KeyStroke</code> value
+ * @param actionName a <code>String</code> value
+ */
public KeyBinding(KeyStroke key, String actionName)
{
this.key = key;
@@ -294,8 +290,16 @@ public abstract class JTextComponent extends JComponent
private Document doc;
private Caret caret;
+ private Highlighter highlighter;
+ private Color caretColor;
+ private Color disabledTextColor;
+ private Color selectedTextColor;
+ private Color selectionColor;
private boolean editable;
+ /**
+ * Creates a new <code>JTextComponent</code> instance.
+ */
public JTextComponent()
{
enableEvents(AWTEvent.KEY_EVENT_MASK);
@@ -311,13 +315,13 @@ public abstract class JTextComponent extends JComponent
public Document getDocument()
{
- if (doc == null)
- System.out.println("doc == null !!!");
return doc;
}
/**
- * Get the AccessibleContext of this object
+ * Get the <code>AccessibleContext<code> of this object.
+ *
+ * @return an <code>AccessibleContext</code> object
*/
public AccessibleContext getAccessibleContext()
{
@@ -351,7 +355,18 @@ public abstract class JTextComponent extends JComponent
*/
public String getText()
{
- return getDocument().getText(0, getDocument().getLength());
+ if (doc == null)
+ return null;
+
+ try
+ {
+ return doc.getText(0, doc.getLength());
+ }
+ catch (BadLocationException e)
+ {
+ // This should never happen.
+ return "";
+ }
}
/**
@@ -371,7 +386,7 @@ public abstract class JTextComponent extends JComponent
}
/**
- * Returns a string that specifies the name of the l&amp;f class
+ * Returns a string that specifies the name of the Look and Feel class
* that renders this component.
*
* @return the string "TextComponentUI"
@@ -389,14 +404,33 @@ public abstract class JTextComponent extends JComponent
return "JTextComponent";
}
+ /**
+ * This method returns the label's UI delegate.
+ *
+ * @return The label's UI delegate.
+ */
public TextUI getUI()
{
- return (TextUI) UIManager.getUI(this);
+ return (TextUI) ui;
+ }
+
+ /**
+ * This method sets the label's UI delegate.
+ *
+ * @param ui The label's UI delegate.
+ */
+ public void setUI(TextUI newUI)
+ {
+ super.setUI(newUI);
}
+ /**
+ * This method resets the label's UI delegate to the default UI for the
+ * current look and feel.
+ */
public void updateUI()
{
- setUI(getUI());
+ setUI((TextUI) UIManager.getUI(this));
}
public Dimension getPreferredScrollableViewportSize()
@@ -448,6 +482,61 @@ public abstract class JTextComponent extends JComponent
}
/**
+ * Sets a new <code>Caret</code> for this text component.
+ *
+ * @param newCaret the new <code>Caret</code> to set
+ */
+ public void setCaret(Caret newCaret)
+ {
+ firePropertyChange("caret", caret, newCaret);
+ caret = newCaret;
+ }
+
+ public Color getCaretColor()
+ {
+ return caretColor;
+ }
+
+ public void setCaretColor(Color newColor)
+ {
+ firePropertyChange("caretColor", caretColor, newColor);
+ caretColor = newColor;
+ }
+
+ public Color getDisabledTextColor()
+ {
+ return disabledTextColor;
+ }
+
+ public void setDisabledTextColor(Color newColor)
+ {
+ firePropertyChange("disabledTextColor", caretColor, newColor);
+ disabledTextColor = newColor;
+ }
+
+ public Color getSelectedTextColor()
+ {
+ return selectedTextColor;
+ }
+
+ public void setSelectedTextColor(Color newColor)
+ {
+ firePropertyChange("selectedTextColor", caretColor, newColor);
+ selectedTextColor = newColor;
+ }
+
+ public Color getSelectionColor()
+ {
+ return selectionColor;
+ }
+
+ public void setSelectionColor(Color newColor)
+ {
+ firePropertyChange("selectionColor", caretColor, newColor);
+ selectionColor = newColor;
+ }
+
+ /**
* Retrisves the current caret position.
*
* @return the current position
@@ -488,6 +577,17 @@ public abstract class JTextComponent extends JComponent
caret.moveDot(position);
}
+ public Highlighter getHighlighter()
+ {
+ return highlighter;
+ }
+
+ public void setHighlighter(Highlighter newHighlighter)
+ {
+ firePropertyChange("highlighter", highlighter, newHighlighter);
+ highlighter = newHighlighter;
+ }
+
/**
* Returns the start postion of the currently selected text.
*
@@ -556,6 +656,34 @@ public abstract class JTextComponent extends JComponent
select(0, doc.getLength());
}
+ public synchronized void replaceSelection(String content)
+ {
+ int dot = caret.getDot();
+ int mark = caret.getMark();
+
+ // If content is empty delete selection.
+ if (content == null)
+ {
+ caret.setDot(dot);
+ return;
+ }
+
+ try
+ {
+ // Remove selected text.
+ if (dot != mark)
+ doc.remove(Math.min(dot, mark), Math.max(dot, mark));
+
+ // Insert new text.
+ doc.insertString(Math.min(dot, mark), content, null);
+ }
+ catch (BadLocationException e)
+ {
+ // This should never happen.
+ System.out.println("Michael: JTextComponent.replaceSelection: Error");
+ }
+ }
+
public boolean getScrollableTracksViewportHeight()
{
if (getParent() instanceof JViewport)
diff --git a/libjava/javax/swing/text/PlainDocument.java b/libjava/javax/swing/text/PlainDocument.java
index 930e5d3cb56..4a8adfca54d 100644
--- a/libjava/javax/swing/text/PlainDocument.java
+++ b/libjava/javax/swing/text/PlainDocument.java
@@ -44,6 +44,7 @@ public class PlainDocument extends AbstractDocument
public static final String lineLimitAttribute = "lineLimit";
public static final String tabSizeAttribute = "tabSize";
+ private Element rootElement;
private int tabSize;
public PlainDocument()
@@ -55,11 +56,22 @@ public class PlainDocument extends AbstractDocument
{
super(content);
tabSize = 8;
+ rootElement = createDefaultRoot();
+ }
+
+ protected AbstractDocument.AbstractElement createDefaultRoot()
+ {
+ BranchElement rootElement =
+ (BranchElement) createBranchElement(null, null);
+ Element[] lines = new Element[1];
+ lines[0] = createLeafElement(rootElement, null, 0, 1);
+ rootElement.replace(0, 0, lines);
+ return rootElement;
}
public Element getDefaultRootElement()
{
- return null;
+ return rootElement;
}
public Element getParagraphElement(int pos)
diff --git a/libjava/javax/swing/text/PlainEditorKit.java b/libjava/javax/swing/text/PlainEditorKit.java
deleted file mode 100644
index 1c8c5de8b96..00000000000
--- a/libjava/javax/swing/text/PlainEditorKit.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/* PlainEditorKit.java --
- Copyright (C) 2002, 2004 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath 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 Classpath 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 Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.swing.text;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.io.Writer;
-import javax.swing.Action;
-import javax.swing.JEditorPane;
-
-public class PlainEditorKit extends EditorKit
-{
- public PlainEditorKit()
- {
- }
-
- public PlainEditorKit(PlainEditorKit kit)
- {
- super(kit);
- }
-
- protected Object clone()
- {
- return new PlainEditorKit(this);
- }
- void deinstall(JEditorPane c)
- {
- // Called when the kit is being removed from the JEditorPane.
- }
- void install(JEditorPane c)
- {
- }
-
- Caret createCaret()
- {
- return null;
- }
- Document createDefaultDocument()
- {
- return null;
- }
- Action[] getActions()
- {
- return null;
- }
- String getContentType()
- {
- return null;
- }
- ViewFactory getViewFactory()
- {
- return null;
- }
- void read(InputStream in, Document doc, int pos)
- {
- }
- void read(Reader in, Document doc, int pos)
- {
- }
- void write(OutputStream out, Document doc, int pos, int len)
- {
- }
- void write(Writer out, Document doc, int pos, int len)
- {
- }
-}
-
diff --git a/libjava/javax/swing/text/Position.java b/libjava/javax/swing/text/Position.java
index be5406043f2..64a91f2e1a4 100644
--- a/libjava/javax/swing/text/Position.java
+++ b/libjava/javax/swing/text/Position.java
@@ -1,5 +1,5 @@
/* Position.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -42,6 +42,20 @@ public interface Position
{
static class Bias
{
+ public static final Bias Backward = new Bias("backward");
+ public static final Bias Forward = new Bias("forward");
+
+ private String name;
+
+ private Bias(String n)
+ {
+ name = n;
+ }
+
+ public String toString()
+ {
+ return name;
+ }
}
int getOffset();
diff --git a/libjava/javax/swing/text/Segment.java b/libjava/javax/swing/text/Segment.java
index 8934b453210..69e2fecfc38 100644
--- a/libjava/javax/swing/text/Segment.java
+++ b/libjava/javax/swing/text/Segment.java
@@ -37,22 +37,38 @@ exception statement from your version. */
package javax.swing.text;
-public class Segment implements Cloneable, CharacterIterator
+import java.text.CharacterIterator;
+
+
+public class Segment
+ implements Cloneable, CharacterIterator
{
- char[] array;
- int count;
- int offset;
+ public char[] array;
+ public int count;
+ public int offset;
+
+ public Segment()
+ {
+ }
+
+ public Segment(char[] array, int offset, int count)
+ {
+ this.array = array;
+ this.offset = offset;
+ this.count = count;
+ }
public Object clone()
{
- try {
+ try
+ {
return super.clone();
- } catch (Exception e) {
- System.err.println("Huuuhhh, this class implements cloneable !!!!!!");
- System.err.println("I think there is a bug in this JVM somewhere");
}
+ catch (CloneNotSupportedException e)
+ {
return null;
}
+ }
public char current()
{
@@ -74,25 +90,30 @@ public class Segment implements Cloneable, CharacterIterator
{
return offset + count;
}
+
public int getIndex()
{
return offset;
}
+
public char last()
{
offset = getEndIndex() - 1;
return array[offset];
}
+
public char next()
{
offset++;
return array[offset];
}
+
public char previous()
{
offset--;
return array[offset];
}
+
public char setIndex(int position)
{
offset = position;
@@ -104,4 +125,3 @@ public class Segment implements Cloneable, CharacterIterator
return new String(array, offset, count);
}
}
-
diff --git a/libjava/javax/swing/text/StyledEditorKit.java b/libjava/javax/swing/text/StyledEditorKit.java
index f237247a01f..d3db03e208d 100644
--- a/libjava/javax/swing/text/StyledEditorKit.java
+++ b/libjava/javax/swing/text/StyledEditorKit.java
@@ -42,335 +42,241 @@ import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.Serializable;
-
import javax.swing.Action;
import javax.swing.JEditorPane;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
+
/**
* StyledEditorKit
+ *
* @author Andrew Selkirk
- * @version 1.0
*/
public class StyledEditorKit extends DefaultEditorKit
{
- static final long serialVersionUID = 7002391892985555948L;
-
- //-------------------------------------------------------------
- // Classes ----------------------------------------------------
- //-------------------------------------------------------------
+ private static final long serialVersionUID = 7002391892985555948L;
/**
* UnderlineAction
*/
- public static class UnderlineAction extends StyledEditorKit.StyledTextAction {
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
+ public static class UnderlineAction extends StyledEditorKit.StyledTextAction
+ {
/**
* Constructor UnderlineAction
*/
- public UnderlineAction() {
+ public UnderlineAction()
+ {
super("TODO");
// TODO
- } // UnderlineAction()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* actionPerformed
* @param event TODO
*/
- public void actionPerformed(ActionEvent event) {
+ public void actionPerformed(ActionEvent event)
+ {
// TODO
- } // actionPerformed()
-
-
- } // UnderlineAction
+ }
+ }
/**
* ItalicAction
*/
- public static class ItalicAction extends StyledEditorKit.StyledTextAction {
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
+ public static class ItalicAction extends StyledEditorKit.StyledTextAction
+ {
/**
* Constructor ItalicAction
*/
- public ItalicAction() {
+ public ItalicAction()
+ {
super("TODO");
// TODO
- } // ItalicAction()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* actionPerformed
* @param event TODO
*/
- public void actionPerformed(ActionEvent event) {
+ public void actionPerformed(ActionEvent event)
+ {
// TODO
- } // actionPerformed()
-
-
- } // ItalicAction
+ }
+ }
/**
* BoldAction
*/
- public static class BoldAction extends StyledEditorKit.StyledTextAction {
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
+ public static class BoldAction extends StyledEditorKit.StyledTextAction
+ {
/**
* Constructor BoldAction
*/
- public BoldAction() {
+ public BoldAction()
+ {
super("TODO");
// TODO
- } // BoldAction()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* actionPerformed
* @param event TODO
*/
- public void actionPerformed(ActionEvent event) {
+ public void actionPerformed(ActionEvent event)
+ {
// TODO
- } // actionPerformed()
-
-
- } // BoldAction
+ }
+ }
/**
* AlignmentAction
*/
- public static class AlignmentAction extends StyledEditorKit.StyledTextAction {
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
+ public static class AlignmentAction extends StyledEditorKit.StyledTextAction
+ {
/**
* a
*/
private int a;
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
/**
* Constructor AlignmentAction
* @param nm TODO
* @param a TODO
*/
- public AlignmentAction(String nm, int a) {
+ public AlignmentAction(String nm, int a)
+ {
super("TODO");
// TODO
- } // AlignmentAction()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* actionPerformed
* @param event TODO
*/
- public void actionPerformed(ActionEvent event) {
+ public void actionPerformed(ActionEvent event)
+ {
// TODO
- } // actionPerformed()
-
-
- } // AlignmentAction
+ }
+ }
/**
* ForegroundAction
*/
- public static class ForegroundAction extends StyledEditorKit.StyledTextAction {
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
+ public static class ForegroundAction extends StyledEditorKit.StyledTextAction
+ {
/**
* fg
*/
private Color fg;
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
/**
* Constructor ForegroundAction
* @param nm TODO
* @param fg TODO
*/
- public ForegroundAction(String nm, Color fg) {
+ public ForegroundAction(String nm, Color fg)
+ {
super("TODO");
// TODO
- } // ForegroundAction()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* actionPerformed
* @param event TODO
*/
- public void actionPerformed(ActionEvent event) {
+ public void actionPerformed(ActionEvent event)
+ {
// TODO
- } // actionPerformed()
-
-
- } // ForegroundAction
+ }
+ }
/**
* FontSizeAction
*/
- public static class FontSizeAction extends StyledEditorKit.StyledTextAction {
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
+ public static class FontSizeAction extends StyledEditorKit.StyledTextAction
+ {
/**
* size
*/
private int size;
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
/**
* Constructor FontSizeAction
* @param nm TODO
* @param size TODO
*/
- public FontSizeAction(String nm, int size) {
+ public FontSizeAction(String nm, int size)
+ {
super("TODO");
// TODO
- } // FontSizeAction()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* actionPerformed
* @param event TODO
*/
- public void actionPerformed(ActionEvent event) {
+ public void actionPerformed(ActionEvent event)
+ {
// TODO
- } // actionPerformed()
-
-
- } // FontSizeAction
+ }
+ }
/**
* FontFamilyAction
*/
- public static class FontFamilyAction extends StyledEditorKit.StyledTextAction {
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
+ public static class FontFamilyAction extends StyledEditorKit.StyledTextAction
+ {
/**
* family
*/
private String family;
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
/**
* Constructor FontFamilyAction
* @param nm TODO
* @param family TODO
*/
- public FontFamilyAction(String nm, String family) {
+ public FontFamilyAction(String nm, String family)
+ {
super("TODO");
// TODO
- } // FontFamilyAction()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* actionPerformed
* @param event TODO
*/
- public void actionPerformed(ActionEvent event) {
+ public void actionPerformed(ActionEvent event)
+ {
// TODO
- } // actionPerformed()
-
-
- } // FontFamilyAction
+ }
+ }
/**
* StyledTextAction
*/
- public abstract static class StyledTextAction extends TextAction {
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
+ public abstract static class StyledTextAction extends TextAction
+ {
/**
* Constructor StyledTextAction
* @param nm TODO
*/
- public StyledTextAction(String nm) {
+ public StyledTextAction(String nm)
+ {
super(nm);
// TODO
- } // StyledTextAction()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* getEditor
* @param event TODO
* @returns JEditorPane
*/
- protected final JEditorPane getEditor(ActionEvent event) {
+ protected final JEditorPane getEditor(ActionEvent event)
+ {
return null; // TODO
- } // getEditor()
+ }
/**
* setCharacterAttributes
@@ -378,27 +284,32 @@ public class StyledEditorKit extends DefaultEditorKit
* @param value1 TODO
* @param value2 TODO
*/
- protected final void setCharacterAttributes(JEditorPane value0, AttributeSet value1, boolean value2) {
+ protected final void setCharacterAttributes(JEditorPane value0,
+ AttributeSet value1,
+ boolean value2)
+ {
// TODO
- } // setCharacterAttributes()
+ }
/**
* getStyledDocument
* @param value0 TODO
* @returns StyledDocument
*/
- protected final StyledDocument getStyledDocument(JEditorPane value0) {
+ protected final StyledDocument getStyledDocument(JEditorPane value0)
+ {
return null; // TODO
- } // getStyledDocument()
+ }
/**
* getStyledEditorKit
* @param value0 TODO
* @returns StyledEditorKit
*/
- protected final StyledEditorKit getStyledEditorKit(JEditorPane value0) {
+ protected final StyledEditorKit getStyledEditorKit(JEditorPane value0)
+ {
return null; // TODO
- } // getStyledEditorKit()
+ }
/**
* setParagraphAttributes
@@ -406,72 +317,53 @@ public class StyledEditorKit extends DefaultEditorKit
* @param value1 TODO
* @param value2 TODO
*/
- protected final void setParagraphAttributes(JEditorPane value0, AttributeSet value1, boolean value2) {
+ protected final void setParagraphAttributes(JEditorPane value0,
+ AttributeSet value1,
+ boolean value2)
+ {
// TODO
- } // setParagraphAttributes()
-
-
- } // StyledTextAction
+ }
+ }
/**
* StyledViewFactory
*/
- static class StyledViewFactory implements ViewFactory {
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
+ static class StyledViewFactory
+ implements ViewFactory
+ {
/**
* Constructor StyledViewFactory
*/
- StyledViewFactory() {
+ StyledViewFactory()
+ {
// TODO
- } // StyledViewFactory()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* create
* @param value0 TODO
* @returns View
*/
- public View create(Element value0) {
+ public View create(Element value0)
+ {
return null; // TODO
- } // create()
-
-
- } // StyledViewFactory
+ }
+ }
/**
* AttributeTracker
*/
- class AttributeTracker implements CaretListener, PropertyChangeListener, Serializable {
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
+ class AttributeTracker
+ implements CaretListener, PropertyChangeListener, Serializable
+ {
/**
* Constructor AttributeTracker
* @param value0 TODO
*/
- AttributeTracker(StyledEditorKit value0) {
+ AttributeTracker(StyledEditorKit value0)
+ {
// TODO
- } // AttributeTracker()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* updateInputAttributes
@@ -479,33 +371,29 @@ public class StyledEditorKit extends DefaultEditorKit
* @param value1 TODO
* @param value2 TODO
*/
- void updateInputAttributes(int value0, int value1, JTextComponent value2) {
+ void updateInputAttributes(int value0, int value1, JTextComponent value2)
+ {
// TODO
- } // updateInputAttributes()
+ }
/**
* propertyChange
* @param value0 TODO
*/
- public void propertyChange(PropertyChangeEvent value0) {
+ public void propertyChange(PropertyChangeEvent value0)
+ {
// TODO
- } // propertyChange()
+ }
/**
* caretUpdate
* @param value0 TODO
*/
- public void caretUpdate(CaretEvent value0) {
+ public void caretUpdate(CaretEvent value0)
+ {
// TODO
- } // caretUpdate()
-
-
- } // AttributeTracker
-
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
+ }
+ }
/**
* currentRun
@@ -522,96 +410,93 @@ public class StyledEditorKit extends DefaultEditorKit
*/
MutableAttributeSet inputAttributes;
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
/**
* Constructor StyledEditorKit
*/
- public StyledEditorKit() {
+ public StyledEditorKit()
+ {
// TODO
- } // StyledEditorKit()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* clone
* @returns Object
*/
- public Object clone() {
+ public Object clone()
+ {
return null; // TODO
- } // clone()
+ }
/**
* getActions
* @returns Action[]
*/
- public Action[] getActions() {
+ public Action[] getActions()
+ {
return null; // TODO
- } // getActions()
+ }
/**
* getInputAttributes
* @returns MutableAttributeSet
*/
- public MutableAttributeSet getInputAttributes() {
+ public MutableAttributeSet getInputAttributes()
+ {
return null; // TODO
- } // getInputAttributes()
+ }
/**
* getCharacterAttributeRun
* @returns Element
*/
- public Element getCharacterAttributeRun() {
+ public Element getCharacterAttributeRun()
+ {
return null; // TODO
- } // getCharacterAttributeRun()
+ }
/**
* createDefaultDocument
* @returns Document
*/
- public Document createDefaultDocument() {
+ public Document createDefaultDocument()
+ {
return null; // TODO
- } // createDefaultDocument()
+ }
/**
* install
* @param component TODO
*/
- public void install(JEditorPane component) {
+ public void install(JEditorPane component)
+ {
// TODO
- } // install()
+ }
/**
* deinstall
* @param component TODO
*/
- public void deinstall(JEditorPane component) {
+ public void deinstall(JEditorPane component)
+ {
// TODO
- } // deinstall()
+ }
/**
* getViewFactory
* @returns ViewFactory
*/
- public ViewFactory getViewFactory() {
+ public ViewFactory getViewFactory()
+ {
return null; // TODO
- } // getViewFactory()
+ }
/**
* createInputAttributes
* @param element TODO
* @param set TODO
*/
- protected void createInputAttributes(Element element,
- MutableAttributeSet set) {
+ protected void createInputAttributes(Element element, MutableAttributeSet set)
+ {
// TODO
- } // createInputAttributes()
-
-
-} // StyledEditorKit
+ }
+}
diff --git a/libjava/javax/swing/text/TextAction.java b/libjava/javax/swing/text/TextAction.java
index 55c04c1cd44..5fee0e8640d 100644
--- a/libjava/javax/swing/text/TextAction.java
+++ b/libjava/javax/swing/text/TextAction.java
@@ -41,56 +41,49 @@ import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
+
/**
* TextAction
* @author Andrew Selkirk
- * @version 1.0
*/
-public abstract class TextAction extends AbstractAction {
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
+public abstract class TextAction extends AbstractAction
+{
/**
* Constructor TextAction
* @param name TODO
*/
- public TextAction(String name) {
+ public TextAction(String name)
+ {
// TODO
- } // TextAction()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
+ }
/**
* getTextComponent
* @param event TODO
- * @returns JTextComponent
+ * @return JTextComponent
*/
- protected final JTextComponent getTextComponent(ActionEvent event) {
+ protected final JTextComponent getTextComponent(ActionEvent event)
+ {
return null; // TODO
- } // getTextComponent()
+ }
/**
* augmentList
* @param list1 TODO
* @param list2 TODO
- * @returns Action[]
+ * @return Action[]
*/
- public static final Action[] augmentList(Action[] list1, Action[] list2) {
+ public static final Action[] augmentList(Action[] list1, Action[] list2)
+ {
return null; // TODO
- } // augmentList()
+ }
/**
* getFocusedComponent
- * @returns JTextComponent
+ * @return JTextComponent
*/
- protected final JTextComponent getFocusedComponent() {
+ protected final JTextComponent getFocusedComponent()
+ {
return null; // TODO
- } // getFocusedComponent()
-
-
-} // TextAction
+ }
+}
diff --git a/libjava/javax/swing/text/View.java b/libjava/javax/swing/text/View.java
index 46d2b35e9c3..6c5a9c296dd 100644
--- a/libjava/javax/swing/text/View.java
+++ b/libjava/javax/swing/text/View.java
@@ -37,6 +37,7 @@ exception statement from your version. */
package javax.swing.text;
+import java.awt.Container;
import java.awt.Graphics;
import java.awt.Shape;
import java.util.Vector;
@@ -44,97 +45,124 @@ import javax.swing.SwingConstants;
public abstract class View implements SwingConstants
{
- static int BadBreakWeight;
- static int ExcellentBreakWeight;
- static int ForcedBreakWeight;
- static int GoodBreakWeight;
+ public static final int BadBreakWeight = 0;
+ public static final int ExcellentBreakWeight = 2000;
+ public static final int ForcedBreakWeight = 3000;
+ public static final int GoodBreakWeight = 1000;
- public final static int X_AXIS = 0;
- public final static int Y_AXIS = 1;
+ public static final int X_AXIS = 0;
+ public static final int Y_AXIS = 1;
- float width, height;
- Element elt;
- View parent;
+ private float width, height;
+ private Element elt;
+ private View parent;
/**
- * this vector contains the views ordered at offsets...
+ * Creates a new <code>View</code> instance.
+ *
+ * @param elem an <code>Element</code> value
*/
- Vector v = new Vector();
-
-
public View(Element elem)
{
elt = elem;
}
- public int getViewCount()
+ public abstract void paint(Graphics g, Shape s);
+
+ public void setParent(View a)
{
- return v.size();
+ parent = a;
}
- public View getView(int a)
+ public View getParent()
{
- return (View) v.get(a);
+ return parent;
}
- public void remove(int i)
+ public void setSize(int w, int h)
{
- v.removeElementAt(i);
+ width = w;
+ height = h;
}
- public void insert(int off, View view)
+ public Container getContainer()
{
- v.insertElementAt(view, off);
+ return parent != null ? parent.getContainer() : null;
}
- public void append(View view)
+ public Document getDocument()
{
- v.addElement(view);
+ return getElement().getDocument();
}
- public void paint(Graphics g, Shape allocation)
+ public Element getElement()
{
- System.out.println("view.paint() !!!!");
+ return elt;
}
- public void setParent(View a)
+ public abstract float getPreferredSpan(int axis);
+
+ public float getAlignment(int axis)
{
- parent = a;
+ return 0.5f;
}
- public View getParent()
+ public AttributeSet getAttributes()
{
- return parent;
+ return elt.getAttributes();
}
- public void setSize(int w, int h)
+ public boolean isVisible()
{
- width = w;
- height = h;
+ return true;
}
- public Document getDocument()
+ public int getViewCount()
{
- return getElement().getDocument();
+ return 0;
}
- public Element getElement()
+ public View getView(int index)
{
- return elt;
+ return null;
}
- public float getPreferredSpan(int a)
+ public ViewFactory getViewFactory()
{
- switch (a)
+ return parent != null ? parent.getViewFactory() : null;
+ }
+
+ public void replace(int offset, int length, View[] views)
{
- case X_AXIS: return width;
- case Y_AXIS: return height;
- default:
+ // Default implementation does nothing.
+ }
+
+ public void insert(int offset, View view)
{
- System.err.println("I sure wish Java had enums !!! ");
- return 0;
+ View[] array = { view };
+ replace(offset, 1, array);
}
+
+ public void append(View view)
+ {
+ View[] array = { view };
+ replace(getViewCount(), 1, array);
+ }
+
+ public void removeAll()
+ {
+ replace(0, getViewCount(), null);
}
+
+ public void remove(int index)
+ {
+ replace(index, 1, null);
+ }
+
+ public View createFragment(int p0, int p1)
+ {
+ // The default implementation doesnt support fragmentation.
+ return this;
}
}
diff --git a/libjava/javax/swing/text/ViewFactory.java b/libjava/javax/swing/text/ViewFactory.java
index 1fef6bceb96..52be67ba557 100644
--- a/libjava/javax/swing/text/ViewFactory.java
+++ b/libjava/javax/swing/text/ViewFactory.java
@@ -1,5 +1,5 @@
/* ViewFactory.java --
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -39,5 +39,12 @@ package javax.swing.text;
public interface ViewFactory
{
+ /**
+ * Creates a view for a given element.
+ *
+ * @param elem them element to create view for
+ *
+ * @return a new created view
+ */
View create (Element elem);
}
diff --git a/libjava/jni.cc b/libjava/jni.cc
index 9d0239b230b..ec2709f0f2b 100644
--- a/libjava/jni.cc
+++ b/libjava/jni.cc
@@ -222,8 +222,8 @@ unwrap (T *obj)
-static jobject
-(JNICALL _Jv_JNI_NewGlobalRef) (JNIEnv *, jobject obj)
+static jobject JNICALL
+_Jv_JNI_NewGlobalRef (JNIEnv *, jobject obj)
{
// This seems weird but I think it is correct.
obj = unwrap (obj);
@@ -231,16 +231,16 @@ static jobject
return obj;
}
-static void
-(JNICALL _Jv_JNI_DeleteGlobalRef) (JNIEnv *, jobject obj)
+static void JNICALL
+_Jv_JNI_DeleteGlobalRef (JNIEnv *, jobject obj)
{
// This seems weird but I think it is correct.
obj = unwrap (obj);
unmark_for_gc (obj, global_ref_table);
}
-static void
-(JNICALL _Jv_JNI_DeleteLocalRef) (JNIEnv *env, jobject obj)
+static void JNICALL
+_Jv_JNI_DeleteLocalRef (JNIEnv *env, jobject obj)
{
_Jv_JNI_LocalFrame *frame;
@@ -266,8 +266,8 @@ static void
JvAssert (0);
}
-static jint
-(JNICALL _Jv_JNI_EnsureLocalCapacity) (JNIEnv *env, jint size)
+static jint JNICALL
+_Jv_JNI_EnsureLocalCapacity (JNIEnv *env, jint size)
{
// It is easier to just always allocate a new frame of the requested
// size. This isn't the most efficient thing, but for now we don't
@@ -294,8 +294,8 @@ static jint
return 0;
}
-static jint
-(JNICALL _Jv_JNI_PushLocalFrame) (JNIEnv *env, jint size)
+static jint JNICALL
+_Jv_JNI_PushLocalFrame (JNIEnv *env, jint size)
{
jint r = _Jv_JNI_EnsureLocalCapacity (env, size);
if (r < 0)
@@ -307,8 +307,8 @@ static jint
return 0;
}
-static jobject
-(JNICALL _Jv_JNI_NewLocalRef) (JNIEnv *env, jobject obj)
+static jobject JNICALL
+_Jv_JNI_NewLocalRef (JNIEnv *env, jobject obj)
{
// This seems weird but I think it is correct.
obj = unwrap (obj);
@@ -348,8 +348,8 @@ static jobject
return obj;
}
-static jobject
-(JNICALL _Jv_JNI_PopLocalFrame) (JNIEnv *env, jobject result, int stop)
+static jobject JNICALL
+_Jv_JNI_PopLocalFrame (JNIEnv *env, jobject result, int stop)
{
_Jv_JNI_LocalFrame *rf = env->locals;
@@ -383,8 +383,8 @@ static jobject
return result == NULL ? NULL : _Jv_JNI_NewLocalRef (env, result);
}
-static jobject
-(JNICALL _Jv_JNI_PopLocalFrame) (JNIEnv *env, jobject result)
+static jobject JNICALL
+_Jv_JNI_PopLocalFrame (JNIEnv *env, jobject result)
{
return _Jv_JNI_PopLocalFrame (env, result, MARK_USER);
}
@@ -455,14 +455,14 @@ wrap_value (JNIEnv *env, T *value)
-static jint
-(JNICALL _Jv_JNI_GetVersion) (JNIEnv *)
+static jint JNICALL
+_Jv_JNI_GetVersion (JNIEnv *)
{
return JNI_VERSION_1_4;
}
-static jclass
-(JNICALL _Jv_JNI_DefineClass) (JNIEnv *env, const char *name, jobject loader,
+static jclass JNICALL
+_Jv_JNI_DefineClass (JNIEnv *env, const char *name, jobject loader,
const jbyte *buf, jsize bufLen)
{
try
@@ -488,8 +488,8 @@ static jclass
}
}
-static jclass
-(JNICALL _Jv_JNI_FindClass) (JNIEnv *env, const char *name)
+static jclass JNICALL
+_Jv_JNI_FindClass (JNIEnv *env, const char *name)
{
// FIXME: assume that NAME isn't too long.
int len = strlen (name);
@@ -524,20 +524,20 @@ static jclass
return (jclass) wrap_value (env, r);
}
-static jclass
-(JNICALL _Jv_JNI_GetSuperclass) (JNIEnv *env, jclass clazz)
+static jclass JNICALL
+_Jv_JNI_GetSuperclass (JNIEnv *env, jclass clazz)
{
return (jclass) wrap_value (env, unwrap (clazz)->getSuperclass ());
}
-static jboolean
-(JNICALL _Jv_JNI_IsAssignableFrom) (JNIEnv *, jclass clazz1, jclass clazz2)
+static jboolean JNICALL
+_Jv_JNI_IsAssignableFrom (JNIEnv *, jclass clazz1, jclass clazz2)
{
return unwrap (clazz1)->isAssignableFrom (unwrap (clazz2));
}
-static jint
-(JNICALL _Jv_JNI_Throw) (JNIEnv *env, jthrowable obj)
+static jint JNICALL
+_Jv_JNI_Throw (JNIEnv *env, jthrowable obj)
{
// We check in case the user did some funky cast.
obj = unwrap (obj);
@@ -546,8 +546,8 @@ static jint
return 0;
}
-static jint
-(JNICALL _Jv_JNI_ThrowNew) (JNIEnv *env, jclass clazz, const char *message)
+static jint JNICALL
+_Jv_JNI_ThrowNew (JNIEnv *env, jclass clazz, const char *message)
{
using namespace java::lang::reflect;
@@ -583,47 +583,47 @@ static jint
return r;
}
-static jthrowable
-(JNICALL _Jv_JNI_ExceptionOccurred) (JNIEnv *env)
+static jthrowable JNICALL
+_Jv_JNI_ExceptionOccurred (JNIEnv *env)
{
return (jthrowable) wrap_value (env, env->ex);
}
-static void
-(JNICALL _Jv_JNI_ExceptionDescribe) (JNIEnv *env)
+static void JNICALL
+_Jv_JNI_ExceptionDescribe (JNIEnv *env)
{
if (env->ex != NULL)
env->ex->printStackTrace();
}
-static void
-(JNICALL _Jv_JNI_ExceptionClear) (JNIEnv *env)
+static void JNICALL
+_Jv_JNI_ExceptionClear (JNIEnv *env)
{
env->ex = NULL;
}
-static jboolean
-(JNICALL _Jv_JNI_ExceptionCheck) (JNIEnv *env)
+static jboolean JNICALL
+_Jv_JNI_ExceptionCheck (JNIEnv *env)
{
return env->ex != NULL;
}
-static void
-(JNICALL _Jv_JNI_FatalError) (JNIEnv *, const char *message)
+static void JNICALL
+_Jv_JNI_FatalError (JNIEnv *, const char *message)
{
JvFail (message);
}
-static jboolean
-(JNICALL _Jv_JNI_IsSameObject) (JNIEnv *, jobject obj1, jobject obj2)
+static jboolean JNICALL
+_Jv_JNI_IsSameObject (JNIEnv *, jobject obj1, jobject obj2)
{
return unwrap (obj1) == unwrap (obj2);
}
-static jobject
-(JNICALL _Jv_JNI_AllocObject) (JNIEnv *env, jclass clazz)
+static jobject JNICALL
+_Jv_JNI_AllocObject (JNIEnv *env, jclass clazz)
{
jobject obj = NULL;
using namespace java::lang::reflect;
@@ -645,16 +645,16 @@ static jobject
return wrap_value (env, obj);
}
-static jclass
-(JNICALL _Jv_JNI_GetObjectClass) (JNIEnv *env, jobject obj)
+static jclass JNICALL
+_Jv_JNI_GetObjectClass (JNIEnv *env, jobject obj)
{
obj = unwrap (obj);
JvAssert (obj);
return (jclass) wrap_value (env, obj->getClass());
}
-static jboolean
-(JNICALL _Jv_JNI_IsInstanceOf) (JNIEnv *, jobject obj, jclass clazz)
+static jboolean JNICALL
+_Jv_JNI_IsInstanceOf (JNIEnv *, jobject obj, jclass clazz)
{
return unwrap (clazz)->isInstance(unwrap (obj));
}
@@ -666,8 +666,8 @@ static jboolean
//
template<jboolean is_static>
-static jmethodID
-(JNICALL _Jv_JNI_GetAnyMethodID) (JNIEnv *env, jclass clazz,
+static jmethodID JNICALL
+_Jv_JNI_GetAnyMethodID (JNIEnv *env, jclass clazz,
const char *name, const char *sig)
{
try
@@ -765,8 +765,8 @@ array_from_valist (jvalue *values, JArray<jclass> *arg_types, va_list vargs)
// This can call any sort of method: virtual, "nonvirtual", static, or
// constructor.
template<typename T, invocation_type style>
-static T
-(JNICALL _Jv_JNI_CallAnyMethodV) (JNIEnv *env, jobject obj, jclass klass,
+static T JNICALL
+_Jv_JNI_CallAnyMethodV (JNIEnv *env, jobject obj, jclass klass,
jmethodID id, va_list vargs)
{
obj = unwrap (obj);
@@ -807,8 +807,8 @@ static T
}
template<typename T, invocation_type style>
-static T
-(JNICALL _Jv_JNI_CallAnyMethod) (JNIEnv *env, jobject obj, jclass klass,
+static T JNICALL
+_Jv_JNI_CallAnyMethod (JNIEnv *env, jobject obj, jclass klass,
jmethodID method, ...)
{
va_list args;
@@ -822,8 +822,8 @@ static T
}
template<typename T, invocation_type style>
-static T
-(JNICALL _Jv_JNI_CallAnyMethodA) (JNIEnv *env, jobject obj, jclass klass,
+static T JNICALL
+_Jv_JNI_CallAnyMethodA (JNIEnv *env, jobject obj, jclass klass,
jmethodID id, jvalue *args)
{
obj = unwrap (obj);
@@ -871,8 +871,8 @@ static T
}
template<invocation_type style>
-static void
-(JNICALL _Jv_JNI_CallAnyVoidMethodV) (JNIEnv *env, jobject obj, jclass klass,
+static void JNICALL
+_Jv_JNI_CallAnyVoidMethodV (JNIEnv *env, jobject obj, jclass klass,
jmethodID id, va_list vargs)
{
obj = unwrap (obj);
@@ -907,8 +907,8 @@ static void
}
template<invocation_type style>
-static void
-(JNICALL _Jv_JNI_CallAnyVoidMethod) (JNIEnv *env, jobject obj, jclass klass,
+static void JNICALL
+_Jv_JNI_CallAnyVoidMethod (JNIEnv *env, jobject obj, jclass klass,
jmethodID method, ...)
{
va_list args;
@@ -919,8 +919,8 @@ static void
}
template<invocation_type style>
-static void
-(JNICALL _Jv_JNI_CallAnyVoidMethodA) (JNIEnv *env, jobject obj, jclass klass,
+static void JNICALL
+_Jv_JNI_CallAnyVoidMethodA (JNIEnv *env, jobject obj, jclass klass,
jmethodID id, jvalue *args)
{
jclass decl_class = klass ? klass : obj->getClass ();
@@ -958,8 +958,8 @@ static void
// Functions with this signature are used to implement functions in
// the CallMethod family.
template<typename T>
-static T
-(JNICALL _Jv_JNI_CallMethodV) (JNIEnv *env, jobject obj,
+static T JNICALL
+_Jv_JNI_CallMethodV (JNIEnv *env, jobject obj,
jmethodID id, va_list args)
{
return _Jv_JNI_CallAnyMethodV<T, normal> (env, obj, NULL, id, args);
@@ -968,8 +968,8 @@ static T
// Functions with this signature are used to implement functions in
// the CallMethod family.
template<typename T>
-static T
-(JNICALL _Jv_JNI_CallMethod) (JNIEnv *env, jobject obj, jmethodID id, ...)
+static T JNICALL
+_Jv_JNI_CallMethod (JNIEnv *env, jobject obj, jmethodID id, ...)
{
va_list args;
T result;
@@ -984,22 +984,22 @@ static T
// Functions with this signature are used to implement functions in
// the CallMethod family.
template<typename T>
-static T
-(JNICALL _Jv_JNI_CallMethodA) (JNIEnv *env, jobject obj,
+static T JNICALL
+_Jv_JNI_CallMethodA (JNIEnv *env, jobject obj,
jmethodID id, jvalue *args)
{
return _Jv_JNI_CallAnyMethodA<T, normal> (env, obj, NULL, id, args);
}
-static void
-(JNICALL _Jv_JNI_CallVoidMethodV) (JNIEnv *env, jobject obj,
+static void JNICALL
+_Jv_JNI_CallVoidMethodV (JNIEnv *env, jobject obj,
jmethodID id, va_list args)
{
_Jv_JNI_CallAnyVoidMethodV<normal> (env, obj, NULL, id, args);
}
-static void
-(JNICALL _Jv_JNI_CallVoidMethod) (JNIEnv *env, jobject obj, jmethodID id, ...)
+static void JNICALL
+_Jv_JNI_CallVoidMethod (JNIEnv *env, jobject obj, jmethodID id, ...)
{
va_list args;
@@ -1008,8 +1008,8 @@ static void
va_end (args);
}
-static void
-(JNICALL _Jv_JNI_CallVoidMethodA) (JNIEnv *env, jobject obj,
+static void JNICALL
+_Jv_JNI_CallVoidMethodA (JNIEnv *env, jobject obj,
jmethodID id, jvalue *args)
{
_Jv_JNI_CallAnyVoidMethodA<normal> (env, obj, NULL, id, args);
@@ -1018,8 +1018,8 @@ static void
// Functions with this signature are used to implement functions in
// the CallStaticMethod family.
template<typename T>
-static T
-(JNICALL _Jv_JNI_CallStaticMethodV) (JNIEnv *env, jclass klass,
+static T JNICALL
+_Jv_JNI_CallStaticMethodV (JNIEnv *env, jclass klass,
jmethodID id, va_list args)
{
JvAssert (((id->accflags) & java::lang::reflect::Modifier::STATIC));
@@ -1031,8 +1031,8 @@ static T
// Functions with this signature are used to implement functions in
// the CallStaticMethod family.
template<typename T>
-static T
-(JNICALL _Jv_JNI_CallStaticMethod) (JNIEnv *env, jclass klass,
+static T JNICALL
+_Jv_JNI_CallStaticMethod (JNIEnv *env, jclass klass,
jmethodID id, ...)
{
va_list args;
@@ -1052,8 +1052,8 @@ static T
// Functions with this signature are used to implement functions in
// the CallStaticMethod family.
template<typename T>
-static T
-(JNICALL _Jv_JNI_CallStaticMethodA) (JNIEnv *env, jclass klass, jmethodID id,
+static T JNICALL
+_Jv_JNI_CallStaticMethodA (JNIEnv *env, jclass klass, jmethodID id,
jvalue *args)
{
JvAssert (((id->accflags) & java::lang::reflect::Modifier::STATIC));
@@ -1062,15 +1062,15 @@ static T
return _Jv_JNI_CallAnyMethodA<T, static_type> (env, NULL, klass, id, args);
}
-static void
-(JNICALL _Jv_JNI_CallStaticVoidMethodV) (JNIEnv *env, jclass klass,
+static void JNICALL
+_Jv_JNI_CallStaticVoidMethodV (JNIEnv *env, jclass klass,
jmethodID id, va_list args)
{
_Jv_JNI_CallAnyVoidMethodV<static_type> (env, NULL, klass, id, args);
}
-static void
-(JNICALL _Jv_JNI_CallStaticVoidMethod) (JNIEnv *env, jclass klass,
+static void JNICALL
+_Jv_JNI_CallStaticVoidMethod (JNIEnv *env, jclass klass,
jmethodID id, ...)
{
va_list args;
@@ -1080,15 +1080,15 @@ static void
va_end (args);
}
-static void
-(JNICALL _Jv_JNI_CallStaticVoidMethodA) (JNIEnv *env, jclass klass,
+static void JNICALL
+_Jv_JNI_CallStaticVoidMethodA (JNIEnv *env, jclass klass,
jmethodID id, jvalue *args)
{
_Jv_JNI_CallAnyVoidMethodA<static_type> (env, NULL, klass, id, args);
}
-static jobject
-(JNICALL _Jv_JNI_NewObjectV) (JNIEnv *env, jclass klass,
+static jobject JNICALL
+_Jv_JNI_NewObjectV (JNIEnv *env, jclass klass,
jmethodID id, va_list args)
{
JvAssert (klass && ! klass->isArray ());
@@ -1102,8 +1102,8 @@ static jobject
id, args);
}
-static jobject
-(JNICALL _Jv_JNI_NewObject) (JNIEnv *env, jclass klass, jmethodID id, ...)
+static jobject JNICALL
+_Jv_JNI_NewObject (JNIEnv *env, jclass klass, jmethodID id, ...)
{
JvAssert (klass && ! klass->isArray ());
JvAssert (! strcmp (id->name->data, "<init>")
@@ -1123,8 +1123,8 @@ static jobject
return result;
}
-static jobject
-(JNICALL _Jv_JNI_NewObjectA) (JNIEnv *env, jclass klass, jmethodID id,
+static jobject JNICALL
+_Jv_JNI_NewObjectA (JNIEnv *env, jclass klass, jmethodID id,
jvalue *args)
{
JvAssert (klass && ! klass->isArray ());
@@ -1141,8 +1141,8 @@ static jobject
template<typename T>
-static T
-(JNICALL _Jv_JNI_GetField) (JNIEnv *env, jobject obj, jfieldID field)
+static T JNICALL
+_Jv_JNI_GetField (JNIEnv *env, jobject obj, jfieldID field)
{
obj = unwrap (obj);
JvAssert (obj);
@@ -1151,8 +1151,8 @@ static T
}
template<typename T>
-static void
-(JNICALL _Jv_JNI_SetField) (JNIEnv *, jobject obj, jfieldID field, T value)
+static void JNICALL
+_Jv_JNI_SetField (JNIEnv *, jobject obj, jfieldID field, T value)
{
obj = unwrap (obj);
value = unwrap (value);
@@ -1163,8 +1163,8 @@ static void
}
template<jboolean is_static>
-static jfieldID
-(JNICALL _Jv_JNI_GetAnyFieldID) (JNIEnv *env, jclass clazz,
+static jfieldID JNICALL
+_Jv_JNI_GetAnyFieldID (JNIEnv *env, jclass clazz,
const char *name, const char *sig)
{
try
@@ -1224,24 +1224,24 @@ static jfieldID
}
template<typename T>
-static T
-(JNICALL _Jv_JNI_GetStaticField) (JNIEnv *env, jclass, jfieldID field)
+static T JNICALL
+_Jv_JNI_GetStaticField (JNIEnv *env, jclass, jfieldID field)
{
T *ptr = (T *) field->u.addr;
return wrap_value (env, *ptr);
}
template<typename T>
-static void
-(JNICALL _Jv_JNI_SetStaticField) (JNIEnv *, jclass, jfieldID field, T value)
+static void JNICALL
+_Jv_JNI_SetStaticField (JNIEnv *, jclass, jfieldID field, T value)
{
value = unwrap (value);
T *ptr = (T *) field->u.addr;
*ptr = value;
}
-static jstring
-(JNICALL _Jv_JNI_NewString) (JNIEnv *env, const jchar *unichars, jsize len)
+static jstring JNICALL
+_Jv_JNI_NewString (JNIEnv *env, const jchar *unichars, jsize len)
{
try
{
@@ -1255,14 +1255,14 @@ static jstring
}
}
-static jsize
-(JNICALL _Jv_JNI_GetStringLength) (JNIEnv *, jstring string)
+static jsize JNICALL
+_Jv_JNI_GetStringLength (JNIEnv *, jstring string)
{
return unwrap (string)->length();
}
-static const jchar *
-(JNICALL _Jv_JNI_GetStringChars) (JNIEnv *, jstring string, jboolean *isCopy)
+static const jchar * JNICALL
+_Jv_JNI_GetStringChars (JNIEnv *, jstring string, jboolean *isCopy)
{
string = unwrap (string);
jchar *result = _Jv_GetStringChars (string);
@@ -1272,14 +1272,14 @@ static const jchar *
return (const jchar *) result;
}
-static void
-(JNICALL _Jv_JNI_ReleaseStringChars) (JNIEnv *, jstring string, const jchar *)
+static void JNICALL
+_Jv_JNI_ReleaseStringChars (JNIEnv *, jstring string, const jchar *)
{
unmark_for_gc (unwrap (string), global_ref_table);
}
-static jstring
-(JNICALL _Jv_JNI_NewStringUTF) (JNIEnv *env, const char *bytes)
+static jstring JNICALL
+_Jv_JNI_NewStringUTF (JNIEnv *env, const char *bytes)
{
try
{
@@ -1293,14 +1293,14 @@ static jstring
}
}
-static jsize
-(JNICALL _Jv_JNI_GetStringUTFLength) (JNIEnv *, jstring string)
+static jsize JNICALL
+_Jv_JNI_GetStringUTFLength (JNIEnv *, jstring string)
{
return JvGetStringUTFLength (unwrap (string));
}
-static const char *
-(JNICALL _Jv_JNI_GetStringUTFChars) (JNIEnv *env, jstring string,
+static const char * JNICALL
+_Jv_JNI_GetStringUTFChars (JNIEnv *env, jstring string,
jboolean *isCopy)
{
try
@@ -1325,14 +1325,14 @@ static const char *
}
}
-static void
-(JNICALL _Jv_JNI_ReleaseStringUTFChars) (JNIEnv *, jstring, const char *utf)
+static void JNICALL
+_Jv_JNI_ReleaseStringUTFChars (JNIEnv *, jstring, const char *utf)
{
_Jv_Free ((void *) utf);
}
-static void
-(JNICALL _Jv_JNI_GetStringRegion) (JNIEnv *env, jstring string, jsize start,
+static void JNICALL
+_Jv_JNI_GetStringRegion (JNIEnv *env, jstring string, jsize start,
jsize len, jchar *buf)
{
string = unwrap (string);
@@ -1353,8 +1353,8 @@ static void
memcpy (buf, &result[start], len * sizeof (jchar));
}
-static void
-(JNICALL _Jv_JNI_GetStringUTFRegion) (JNIEnv *env, jstring str, jsize start,
+static void JNICALL
+_Jv_JNI_GetStringUTFRegion (JNIEnv *env, jstring str, jsize start,
jsize len, char *buf)
{
str = unwrap (str);
@@ -1375,8 +1375,8 @@ static void
_Jv_GetStringUTFRegion (str, start, len, buf);
}
-static const jchar *
-(JNICALL _Jv_JNI_GetStringCritical) (JNIEnv *, jstring str, jboolean *isCopy)
+static const jchar * JNICALL
+_Jv_JNI_GetStringCritical (JNIEnv *, jstring str, jboolean *isCopy)
{
jchar *result = _Jv_GetStringChars (unwrap (str));
if (isCopy)
@@ -1384,20 +1384,20 @@ static const jchar *
return result;
}
-static void
-(JNICALL _Jv_JNI_ReleaseStringCritical) (JNIEnv *, jstring, const jchar *)
+static void JNICALL
+_Jv_JNI_ReleaseStringCritical (JNIEnv *, jstring, const jchar *)
{
// Nothing.
}
-static jsize
-(JNICALL _Jv_JNI_GetArrayLength) (JNIEnv *, jarray array)
+static jsize JNICALL
+_Jv_JNI_GetArrayLength (JNIEnv *, jarray array)
{
return unwrap (array)->length;
}
-static jarray
-(JNICALL _Jv_JNI_NewObjectArray) (JNIEnv *env, jsize length,
+static jarray JNICALL
+_Jv_JNI_NewObjectArray (JNIEnv *env, jsize length,
jclass elementClass, jobject init)
{
try
@@ -1416,8 +1416,8 @@ static jarray
}
}
-static jobject
-(JNICALL _Jv_JNI_GetObjectArrayElement) (JNIEnv *env, jobjectArray array,
+static jobject JNICALL
+_Jv_JNI_GetObjectArrayElement (JNIEnv *env, jobjectArray array,
jsize index)
{
if ((unsigned) index >= (unsigned) array->length)
@@ -1426,8 +1426,8 @@ static jobject
return wrap_value (env, elts[index]);
}
-static void
-(JNICALL _Jv_JNI_SetObjectArrayElement) (JNIEnv *env, jobjectArray array,
+static void JNICALL
+_Jv_JNI_SetObjectArrayElement (JNIEnv *env, jobjectArray array,
jsize index, jobject value)
{
try
@@ -1448,8 +1448,8 @@ static void
}
template<typename T, jclass K>
-static JArray<T> *
-(JNICALL _Jv_JNI_NewPrimitiveArray) (JNIEnv *env, jsize length)
+static JArray<T> * JNICALL
+_Jv_JNI_NewPrimitiveArray (JNIEnv *env, jsize length)
{
try
{
@@ -1463,8 +1463,8 @@ static JArray<T> *
}
template<typename T, jclass K>
-static T *
-(JNICALL _Jv_JNI_GetPrimitiveArrayElements) (JNIEnv *env, JArray<T> *array,
+static T * JNICALL
+_Jv_JNI_GetPrimitiveArrayElements (JNIEnv *env, JArray<T> *array,
jboolean *isCopy)
{
array = unwrap (array);
@@ -1481,8 +1481,8 @@ static T *
}
template<typename T, jclass K>
-static void
-(JNICALL _Jv_JNI_ReleasePrimitiveArrayElements) (JNIEnv *env, JArray<T> *array,
+static void JNICALL
+_Jv_JNI_ReleasePrimitiveArrayElements (JNIEnv *env, JArray<T> *array,
T *, jint /* mode */)
{
array = unwrap (array);
@@ -1494,8 +1494,8 @@ static void
}
template<typename T, jclass K>
-static void
-(JNICALL _Jv_JNI_GetPrimitiveArrayRegion) (JNIEnv *env, JArray<T> *array,
+static void JNICALL
+_Jv_JNI_GetPrimitiveArrayRegion (JNIEnv *env, JArray<T> *array,
jsize start, jsize len,
T *buf)
{
@@ -1526,8 +1526,8 @@ static void
}
template<typename T, jclass K>
-static void
-(JNICALL _Jv_JNI_SetPrimitiveArrayRegion) (JNIEnv *env, JArray<T> *array,
+static void JNICALL
+_Jv_JNI_SetPrimitiveArrayRegion (JNIEnv *env, JArray<T> *array,
jsize start, jsize len, T *buf)
{
array = unwrap (array);
@@ -1555,8 +1555,8 @@ static void
}
}
-static void *
-(JNICALL _Jv_JNI_GetPrimitiveArrayCritical) (JNIEnv *, jarray array,
+static void * JNICALL
+_Jv_JNI_GetPrimitiveArrayCritical (JNIEnv *, jarray array,
jboolean *isCopy)
{
array = unwrap (array);
@@ -1569,14 +1569,14 @@ static void *
return r;
}
-static void
-(JNICALL _Jv_JNI_ReleasePrimitiveArrayCritical) (JNIEnv *, jarray, void *, jint)
+static void JNICALL
+_Jv_JNI_ReleasePrimitiveArrayCritical (JNIEnv *, jarray, void *, jint)
{
// Nothing.
}
-static jint
-(JNICALL _Jv_JNI_MonitorEnter) (JNIEnv *env, jobject obj)
+static jint JNICALL
+_Jv_JNI_MonitorEnter (JNIEnv *env, jobject obj)
{
try
{
@@ -1590,8 +1590,8 @@ static jint
return JNI_ERR;
}
-static jint
-(JNICALL _Jv_JNI_MonitorExit) (JNIEnv *env, jobject obj)
+static jint JNICALL
+_Jv_JNI_MonitorExit (JNIEnv *env, jobject obj)
{
try
{
@@ -1606,8 +1606,8 @@ static jint
}
// JDK 1.2
-jobject
-(JNICALL _Jv_JNI_ToReflectedField) (JNIEnv *env, jclass cls, jfieldID fieldID,
+jobject JNICALL
+_Jv_JNI_ToReflectedField (JNIEnv *env, jclass cls, jfieldID fieldID,
jboolean)
{
try
@@ -1627,8 +1627,8 @@ jobject
}
// JDK 1.2
-static jfieldID
-(JNICALL _Jv_JNI_FromReflectedField) (JNIEnv *, jobject f)
+static jfieldID JNICALL
+_Jv_JNI_FromReflectedField (JNIEnv *, jobject f)
{
using namespace java::lang::reflect;
@@ -1637,8 +1637,8 @@ static jfieldID
return _Jv_FromReflectedField (field);
}
-jobject
-(JNICALL _Jv_JNI_ToReflectedMethod) (JNIEnv *env, jclass klass, jmethodID id,
+jobject JNICALL
+_Jv_JNI_ToReflectedMethod (JNIEnv *env, jclass klass, jmethodID id,
jboolean)
{
using namespace java::lang::reflect;
@@ -1672,8 +1672,8 @@ jobject
return wrap_value (env, result);
}
-static jmethodID
-(JNICALL _Jv_JNI_FromReflectedMethod) (JNIEnv *, jobject method)
+static jmethodID JNICALL
+_Jv_JNI_FromReflectedMethod (JNIEnv *, jobject method)
{
using namespace java::lang::reflect;
method = unwrap (method);
@@ -1684,8 +1684,8 @@ static jmethodID
}
// JDK 1.2.
-jweak
-(JNICALL _Jv_JNI_NewWeakGlobalRef) (JNIEnv *env, jobject obj)
+jweak JNICALL
+_Jv_JNI_NewWeakGlobalRef (JNIEnv *env, jobject obj)
{
using namespace gnu::gcj::runtime;
JNIWeakRef *ref = NULL;
@@ -1705,8 +1705,8 @@ jweak
return reinterpret_cast<jweak> (ref);
}
-void
-(JNICALL _Jv_JNI_DeleteWeakGlobalRef) (JNIEnv *, jweak obj)
+void JNICALL
+_Jv_JNI_DeleteWeakGlobalRef (JNIEnv *, jweak obj)
{
using namespace gnu::gcj::runtime;
JNIWeakRef *ref = reinterpret_cast<JNIWeakRef *> (obj);
@@ -1718,8 +1718,8 @@ void
// Direct byte buffers.
-static jobject
-(JNICALL _Jv_JNI_NewDirectByteBuffer) (JNIEnv *, void *address, jlong length)
+static jobject JNICALL
+_Jv_JNI_NewDirectByteBuffer (JNIEnv *, void *address, jlong length)
{
using namespace gnu::gcj;
using namespace java::nio;
@@ -1727,16 +1727,16 @@ static jobject
length);
}
-static void *
-(JNICALL _Jv_JNI_GetDirectBufferAddress) (JNIEnv *, jobject buffer)
+static void * JNICALL
+_Jv_JNI_GetDirectBufferAddress (JNIEnv *, jobject buffer)
{
using namespace java::nio;
DirectByteBufferImpl* bb = static_cast<DirectByteBufferImpl *> (buffer);
return reinterpret_cast<void *> (bb->address);
}
-static jlong
-(JNICALL _Jv_JNI_GetDirectBufferCapacity) (JNIEnv *, jobject buffer)
+static jlong JNICALL
+_Jv_JNI_GetDirectBufferCapacity (JNIEnv *, jobject buffer)
{
using namespace java::nio;
DirectByteBufferImpl* bb = static_cast<DirectByteBufferImpl *> (buffer);
@@ -1859,8 +1859,8 @@ nathash_add (const JNINativeMethod *method)
slot->fnPtr = method->fnPtr;
}
-static jint
-(JNICALL _Jv_JNI_RegisterNatives) (JNIEnv *env, jclass klass,
+static jint JNICALL
+_Jv_JNI_RegisterNatives (JNIEnv *env, jclass klass,
const JNINativeMethod *methods,
jint nMethods)
{
@@ -1913,8 +1913,8 @@ static jint
return JNI_OK;
}
-static jint
-(JNICALL _Jv_JNI_UnregisterNatives) (JNIEnv *, jclass)
+static jint JNICALL
+_Jv_JNI_UnregisterNatives (JNIEnv *, jclass)
{
// FIXME -- we could implement this.
return JNI_ERR;
@@ -2300,21 +2300,21 @@ _Jv_JNI_AttachCurrentThread (JavaVM *, jstring name, void **penv,
}
// This is the one actually used by JNI.
-static jint
-(JNICALL _Jv_JNI_AttachCurrentThread) (JavaVM *vm, void **penv, void *args)
+static jint JNICALL
+_Jv_JNI_AttachCurrentThread (JavaVM *vm, void **penv, void *args)
{
return _Jv_JNI_AttachCurrentThread (vm, NULL, penv, args, false);
}
-static jint
-(JNICALL _Jv_JNI_AttachCurrentThreadAsDaemon) (JavaVM *vm, void **penv,
+static jint JNICALL
+_Jv_JNI_AttachCurrentThreadAsDaemon (JavaVM *vm, void **penv,
void *args)
{
return _Jv_JNI_AttachCurrentThread (vm, NULL, penv, args, true);
}
-static jint
-(JNICALL _Jv_JNI_DestroyJavaVM) (JavaVM *vm)
+static jint JNICALL
+_Jv_JNI_DestroyJavaVM (JavaVM *vm)
{
JvAssert (the_vm && vm == the_vm);
@@ -2347,15 +2347,15 @@ static jint
return JNI_ERR;
}
-jint
-(JNICALL _Jv_JNI_DetachCurrentThread) (JavaVM *)
+jint JNICALL
+_Jv_JNI_DetachCurrentThread (JavaVM *)
{
jint code = _Jv_DetachCurrentThread ();
return code ? JNI_EDETACHED : 0;
}
-static jint
-(JNICALL _Jv_JNI_GetEnv) (JavaVM *, void **penv, jint version)
+static jint JNICALL
+_Jv_JNI_GetEnv (JavaVM *, void **penv, jint version)
{
if (_Jv_ThreadCurrent () == NULL)
{
@@ -2506,8 +2506,8 @@ _Jv_GetJavaVM ()
return the_vm;
}
-static jint
-(JNICALL _Jv_JNI_GetJavaVM) (JNIEnv *, JavaVM **vm)
+static jint JNICALL
+_Jv_JNI_GetJavaVM (JNIEnv *, JavaVM **vm)
{
*vm = _Jv_GetJavaVM ();
return *vm == NULL ? JNI_ERR : JNI_OK;
diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
index 667e459a03a..6bc24872dfa 100644
--- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
+++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
@@ -404,6 +404,7 @@ awt_keycode_to_keysym (jint keyCode, jint keyLocation)
}
}
+
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetCursor
(JNIEnv *env, jobject obj, jint type)
@@ -867,13 +868,30 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkSetFont
(*env)->ReleaseStringUTFChars (env, name, font_name);
}
-void
-set_visible (GtkWidget *widget, jboolean visible)
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkComponentPeer_show
+ (JNIEnv *env, jobject obj)
{
- if (visible)
- gtk_widget_show (widget);
- else
- gtk_widget_hide (widget);
+ void *ptr;
+
+ ptr = NSA_GET_PTR (env, obj);
+
+ gdk_threads_enter();
+ gtk_widget_show (GTK_WIDGET (ptr));
+ gdk_threads_leave();
+}
+
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkComponentPeer_hide
+ (JNIEnv *env, jobject obj)
+{
+ void *ptr;
+
+ ptr = NSA_GET_PTR (env, obj);
+
+ gdk_threads_enter();
+ gtk_widget_hide (GTK_WIDGET (ptr));
+ gdk_threads_leave();
}
GtkLayout *
diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
index add9ef558ca..95bec4a10be 100644
--- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
+++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
@@ -40,13 +40,9 @@ exception statement from your version. */
#include "gnu_java_awt_peer_gtk_GtkComponentPeer.h"
#include "gnu_java_awt_peer_gtk_GtkFileDialogPeer.h"
-static void window_closed (GtkDialog *dialog,
+static void handle_response (GtkDialog *dialog,
gint responseId,
jobject peer_obj);
-static void ok_clicked (GtkButton *button,
- jobject peer_obj);
-static void cancel_clicked (GtkButton *button,
- jobject peer_obj);
/*
* Make a new file selection dialog
@@ -54,16 +50,28 @@ static void cancel_clicked (GtkButton *button,
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_create
- (JNIEnv *env, jobject obj)
+ (JNIEnv *env, jobject obj, jobject parent)
{
+ void *parentp;
gpointer widget;
/* Create global reference and save it for future use */
NSA_SET_GLOBAL_REF (env, obj);
+ parentp = NSA_GET_PTR(env, parent);
+
gdk_threads_enter ();
- widget = gtk_file_selection_new ("");
+ widget = gtk_file_chooser_dialog_new("",
+ GTK_WINDOW(parentp),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_OK, GTK_RESPONSE_OK,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ NULL);
+
+ /* GtkFileChooser doesn't show hidden files by default. */
+ g_object_set(GTK_FILE_CHOOSER(widget), "show_hidden", TRUE);
+
/* GtkFileSelect is not modal by default */
gtk_window_set_modal (GTK_WINDOW (widget), TRUE);
@@ -103,19 +111,9 @@ Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_connectSignals
gtk_widget_realize (GTK_WIDGET (ptr));
- /* connect buttons to handlers */
-
g_signal_connect (G_OBJECT (GTK_DIALOG (ptr)),
"response",
- GTK_SIGNAL_FUNC (window_closed), *gref);
-
- g_signal_connect (G_OBJECT (GTK_FILE_SELECTION (ptr)->ok_button),
- "clicked",
- GTK_SIGNAL_FUNC (ok_clicked), *gref);
-
- g_signal_connect (G_OBJECT (GTK_FILE_SELECTION (ptr)->cancel_button),
- "clicked",
- GTK_SIGNAL_FUNC (cancel_clicked), *gref);
+ GTK_SIGNAL_FUNC (handle_response), *gref);
gdk_threads_leave ();
@@ -123,107 +121,156 @@ Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_connectSignals
Java_gnu_java_awt_peer_gtk_GtkComponentPeer_connectSignals (env, obj);
}
-/*
- * Set the filename in the file selection dialog.
- */
-
-JNIEXPORT void JNICALL
-Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_nativeSetFile
- (JNIEnv *env, jobject obj, jstring filename)
+JNIEXPORT jstring JNICALL
+Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_nativeGetDirectory
+ (JNIEnv *env, jobject obj)
{
void *ptr;
const char *str;
ptr = NSA_GET_PTR (env, obj);
- str = (*env)->GetStringUTFChars (env, filename, 0);
-
gdk_threads_enter ();
- gtk_file_selection_set_filename (GTK_FILE_SELECTION (ptr), str);
+ str = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER(ptr));
gdk_threads_leave ();
- (*env)->ReleaseStringUTFChars (env, filename, str);
+ return (*env)->NewStringUTF(env, str);
}
-static void
-window_closed (GtkDialog *dialog __attribute__((unused)),
- gint responseId,
- jobject peer_obj)
+
+/* This function interfaces with the Java callback method of the same name.
+ This function extracts the filename from the GtkFileFilterInfo object,
+ and passes it to the Java method. The Java method will call the filter's
+ accept() method and will give back the return value. */
+gboolean filenameFilterCallback (const GtkFileFilterInfo *filter_info,
+ gpointer obj)
{
- static int isIDSet = 0;
- static jmethodID disposeID;
- void *ptr;
+ gchar* dirname;
+ jclass cx;
+ jmethodID id;
+ jstring *filename;
- /* We only need this for the case when the user closed the window. */
- if (responseId != GTK_RESPONSE_DELETE_EVENT)
- return;
+ cx = (*gdk_env)->GetObjectClass (gdk_env, (jobject) obj);
+ id = (*gdk_env)->GetMethodID (gdk_env, cx, "filenameFilterCallback",
+ "(Ljava/lang/String;)Z");
- ptr = NSA_GET_PTR (gdk_env, peer_obj);
+ filename = (*gdk_env)->NewStringUTF(gdk_env, filter_info->filename);
- if (!isIDSet)
+ gdk_threads_leave();
+ gboolean accepted = (*gdk_env)->CallBooleanMethod(gdk_env, obj, id, filename);
+ gdk_threads_enter();
+
+ return accepted;
+}
+
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_nativeSetFilenameFilter
+ (JNIEnv *env, jobject obj, jobject filter_obj)
{
- jclass cx = (*gdk_env)->GetObjectClass (gdk_env, peer_obj);
- disposeID = (*gdk_env)->GetMethodID (gdk_env, cx, "gtkDisposeFileDialog", "()V");
- isIDSet = 1;
+ void *ptr;
+ GtkFileFilter *filter;
+
+ ptr = NSA_GET_PTR (env, obj);
+
+ gdk_threads_enter ();
+
+ filter = gtk_file_filter_new();
+ gtk_file_filter_add_custom(filter,
+ GTK_FILE_FILTER_FILENAME,
+ G_CALLBACK(filenameFilterCallback),
+ obj,
+ NULL);
+
+ gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(ptr), filter);
+
+ gdk_threads_leave ();
}
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_nativeSetDirectory
+ (JNIEnv *env, jobject obj, jstring directory)
+{
+ void *ptr;
+ const char *str;
+
+ ptr = NSA_GET_PTR (env, obj);
+
+ str = (*env)->GetStringUTFChars (env, directory, 0);
+
+ gdk_threads_enter ();
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER(ptr), str);
gdk_threads_leave ();
- /* We can dispose of the dialog now (and unblock show) */
- (*gdk_env)->CallVoidMethod (gdk_env, peer_obj, disposeID);
+ (*env)->ReleaseStringUTFChars (env, directory, str);
+}
+
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_nativeSetFile
+ (JNIEnv *env, jobject obj, jstring filename)
+{
+ void *ptr;
+ const char *str;
+
+ ptr = NSA_GET_PTR (env, obj);
+
+ str = (*env)->GetStringUTFChars (env, filename, 0);
gdk_threads_enter ();
+ gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (ptr), str);
+ gdk_threads_leave ();
+
+ (*env)->ReleaseStringUTFChars (env, filename, str);
}
static void
-ok_clicked (GtkButton *button __attribute__((unused)),
+handle_response (GtkDialog *dialog __attribute__((unused)),
+ gint responseId,
jobject peer_obj)
{
+ static int isDisposeIDSet = 0;
static int isIDSet = 0;
static jmethodID gtkSetFilenameID;
static jmethodID hideID;
+ static jmethodID disposeID;
void *ptr;
G_CONST_RETURN gchar *fileName;
jstring str_fileName;
- ptr = NSA_GET_PTR (gdk_env, peer_obj);
+ /* We only need this for the case when the user closed the window,
+ or clicked ok or cancel. */
+ if (responseId != GTK_RESPONSE_DELETE_EVENT
+ && responseId != GTK_RESPONSE_OK
+ && responseId != GTK_RESPONSE_CANCEL)
+ return;
- fileName = gtk_file_selection_get_filename (
- GTK_FILE_SELECTION (GTK_WIDGET (ptr)));
+ ptr = NSA_GET_PTR (gdk_env, peer_obj);
- if (!isIDSet)
+ if (responseId == GTK_RESPONSE_DELETE_EVENT)
+ {
+ if (!isDisposeIDSet)
{
jclass cx = (*gdk_env)->GetObjectClass (gdk_env, peer_obj);
- hideID = (*gdk_env)->GetMethodID (gdk_env, cx, "gtkHideFileDialog", "()V");
- gtkSetFilenameID = (*gdk_env)->GetMethodID (gdk_env, cx,
- "gtkSetFilename", "(Ljava/lang/String;)V");
- isIDSet = 1;
+ disposeID = (*gdk_env)->GetMethodID (gdk_env, cx, "gtkDisposeFileDialog", "()V");
+ isDisposeIDSet = 1;
}
gdk_threads_leave ();
- /* Set the Java object field 'file' with this value. */
- str_fileName = (*gdk_env)->NewStringUTF (gdk_env, fileName);
- (*gdk_env)->CallVoidMethod (gdk_env, peer_obj, gtkSetFilenameID, str_fileName);
-
- /* We can hide the dialog now (and unblock show) */
- (*gdk_env)->CallVoidMethod (gdk_env, peer_obj, hideID);
+ /* We can dispose of the dialog now (and unblock show) */
+ (*gdk_env)->CallVoidMethod (gdk_env, peer_obj, disposeID);
gdk_threads_enter ();
+ return;
}
-static void
-cancel_clicked (GtkButton *button __attribute__((unused)),
- jobject peer_obj)
-{
- static int isIDSet = 0;
- static jmethodID gtkSetFilenameID;
- static jmethodID hideID;
- void *ptr;
-
- ptr = NSA_GET_PTR (gdk_env, peer_obj);
+ if (responseId == GTK_RESPONSE_OK) {
+ fileName = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (GTK_WIDGET (ptr)));
+ str_fileName = (*gdk_env)->NewStringUTF (gdk_env, fileName);
+ } else if (responseId == GTK_RESPONSE_CANCEL) {
+ str_fileName = NULL;
+ }
if (!isIDSet)
{
@@ -236,8 +283,8 @@ cancel_clicked (GtkButton *button __attribute__((unused)),
gdk_threads_leave ();
- /* Set the Java object field 'file' with the null value. */
- (*gdk_env)->CallVoidMethod (gdk_env, peer_obj, gtkSetFilenameID, NULL);
+ /* Set the Java object field 'file' with this value. */
+ (*gdk_env)->CallVoidMethod (gdk_env, peer_obj, gtkSetFilenameID, str_fileName);
/* We can hide the dialog now (and unblock show) */
(*gdk_env)->CallVoidMethod (gdk_env, peer_obj, hideID);
@@ -245,4 +292,3 @@ cancel_clicked (GtkButton *button __attribute__((unused)),
gdk_threads_enter ();
}
-
diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c
index fdd42531251..a9da539f223 100644
--- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c
+++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c
@@ -218,7 +218,7 @@ Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkMain
/* This is a big hack, needed until this pango bug is resolved:
http://bugzilla.gnome.org/show_bug.cgi?id=119081.
- See: http://www.geocrawler.com/archives/3/522/2003/8/0/10579352/
+ See: http://mail.gnome.org/archives/gtk-i18n-list/2003-August/msg00001.html
for details. */
static void
init_dpi_conversion_factor ()
diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c
index ca576437f04..835c2348d39 100644
--- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c
+++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c
@@ -53,6 +53,8 @@ Java_gnu_java_awt_peer_gtk_GtkPanelPeer_create
widget = gtk_layout_new (NULL, NULL);
+ GTK_WIDGET_SET_FLAGS (widget, GTK_CAN_FOCUS);
+
gdk_threads_leave ();
NSA_SET_PTR (env, obj, widget);
diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c
index 2807e6b36fc..2d62c33a4d7 100644
--- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c
+++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextComponentPeer.c
@@ -151,6 +151,10 @@ Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_setCaretPosition
GtkWidget *text = NULL;
GtkTextBuffer *buf;
GtkTextIter iter;
+ GtkTextMark *mark;
+ GtkTextMark *oldmark;
+ GtkTextIter olditer;
+ int oldpos;
ptr = NSA_GET_PTR (env, obj);
@@ -174,8 +178,24 @@ Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_setCaretPosition
if (text)
{
buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text));
+
+ /* Save old position. */
+ oldmark = gtk_text_buffer_get_insert (buf);
+ gtk_text_buffer_get_iter_at_mark (buf, &olditer, oldmark);
+ oldpos = gtk_text_iter_get_offset (&olditer);
+
+ /* Move to new position. */
gtk_text_buffer_get_iter_at_offset (buf, &iter, pos);
gtk_text_buffer_place_cursor (buf, &iter);
+
+ /* Scroll to new position. Alignment is determined
+ comparing the new position to the old position. */
+ if (oldpos > pos)
+ gtk_text_view_scroll_to_iter (GTK_TEXT_VIEW (text),
+ &iter, 0, TRUE, 0, 0);
+ else if (oldpos < pos)
+ gtk_text_view_scroll_to_iter (GTK_TEXT_VIEW (text),
+ &iter, 0, TRUE, 1, 1);
}
}
diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
index 29ff203d4e9..4d11e6201bc 100644
--- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
+++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
@@ -54,18 +54,29 @@ static void window_get_frame_extents (GtkWidget *window,
static void request_frame_extents (GtkWidget *window);
-static int property_notify_predicate (Display *xdisplay,
- XEvent *event,
- XPointer window_id);
+static Bool property_notify_predicate (Display *display,
+ XEvent *xevent,
+ XPointer arg);
+
+static GtkLayout *find_layout (GtkWindow *window);
static void window_delete_cb (GtkWidget *widget, GdkEvent *event,
jobject peer);
static void window_destroy_cb (GtkWidget *widget, GdkEvent *event,
jobject peer);
static void window_show_cb (GtkWidget *widget, jobject peer);
-static void window_focus_or_active_state_change_cb (GtkWidget *widget,
+static void window_active_state_change_cb (GtkWidget *widget,
+ GParamSpec *pspec,
+ jobject peer);
+static void window_focus_state_change_cb (GtkWidget *widget,
GParamSpec *pspec,
jobject peer);
+static gboolean window_focus_in_cb (GtkWidget * widget,
+ GdkEventFocus *event,
+ jobject peer);
+static gboolean window_focus_out_cb (GtkWidget * widget,
+ GdkEventFocus *event,
+ jobject peer);
static gboolean window_window_state_cb (GtkWidget *widget,
GdkEvent *event,
jobject peer);
@@ -74,10 +85,6 @@ static gboolean window_property_changed_cb (GtkWidget *widget,
GdkEventProperty *event,
jobject peer);
-/*
- * Make a new window.
- */
-
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkWindowPeer_create
(JNIEnv *env, jobject obj, jint type, jboolean decorated,
@@ -180,29 +187,17 @@ Java_gnu_java_awt_peer_gtk_GtkWindowPeer_connectJObject
(JNIEnv *env, jobject obj)
{
void *ptr;
- GtkWidget* vbox, *layout;
- GList* children;
+ GtkLayout *layout;
ptr = NSA_GET_PTR (env, obj);
gdk_threads_enter ();
- children = gtk_container_get_children(GTK_CONTAINER(ptr));
- vbox = children->data;
- g_assert (GTK_IS_VBOX(vbox));
+ layout = find_layout (GTK_WINDOW (ptr));
- children = gtk_container_get_children(GTK_CONTAINER(vbox));
- do
- {
- layout = children->data;
- children = children->next;
- }
- while (!GTK_IS_LAYOUT (layout) && children != NULL);
- g_assert (GTK_IS_LAYOUT(layout));
+ gtk_widget_realize (GTK_WIDGET (layout));
- gtk_widget_realize (layout);
-
- connect_awt_hook (env, obj, 1, GTK_LAYOUT (layout)->bin_window);
+ connect_awt_hook (env, obj, 1, layout->bin_window);
gtk_widget_realize (ptr);
@@ -215,31 +210,22 @@ JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkWindowPeer_connectSignals
(JNIEnv *env, jobject obj)
{
- void *ptr = NSA_GET_PTR (env, obj);
- jobject *gref = NSA_GET_GLOBAL_REF (env, obj);
- GtkWidget* vbox, *layout;
- GList* children;
- g_assert (gref);
+ void *ptr;
+ jobject *gref;
+ GtkLayout *layout;
+
+ ptr = NSA_GET_PTR (env, obj);
+
+ gref = NSA_GET_GLOBAL_REF (env, obj);
gdk_threads_enter ();
gtk_widget_realize (ptr);
/* Receive events from the GtkLayout too */
- children = gtk_container_get_children(GTK_CONTAINER(ptr));
- vbox = children->data;
- g_assert (GTK_IS_VBOX (vbox));
-
- children = gtk_container_get_children(GTK_CONTAINER(vbox));
- do
- {
- layout = children->data;
- children = children->next;
- }
- while (!GTK_IS_LAYOUT (layout) && children != NULL);
- g_assert (GTK_IS_LAYOUT (layout));
+ layout = find_layout (GTK_WINDOW (ptr));
- g_signal_connect (GTK_OBJECT (layout), "event",
+ g_signal_connect (G_OBJECT (layout), "event",
G_CALLBACK (pre_event_handler), *gref);
/* Connect signals for window event support. */
@@ -252,8 +238,17 @@ Java_gnu_java_awt_peer_gtk_GtkWindowPeer_connectSignals
g_signal_connect (G_OBJECT (ptr), "show",
G_CALLBACK (window_show_cb), *gref);
- g_signal_connect (G_OBJECT (ptr), "notify",
- G_CALLBACK (window_focus_or_active_state_change_cb), *gref);
+ g_signal_connect (G_OBJECT (ptr), "notify::is-active",
+ G_CALLBACK (window_active_state_change_cb), *gref);
+
+ g_signal_connect (G_OBJECT (ptr), "notify::has-toplevel-focus",
+ G_CALLBACK (window_focus_state_change_cb), *gref);
+
+ g_signal_connect (G_OBJECT (ptr), "focus-in-event",
+ G_CALLBACK (window_focus_in_cb), *gref);
+
+ g_signal_connect (G_OBJECT (ptr), "focus-out-event",
+ G_CALLBACK (window_focus_out_cb), *gref);
g_signal_connect (G_OBJECT (ptr), "window-state-event",
G_CALLBACK (window_window_state_cb), *gref);
@@ -448,7 +443,6 @@ Java_gnu_java_awt_peer_gtk_GtkFramePeer_moveLayout
{
void* ptr;
GList* children;
- GtkBox* vbox;
GtkLayout* layout;
GtkWidget* widget;
@@ -456,18 +450,8 @@ Java_gnu_java_awt_peer_gtk_GtkFramePeer_moveLayout
gdk_threads_enter ();
- children = gtk_container_get_children (GTK_CONTAINER (ptr));
- vbox = children->data;
- g_assert (GTK_IS_VBOX (vbox));
+ layout = find_layout (GTK_WINDOW (ptr));
- children = gtk_container_get_children (GTK_CONTAINER (vbox));
- do
- {
- layout = children->data;
- children = children->next;
- }
- while (!GTK_IS_LAYOUT (layout) && children != NULL);
- g_assert (GTK_IS_LAYOUT (layout));
children = gtk_container_get_children (GTK_CONTAINER (layout));
while (children != NULL)
@@ -483,36 +467,25 @@ Java_gnu_java_awt_peer_gtk_GtkFramePeer_moveLayout
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkFramePeer_gtkLayoutSetVisible
- (JNIEnv *env, jobject obj, jboolean vis)
+ (JNIEnv *env, jobject obj, jboolean visible)
{
void* ptr;
- GList* children;
- GtkBox* vbox;
GtkLayout* layout;
ptr = NSA_GET_PTR (env, obj);
gdk_threads_enter ();
- children = gtk_container_get_children (GTK_CONTAINER (ptr));
- vbox = children->data;
- g_assert (GTK_IS_VBOX (vbox));
-
- children = gtk_container_get_children (GTK_CONTAINER (vbox));
- do
- {
- layout = children->data;
- children = children->next;
- }
- while (!GTK_IS_LAYOUT (layout) && children != NULL);
- g_assert (GTK_IS_LAYOUT (layout));
+ layout = find_layout (GTK_WINDOW (ptr));
- if (vis)
+ if (visible)
gtk_widget_show (GTK_WIDGET (layout));
else
gtk_widget_hide (GTK_WIDGET (layout));
+
gdk_threads_leave ();
}
+
static void
window_get_frame_extents (GtkWidget *window,
int *top, int *left, int *bottom, int *right)
@@ -604,7 +577,7 @@ request_frame_extents (GtkWidget *window)
}
}
-static int
+static Bool
property_notify_predicate (Display *xdisplay __attribute__((unused)),
XEvent *event,
XPointer window_id)
@@ -615,7 +588,7 @@ property_notify_predicate (Display *xdisplay __attribute__((unused)),
&& event->xany.window == *window
&& event->xproperty.atom == extents_atom)
return True;
-
+ else
return False;
}
@@ -652,12 +625,12 @@ window_show_cb (GtkWidget *widget __attribute__((unused)),
}
static void
-window_focus_or_active_state_change_cb (GtkWidget *widget,
+window_active_state_change_cb (GtkWidget *widget,
GParamSpec *pspec,
jobject peer)
{
- if (!strcmp (g_param_spec_get_name (pspec), "is-active"))
- {
+ /* FIXME: not sure if this is needed or not. */
+#if 0
if (GTK_WINDOW (widget)->is_active)
(*gdk_env)->CallVoidMethod (gdk_env, peer,
postWindowEventID,
@@ -668,8 +641,13 @@ window_focus_or_active_state_change_cb (GtkWidget *widget,
postWindowEventID,
(jint) AWT_WINDOW_DEACTIVATED,
(jobject) NULL, (jint) 0);
+#endif
}
- else if (!strcmp (g_param_spec_get_name (pspec), "has-toplevel-focus"))
+
+static void
+window_focus_state_change_cb (GtkWidget *widget,
+ GParamSpec *pspec,
+ jobject peer)
{
if (GTK_WINDOW (widget)->has_toplevel_focus)
(*gdk_env)->CallVoidMethod (gdk_env, peer,
@@ -679,9 +657,32 @@ window_focus_or_active_state_change_cb (GtkWidget *widget,
else
(*gdk_env)->CallVoidMethod (gdk_env, peer,
postWindowEventID,
- (jint) AWT_WINDOW_LOST_FOCUS,
+ (jint) AWT_WINDOW_DEACTIVATED,
(jobject) NULL, (jint) 0);
}
+
+static gboolean
+window_focus_in_cb (GtkWidget * widget,
+ GdkEventFocus *event,
+ jobject peer)
+{
+ (*gdk_env)->CallVoidMethod (gdk_env, peer,
+ postWindowEventID,
+ (jint) AWT_WINDOW_GAINED_FOCUS,
+ (jobject) NULL, (jint) 0);
+ return FALSE;
+}
+
+static gboolean
+window_focus_out_cb (GtkWidget * widget,
+ GdkEventFocus *event,
+ jobject peer)
+{
+ (*gdk_env)->CallVoidMethod (gdk_env, peer,
+ postWindowEventID,
+ (jint) AWT_WINDOW_LOST_FOCUS,
+ (jobject) NULL, (jint) 0);
+ return FALSE;
}
static gboolean
@@ -808,3 +809,26 @@ window_property_changed_cb (GtkWidget *widget __attribute__((unused)),
return FALSE;
}
+
+static GtkLayout *
+find_layout (GtkWindow *window)
+{
+ GList* children;
+ GtkBox* vbox;
+ GtkLayout* layout;
+
+ children = gtk_container_get_children (GTK_CONTAINER (window));
+ vbox = children->data;
+ g_assert (GTK_IS_VBOX (vbox));
+
+ children = gtk_container_get_children (GTK_CONTAINER (vbox));
+ do
+ {
+ layout = children->data;
+ children = children->next;
+ }
+ while (!GTK_IS_LAYOUT (layout) && children != NULL);
+ g_assert (GTK_IS_LAYOUT (layout));
+
+ return layout;
+}
diff --git a/libjava/prims.cc b/libjava/prims.cc
index cbcbc9fbf16..0346b02371b 100644
--- a/libjava/prims.cc
+++ b/libjava/prims.cc
@@ -25,6 +25,7 @@ details. */
#include <jvm.h>
#include <java-signal.h>
#include <java-threads.h>
+#include <java-interp.h>
#ifdef ENABLE_JVMPI
#include <jvmpi.h>
@@ -60,7 +61,7 @@ details. */
#include <java/lang/VirtualMachineError.h>
#include <gnu/gcj/runtime/VMClassLoader.h>
#include <gnu/gcj/runtime/FinalizerThread.h>
-#include <gnu/gcj/runtime/FirstThread.h>
+#include <gnu/java/lang/MainThread.h>
#ifdef USE_LTDL
#include <ltdl.h>
@@ -669,7 +670,6 @@ _Jv_NewMultiArray (jclass array_type, jint dimensions, ...)
// Ensure 8-byte alignment, for hash synchronization.
#define DECLARE_PRIM_TYPE(NAME) \
- _Jv_ArrayVTable _Jv_##NAME##VTable; \
java::lang::Class _Jv_##NAME##Class __attribute__ ((aligned (8)));
DECLARE_PRIM_TYPE(byte)
@@ -683,8 +683,7 @@ DECLARE_PRIM_TYPE(double)
DECLARE_PRIM_TYPE(void)
void
-_Jv_InitPrimClass (jclass cl, char *cname, char sig, int len,
- _Jv_ArrayVTable *array_vtable)
+_Jv_InitPrimClass (jclass cl, char *cname, char sig, int len)
{
using namespace java::lang::reflect;
@@ -701,8 +700,6 @@ _Jv_InitPrimClass (jclass cl, char *cname, char sig, int len,
cl->vtable = JV_PRIMITIVE_VTABLE;
cl->state = JV_STATE_DONE;
cl->depth = -1;
- if (sig != 'V')
- _Jv_NewArrayClass (cl, NULL, (_Jv_VTable *) array_vtable);
}
jclass
@@ -921,8 +918,10 @@ process_gcj_properties ()
// Null terminate the strings.
while (_Jv_Environment_Properties[i].key)
{
- _Jv_Environment_Properties[i].key[_Jv_Environment_Properties[i].key_length] = 0;
- _Jv_Environment_Properties[i++].value[_Jv_Environment_Properties[i].value_length] = 0;
+ property_pair *prop = &_Jv_Environment_Properties[i];
+ prop->key[prop->key_length] = 0;
+ prop->value[prop->value_length] = 0;
+ i++;
}
}
}
@@ -953,6 +952,10 @@ _Jv_CreateJavaVM (void* /*vm_args*/)
_Jv_InitThreads ();
_Jv_InitGC ();
_Jv_InitializeSyncMutex ();
+
+#ifdef INTERPRETER
+ _Jv_InitInterpreter ();
+#endif
#ifdef HANDLE_SEGV
INIT_SEGV;
@@ -969,15 +972,15 @@ _Jv_CreateJavaVM (void* /*vm_args*/)
finit_name = _Jv_makeUtf8Const ("finit$", 6);
/* Initialize built-in classes to represent primitive TYPEs. */
- _Jv_InitPrimClass (&_Jv_byteClass, "byte", 'B', 1, &_Jv_byteVTable);
- _Jv_InitPrimClass (&_Jv_shortClass, "short", 'S', 2, &_Jv_shortVTable);
- _Jv_InitPrimClass (&_Jv_intClass, "int", 'I', 4, &_Jv_intVTable);
- _Jv_InitPrimClass (&_Jv_longClass, "long", 'J', 8, &_Jv_longVTable);
- _Jv_InitPrimClass (&_Jv_booleanClass, "boolean", 'Z', 1, &_Jv_booleanVTable);
- _Jv_InitPrimClass (&_Jv_charClass, "char", 'C', 2, &_Jv_charVTable);
- _Jv_InitPrimClass (&_Jv_floatClass, "float", 'F', 4, &_Jv_floatVTable);
- _Jv_InitPrimClass (&_Jv_doubleClass, "double", 'D', 8, &_Jv_doubleVTable);
- _Jv_InitPrimClass (&_Jv_voidClass, "void", 'V', 0, &_Jv_voidVTable);
+ _Jv_InitPrimClass (&_Jv_byteClass, "byte", 'B', 1);
+ _Jv_InitPrimClass (&_Jv_shortClass, "short", 'S', 2);
+ _Jv_InitPrimClass (&_Jv_intClass, "int", 'I', 4);
+ _Jv_InitPrimClass (&_Jv_longClass, "long", 'J', 8);
+ _Jv_InitPrimClass (&_Jv_booleanClass, "boolean", 'Z', 1);
+ _Jv_InitPrimClass (&_Jv_charClass, "char", 'C', 2);
+ _Jv_InitPrimClass (&_Jv_floatClass, "float", 'F', 4);
+ _Jv_InitPrimClass (&_Jv_doubleClass, "double", 'D', 8);
+ _Jv_InitPrimClass (&_Jv_voidClass, "void", 'V', 0);
// Turn stack trace generation off while creating exception objects.
_Jv_InitClass (&java::lang::VMThrowable::class$);
@@ -1008,8 +1011,7 @@ _Jv_CreateJavaVM (void* /*vm_args*/)
_Jv_GCInitializeFinalizers (&::gnu::gcj::runtime::FinalizerThread::finalizerReady);
// Start the GC finalizer thread. A VirtualMachineError can be
- // thrown by the runtime if, say, threads aren't available. In this
- // case finalizers simply won't run.
+ // thrown by the runtime if, say, threads aren't available.
try
{
using namespace gnu::gcj::runtime;
@@ -1027,7 +1029,9 @@ void
_Jv_RunMain (jclass klass, const char *name, int argc, const char **argv,
bool is_jar)
{
+#ifndef DISABLE_MAIN_ARGS
_Jv_SetArgs (argc, argv);
+#endif
java::lang::Runtime *runtime = NULL;
@@ -1049,12 +1053,12 @@ _Jv_RunMain (jclass klass, const char *name, int argc, const char **argv,
arg_vec = JvConvertArgv (argc - 1, argv + 1);
#endif
- using namespace gnu::gcj::runtime;
+ using namespace gnu::java::lang;
if (klass)
- main_thread = new FirstThread (klass, arg_vec);
+ main_thread = new MainThread (klass, arg_vec);
else
- main_thread = new FirstThread (JvNewStringLatin1 (name),
- arg_vec, is_jar);
+ main_thread = new MainThread (JvNewStringLatin1 (name),
+ arg_vec, is_jar);
}
catch (java::lang::Throwable *t)
{
diff --git a/libjava/scripts/unicode-muncher.pl b/libjava/scripts/unicode-muncher.pl
index 073bc699414..906034136ed 100755
--- a/libjava/scripts/unicode-muncher.pl
+++ b/libjava/scripts/unicode-muncher.pl
@@ -1,6 +1,6 @@
#!/usr/bin/perl -w
# unicode-muncher.pl -- generate Unicode database for java.lang.Character
-# Copyright (C) 1998, 2002 Free Software Foundation, Inc.
+# Copyright (C) 1998, 2002, 2004 Free Software Foundation, Inc.
#
# This file is part of GNU Classpath.
#
@@ -36,18 +36,22 @@
# obligated to do so. If you do not wish to do so, delete this
# exception statement from your version.
-# Code for reading UnicodeData.txt and generating the code for
-# gnu.java.lang.CharData. For now, the relevant Unicode definition files
-# are found in libjava/gnu/gcj/convert/.
+# Code for reading UnicodeData-3.0.0.txt and SpecialCasing-2.txt to generate
+# the code for gnu.java.lang.CharData. The relevant files can be found here:
+#
+# http://www.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.txt
+# http://www.unicode.org/Public/3.0-Update/SpecialCasing-2.txt
#
# Inspired by code from Jochen Hoenicke.
# author Eric Blake <ebb9@email.byu.edu>
#
-# Usage: ./unicode-muncher <UnicodeData.txt> <CharData.java>
+# Usage: ./unicode-muncher <UnicodeData.txt> <SpecialCasing> <CharData.java>
# where <UnicodeData.txt> is obtained from www.unicode.org (named
-# UnicodeData-3.0.0.txt for Unicode version 3.0.0), and <CharData.java>
-# is the final location for the Java interface gnu.java.lang.CharData.
-# As of JDK 1.4, use Unicode version 3.0.0 for best results.
+# UnicodeData-3.0.0.txt for Unicode version 3.0.0), <SpecialCasing>
+# is obtained from www.unicode too (named SpecialCasing-2.txt for Unicode
+# version 3.0.0), and <CharData.java> is the final location for the Java
+# interface gnu.java.lang.CharData. As of JDK 1.4, use Unicode version 3.0.0
+# for best results.
##
## Convert a 16-bit integer to a Java source code String literal character
@@ -75,20 +79,42 @@ my @DIRCODES = qw(L R AL EN ES ET AN CS NSM BN B S WS ON LRE LRO RLE RLO PDF);
my $NOBREAK_FLAG = 32;
my $MIRRORED_FLAG = 64;
+my %special = ();
my @info = ();
my $titlecase = "";
my $count = 0;
my $range = 0;
-die "Usage: $0 <UnicodeData.txt> <CharData.java>" unless @ARGV == 2;
-open (UNICODE, "< $ARGV[0]") || die "Can't open Unicode attribute file: $!\n";
-
-# Stage 1: Parse the attribute file
+die "Usage: $0 <UnicodeData.txt> <SpecialCasing.txt> <CharData.java>"
+ unless @ARGV == 3;
$| = 1;
-print "GNU Classpath Unicode Attribute Database Generator 2.0\n";
+print "GNU Classpath Unicode Attribute Database Generator 2.1\n";
print "Copyright (C) 1998, 2002 Free Software Foundation, Inc.\n";
+
+# Stage 0: Parse the special casing file
+print "Parsing special casing file\n";
+open (SPECIAL, "< $ARGV[1]") || die "Can't open special casing file: $!\n";
+while (<SPECIAL>) {
+ next if /^\#/;
+ my ($ch, undef, undef, $upper) = split / *; */;
+
+ # This grabs only the special casing for multi-char uppercase. Note that
+ # there are no multi-char lowercase, and that Sun ignores multi-char
+ # titlecase rules. This script omits 3 special cases in Unicode 3.0.0,
+ # which must be hardcoded in java.lang.String:
+ # \u03a3 (Sun ignores this special case)
+ # \u0049 - lowercases to \u0131, but only in Turkish locale
+ # \u0069 - uppercases to \u0130, but only in Turkish locale
+ next unless defined $upper and $upper =~ / /;
+ $special{hex $ch} = [map {hex} split ' ', $upper];
+}
+
+close SPECIAL;
+
+# Stage 1: Parse the attribute file
print "Parsing attributes file";
-while(<UNICODE>) {
+open (UNICODE, "< $ARGV[0]") || die "Can't open Unicode attribute file: $!\n";
+while (<UNICODE>) {
print "." unless $count++ % 1000;
chomp;
s/\r//g;
@@ -142,6 +168,8 @@ while(<UNICODE>) {
last;
}
}
+ $direction <<= 2;
+ $direction += $#{$special{$ch}} if defined $special{$ch};
if ($range) {
die "Expecting end of range at $ch\n" unless $name =~ /Last>$/;
@@ -167,9 +195,7 @@ my @charinfo = ();
for my $ch (0 .. 0xffff) {
print "." unless $count++ % 0x1000;
- if (! defined $info[$ch]) {
- $info[$ch] = pack("n5", 0, -1, 0, 0, -1);
- }
+ $info[$ch] = pack("n5", 0, -1, 0, 0, -4) unless defined $info[$ch];
my ($type, $numVal, $upper, $lower, $direction) = unpack("n5", $info[$ch]);
if (! exists $charhash{$info[$ch]}) {
@@ -209,7 +235,7 @@ for my $i (3 .. 8) {
for ($j = $blksize - 1; $j > 0; $j--) {
my %tails = ();
for $k (0 .. $#blkarray) {
- next if ! defined $blkarray[$k];
+ next unless defined $blkarray[$k];
my $len = length $blkarray[$k];
my $tail = substr $blkarray[$k], $len - $j * 2;
if (exists $tails{$tail}) {
@@ -222,12 +248,12 @@ for my $i (3 .. 8) {
# tails are calculated, now calculate the heads and merge.
BLOCK:
for $k (0 .. $#blkarray) {
- next if ! defined $blkarray[$k];
+ next unless defined $blkarray[$k];
my $tomerge = $k;
while (1) {
my $head = substr($blkarray[$tomerge], 0, $j * 2);
my $entry = $tails{$head};
- next BLOCK if ! defined $entry;
+ next BLOCK unless defined $entry;
my $other = shift @{$entry};
if ($other == $tomerge) {
@@ -297,10 +323,10 @@ die "UTF-8 limit of blocks may be exceeded: " . scalar(@blocks) . "\n"
die "UTF-8 limit of data may be exceeded: " . length($bestblkstr) . "\n"
if length($bestblkstr) > 0xffff / 3;
{
- print "Generating $ARGV[1] with shift of $bestshift";
+ print "Generating $ARGV[2] with shift of $bestshift";
my ($i, $j);
- open OUTPUT, "> $ARGV[1]" or die "Failed creating output file: $!\n";
+ open OUTPUT, "> $ARGV[2]" or die "Failed creating output file: $!\n";
print OUTPUT <<EOF;
/* gnu/java/lang/CharData -- Database for java.lang.Character Unicode info
Copyright (C) 2002 Free Software Foundation, Inc.
@@ -345,8 +371,9 @@ package gnu.java.lang;
/**
* This contains the info about the unicode characters, that
* java.lang.Character needs. It is generated automatically from
- * <code>$ARGV[0]</code>, by some
- * perl scripts. This Unicode definition file can be found on the
+ * <code>$ARGV[0]</code> and
+ * <code>$ARGV[1]</code>, by some
+ * perl scripts. These Unicode definition files can be found on the
* <a href="http://www.unicode.org">http://www.unicode.org</a> website.
* JDK 1.4 uses Unicode version 3.0.0.
*
@@ -358,13 +385,18 @@ package gnu.java.lang;
* into the attribute tables <code>UPPER</code>, <code>LOWER</code>,
* <code>NUM_VALUE</code>, and <code>DIRECTION</code>. Notice that the
* attribute tables are much smaller than 0xffff entries; as many characters
- * in Unicode share common attributes. Finally, there is a listing for
- * <code>TITLE</code> exceptions (most characters just have the same
- * title case as upper case).
+ * in Unicode share common attributes. The DIRECTION table also contains
+ * a field for detecting characters with multi-character uppercase expansions.
+ * Next, there is a listing for <code>TITLE</code> exceptions (most characters
+ * just have the same title case as upper case). Finally, there are two
+ * tables for multi-character capitalization, <code>UPPER_SPECIAL</code>
+ * which lists the characters which are special cased, and
+ * <code>UPPER_EXPAND</code>, which lists their expansion.
*
* \@author scripts/unicode-muncher.pl (written by Jochen Hoenicke,
* Eric Blake)
* \@see Character
+ * \@see String
*/
public interface CharData
{
@@ -417,7 +449,7 @@ EOF
print OUTPUT $i ? "\n + \"" : " = \"";
for $j (0 .. 10) {
last if $len <= $i * 11 + $j;
- my $val = unpack "n", substr($bestblkstr, 2 * ($i*11 + $j), 2);
+ my $val = unpack "n", substr($bestblkstr, 2 * ($i * 11 + $j), 2);
print OUTPUT javaChar($val);
}
print OUTPUT "\"";
@@ -451,10 +483,12 @@ EOF
;
/**
- * This is the attribute table for computing the uppercase representation
- * of a character. The value is the signed difference between the
- * character and its uppercase version. Note that this is stored as an
- * unsigned char since this is a String literal.
+ * This is the attribute table for computing the single-character uppercase
+ * representation of a character. The value is the signed difference
+ * between the character and its uppercase version. Note that this is
+ * stored as an unsigned char since this is a String literal. When
+ * capitalizing a String, you must first check if a multi-character uppercase
+ * sequence exists before using this character.
*/
String UPPER
EOF
@@ -483,11 +517,11 @@ EOF
EOF
$len = @charinfo;
- for ($i = 0; $i < $len / 11; $i++) {
+ for ($i = 0; $i < $len / 13; $i++) {
print OUTPUT $i ? "\n + \"" : " = \"";
- for $j (0 .. 10) {
- last if $len <= $i * 11 + $j;
- my $val = $charinfo[$i * 11 + $j][2];
+ for $j (0 .. 12) {
+ last if $len <= $i * 13 + $j;
+ my $val = $charinfo[$i * 13 + $j][2];
print OUTPUT javaChar($val);
}
print OUTPUT "\"";
@@ -498,19 +532,25 @@ EOF
/**
* This is the attribute table for computing the directionality class
- * of a character. At present, the value is in the range 0 - 18 if the
- * character has a direction, otherwise it is -1. Note that this is
- * stored as an unsigned char since this is a String literal.
+ * of a character, as well as a marker of characters with a multi-character
+ * capitalization. The direction is taken by performing a signed shift
+ * right by 2 (where a result of -1 means an unknown direction, such as
+ * for undefined characters). The lower 2 bits form a count of the
+ * additional characters that will be added to a String when performing
+ * multi-character uppercase expansion. This count is also used, along with
+ * the offset in UPPER_SPECIAL, to determine how much of UPPER_EXPAND to use
+ * when performing the case conversion. Note that this information is stored
+ * as an unsigned char since this is a String literal.
*/
String DIRECTION
EOF
$len = @charinfo;
- for ($i = 0; $i < $len / 11; $i++) {
+ for ($i = 0; $i < $len / 17; $i++) {
print OUTPUT $i ? "\n + \"" : " = \"";
- for $j (0 .. 10) {
- last if $len <= $i * 11 + $j;
- my $val = $charinfo[$i * 11 + $j][3];
+ for $j (0 .. 16) {
+ last if $len <= $i * 17 + $j;
+ my $val = $charinfo[$i * 17 + $j][3];
print OUTPUT javaChar($val);
}
print OUTPUT "\"";
@@ -520,10 +560,10 @@ EOF
;
/**
- * This is the listing of titlecase special cases (all other character
+ * This is the listing of titlecase special cases (all other characters
* can use <code>UPPER</code> to determine their titlecase). The listing
- * is a sequence of character pairs; converting the first character of the
- * pair to titlecase produces the second character.
+ * is a sorted sequence of character pairs; converting the first character
+ * of the pair to titlecase produces the second character.
*/
String TITLE
EOF
@@ -533,7 +573,64 @@ EOF
print OUTPUT $i ? "\n + \"" : " = \"";
for $j (0 .. 10) {
last if $len <= $i * 11 + $j;
- my $val = unpack "n", substr($titlecase, 2 * ($i*11 + $j), 2);
+ my $val = unpack "n", substr($titlecase, 2 * ($i * 11 + $j), 2);
+ print OUTPUT javaChar($val);
+ }
+ print OUTPUT "\"";
+ }
+
+ print OUTPUT <<EOF;
+;
+
+ /**
+ * This is a listing of characters with multi-character uppercase sequences.
+ * A character appears in this list exactly when it has a non-zero entry
+ * in the low-order 2-bit field of DIRECTION. The listing is a sorted
+ * sequence of pairs (hence a binary search on the even elements is an
+ * efficient way to lookup a character). The first element of a pair is the
+ * character with the expansion, and the second is the index into
+ * UPPER_EXPAND where the expansion begins. Use the 2-bit field of
+ * DIRECTION to determine where the expansion ends.
+ */
+ String UPPER_SPECIAL
+EOF
+
+ my @list = sort {$a <=> $b} keys %special;
+ my $expansion = "";
+ my $offset = 0;
+ $len = @list;
+ for ($i = 0; $i < $len / 5; $i++) {
+ print OUTPUT $i ? "\n + \"" : " = \"";
+ for $j (0 .. 4) {
+ last if $len <= $i * 5 + $j;
+ my $ch = $list[$i * 5 + $j];
+ print OUTPUT javaChar($ch);
+ print OUTPUT javaChar($offset);
+ $offset += @{$special{$ch}};
+ $expansion .= pack "n*", @{$special{$ch}};
+ }
+ print OUTPUT "\"";
+ }
+
+ print OUTPUT <<EOF;
+;
+
+ /**
+ * This is the listing of special case multi-character uppercase sequences.
+ * Characters listed in UPPER_SPECIAL index into this table to find their
+ * uppercase expansion. Remember that you must also perform special-casing
+ * on two single-character sequences in the Turkish locale, which are not
+ * covered here in CharData.
+ */
+ String UPPER_EXPAND
+EOF
+
+ $len = length($expansion) / 2;
+ for ($i = 0; $i < $len / 11; $i++) {
+ print OUTPUT $i ? "\n + \"" : " = \"";
+ for $j (0 .. 10) {
+ last if $len <= $i * 11 + $j;
+ my $val = unpack "n", substr($expansion, 2 * ($i * 11 + $j), 2);
print OUTPUT javaChar($val);
}
print OUTPUT "\"";
diff --git a/libjava/sysdep/powerpc/locks.h b/libjava/sysdep/powerpc/locks.h
index c9c3183d6bc..5a6a945e494 100644
--- a/libjava/sysdep/powerpc/locks.h
+++ b/libjava/sysdep/powerpc/locks.h
@@ -33,12 +33,12 @@ compare_and_swap (volatile obj_addr_t *addr, obj_addr_t old,
int ret;
__asm__ __volatile__ (
- "0: " _LARX "%0,0,%1 ;"
- " xor. %0,%3,%0;"
- " bne 1f;"
- " " _STCX "%2,0,%1;"
- " bne- 0b;"
- "1: "
+ "0: " _LARX "%0,0,%1 \n"
+ " xor. %0,%3,%0\n"
+ " bne 1f\n"
+ " " _STCX "%2,0,%1\n"
+ " bne- 0b\n"
+ "1: \n"
: "=&r" (ret)
: "r" (addr), "r" (new_val), "r" (old)
: "cr0", "memory");
@@ -67,12 +67,12 @@ compare_and_swap_release (volatile obj_addr_t *addr, obj_addr_t old,
__asm__ __volatile__ ("sync" : : : "memory");
__asm__ __volatile__ (
- "0: " _LARX "%0,0,%1 ;"
- " xor. %0,%3,%0;"
- " bne 1f;"
- " " _STCX "%2,0,%1;"
- " bne- 0b;"
- "1: "
+ "0: " _LARX "%0,0,%1 \n"
+ " xor. %0,%3,%0\n"
+ " bne 1f\n"
+ " " _STCX "%2,0,%1\n"
+ " bne- 0b\n"
+ "1: \n"
: "=&r" (ret)
: "r" (addr), "r" (new_val), "r" (old)
: "cr0", "memory");
diff --git a/libjava/testsuite/Makefile.am b/libjava/testsuite/Makefile.am
index 4bfc50dbb11..0cd4aee0b88 100644
--- a/libjava/testsuite/Makefile.am
+++ b/libjava/testsuite/Makefile.am
@@ -2,6 +2,9 @@
AUTOMAKE_OPTIONS = foreign dejagnu
+# autoconf2.13's target_alias
+target_noncanonical = @target_noncanonical@
+
# Setup the testing framework, if you have one
EXPECT = `if [ -f $(top_builddir)/../expect/expect ] ; then \
echo $(top_builddir)/../expect/expect ; \
diff --git a/libjava/testsuite/Makefile.in b/libjava/testsuite/Makefile.in
index 21c86dd9d01..1a0f6cf50ba 100644
--- a/libjava/testsuite/Makefile.in
+++ b/libjava/testsuite/Makefile.in
@@ -71,6 +71,7 @@ CAIRO_LIBS = @CAIRO_LIBS@
CC = @CC@
CHECKREFSPEC = @CHECKREFSPEC@
COMPPATH = @COMPPATH@
+CPP = @CPP@
CXX = @CXX@
CXXCPP = @CXXCPP@
DIRLTDL = @DIRLTDL@
@@ -84,27 +85,23 @@ GCDEPS = @GCDEPS@
GCINCS = @GCINCS@
GCJ = @GCJ@
GCJFLAGS = @GCJFLAGS@
+GCJH = @GCJH@
GCJVERSION = @GCJVERSION@
GCLIBS = @GCLIBS@
GCOBJS = @GCOBJS@
GCSPEC = @GCSPEC@
GCTESTSPEC = @GCTESTSPEC@
GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
-GLIB_MKENUMS = @GLIB_MKENUMS@
-GOBJECT_QUERY = @GOBJECT_QUERY@
+GNATBIND = @GNATBIND@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
-HAVE_LIB = @HAVE_LIB@
IEEESPEC = @IEEESPEC@
INCLTDL = @INCLTDL@
INTERPRETER = @INTERPRETER@
JC1GCSPEC = @JC1GCSPEC@
-LIB = @LIB@
LIBART_CFLAGS = @LIBART_CFLAGS@
-LIBART_CONFIG = @LIBART_CONFIG@
LIBART_LIBS = @LIBART_LIBS@
LIBFFI = @LIBFFI@
LIBFFIINCS = @LIBFFIINCS@
@@ -116,8 +113,8 @@ LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@
LIBICONV = @LIBICONV@
LIBLTDL = @LIBLTDL@
LIBTOOL = @LIBTOOL@
+LN = @LN@
LN_S = @LN_S@
-LTLIB = @LTLIB@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
@@ -143,14 +140,20 @@ THREADSPEC = @THREADSPEC@
TOOLKIT = @TOOLKIT@
VERSION = @VERSION@
ZINCS = @ZINCS@
+ZIP = @ZIP@
ZLIBS = @ZLIBS@
ZLIBSPEC = @ZLIBSPEC@
ZLIBTESTSPEC = @ZLIBTESTSPEC@
+build_subdir = @build_subdir@
+do_compare = @do_compare@
gcc_version = @gcc_version@
glibjava_CXX = @glibjava_CXX@
here = @here@
+host_subdir = @host_subdir@
libgcj_basedir = @libgcj_basedir@
mkinstalldirs = @mkinstalldirs@
+ncn_cv_ = @ncn_cv_@
+target_subdir = @target_subdir@
tool_include_dir = @tool_include_dir@
toolexecdir = @toolexecdir@
toolexeclibdir = @toolexeclibdir@
@@ -158,6 +161,9 @@ toolexecmainlibdir = @toolexecmainlibdir@
AUTOMAKE_OPTIONS = foreign dejagnu
+# autoconf2.13's target_alias
+target_noncanonical = @target_noncanonical@
+
# Setup the testing framework, if you have one
EXPECT = `if [ -f $(top_builddir)/../expect/expect ] ; then \
echo $(top_builddir)/../expect/expect ; \
diff --git a/libjava/testsuite/libjava.compile/inner_data.java b/libjava/testsuite/libjava.compile/inner_data.java
index 63d4902f366..0bb35e8902a 100644
--- a/libjava/testsuite/libjava.compile/inner_data.java
+++ b/libjava/testsuite/libjava.compile/inner_data.java
@@ -4,7 +4,7 @@ import java.util.Random;
public class inner_data
{
- private class Randomer extends Random {
+ private class Randomer extends Super {
public long xxx ()
{
return seed;
@@ -12,3 +12,7 @@ public class inner_data
}
}
+class Super
+{
+ protected long seed;
+}
diff --git a/libjava/testsuite/libjava.compile/pr10459.java b/libjava/testsuite/libjava.compile/pr10459.java
index 5bcc09c7326..e527f34d2a9 100644
--- a/libjava/testsuite/libjava.compile/pr10459.java
+++ b/libjava/testsuite/libjava.compile/pr10459.java
@@ -4,7 +4,12 @@ public class pr10459
public void aMethod() throws Throwable
{
- for (; ;x.clone().clone())
+ for (; ;x.foo().foo())
;
}
+
+ pr10459 foo()
+ {
+ return null;
+ }
}
diff --git a/libjava/testsuite/libjava.compile/pr10459_2.java b/libjava/testsuite/libjava.compile/pr10459_2.java
deleted file mode 100644
index 5b878ca0c27..00000000000
--- a/libjava/testsuite/libjava.compile/pr10459_2.java
+++ /dev/null
@@ -1,10 +0,0 @@
-public class pr10459_2
-{
- pr10459_2 x;
-
- public void aMethod() throws Throwable
- {
- for (; ;x.clone().clone())
- break;
- }
-}
diff --git a/libjava/testsuite/libjava.jacks/jacks.exp b/libjava/testsuite/libjava.jacks/jacks.exp
index 679c7f58408..228e18ff358 100644
--- a/libjava/testsuite/libjava.jacks/jacks.exp
+++ b/libjava/testsuite/libjava.jacks/jacks.exp
@@ -35,6 +35,7 @@ proc gcj_jacks_write {filename} {
puts $fd "set JAVA_FLAGS \"-mx=64m\""
puts $fd "set JAVAC_ENCODING_FLAG --encoding="
+ puts $fd "set JAVAC_DEPRECATION_FLAG -Wdeprecated"
puts $fd "set tcltest::testConstraints(encoding) 1"
puts $fd "set tcltest::testConstraints(gcj) 1"
puts $fd "set tcltest::testConstraints(assert) 1"
@@ -97,9 +98,20 @@ proc gcj_jacks_run {} {
verbose "Running Jacks..."
# Just ignore error exits from the jacks program.
# It will always error exit for us, since don't completely pass.
- catch {exec ./jacks gcj} msg
-
- gcj_jacks_parse logging/gcj.log
+ # At the moment jacks has a hardcoded call to tclsh8.3. To override this,
+ # we check here on the version and launch the script directly with the
+ # tclsh$tcl_ver.
+ set tcl_ver [info tclversion]
+ if {[package vcompare $tcl_ver 8.3] >= 0 } {
+ if {[catch {exec tclsh$tcl_ver jacks gcj} msg]} {
+ send_log "Couldn't run jacks: $msg\n"
+ return
+ }
+ gcj_jacks_parse logging/gcj.log
+ } else {
+ send_log "No suitable tclsh found, you need at least version 8.3 or up.\n"
+ return
+ }
cd $here
}
diff --git a/libjava/testsuite/libjava.jacks/jacks.xfail b/libjava/testsuite/libjava.jacks/jacks.xfail
index 781b8a6452a..f4aa4bb07a0 100644
--- a/libjava/testsuite/libjava.jacks/jacks.xfail
+++ b/libjava/testsuite/libjava.jacks/jacks.xfail
@@ -140,12 +140,10 @@
15.11.1-runtime-static-3
15.11.1-runtime-static-4
15.11.2-explicit-constructor-2
-15.11.2-meaning-10
15.11.2-meaning-11
15.11.2-meaning-13
15.11.2-meaning-14
15.11.2-meaning-17
-15.11.2-meaning-3
15.11.2-meaning-6
15.11.2-meaning-8
15.11.2-meaning-9
@@ -339,7 +337,6 @@
15.9.1-qualified-anonymous-28
15.9.1-qualified-anonymous-4
15.9.1-qualified-anonymous-5
-15.9.1-qualified-concrete-10
15.9.1-qualified-concrete-12
15.9.1-qualified-concrete-14
15.9.1-qualified-concrete-16
@@ -355,21 +352,17 @@
15.9.1-unqualified-anonymous-27
15.9.1-unqualified-anonymous-4
15.9.1-unqualified-anonymous-5
-15.9.1-unqualified-concrete-10
15.9.1-unqualified-concrete-14
15.9.1-unqualified-concrete-15
15.9.1-unqualified-concrete-2
15.9.1-unqualified-concrete-4
15.9.1-unqualified-concrete-5
-15.9.3-choosing-4
15.9.4-runtime-creation-1
15.9.4-runtime-creation-2
15.9.4-runtime-creation-5
15.9.5.1-exception-1
15.9.5.1-exception-3
15.9.5.1-exception-4
-15.9.5.1-superconstructor-2
-15.9.5.1-superconstructor-4
15.9.5.1-superconstructor-7
15.9.5.1-superconstructor-8
16-instance-5
@@ -453,74 +446,16 @@
4.5.4-parameter-3
4.5.4-static-1
4.5.4-static-5
-4.7.10-jvms-class-1
-4.7.10-jvms-class-10
-4.7.10-jvms-class-11
-4.7.10-jvms-class-12
-4.7.10-jvms-class-13
-4.7.10-jvms-class-14
-4.7.10-jvms-class-15
-4.7.10-jvms-class-16
-4.7.10-jvms-class-17
4.7.10-jvms-class-18
-4.7.10-jvms-class-19
-4.7.10-jvms-class-2
-4.7.10-jvms-class-3
-4.7.10-jvms-class-4
-4.7.10-jvms-class-5
4.7.10-jvms-class-6
4.7.10-jvms-class-7
4.7.10-jvms-class-8
-4.7.10-jvms-class-9
-4.7.10-jvms-constructor-1
-4.7.10-jvms-constructor-10
-4.7.10-jvms-constructor-11
-4.7.10-jvms-constructor-12
-4.7.10-jvms-constructor-13
-4.7.10-jvms-constructor-14
-4.7.10-jvms-constructor-2
-4.7.10-jvms-constructor-3
-4.7.10-jvms-constructor-4
-4.7.10-jvms-constructor-5
4.7.10-jvms-constructor-6
-4.7.10-jvms-constructor-7
4.7.10-jvms-constructor-8
-4.7.10-jvms-constructor-9
-4.7.10-jvms-field-1
-4.7.10-jvms-field-10
-4.7.10-jvms-field-11
-4.7.10-jvms-field-12
-4.7.10-jvms-field-13
-4.7.10-jvms-field-2
-4.7.10-jvms-field-3
-4.7.10-jvms-field-4
-4.7.10-jvms-field-5
4.7.10-jvms-field-6
-4.7.10-jvms-field-7
4.7.10-jvms-field-8
-4.7.10-jvms-field-9
-4.7.10-jvms-lex-1
-4.7.10-jvms-lex-10
-4.7.10-jvms-lex-2
-4.7.10-jvms-lex-3
-4.7.10-jvms-lex-4
-4.7.10-jvms-lex-5
-4.7.10-jvms-lex-6
-4.7.10-jvms-lex-7
-4.7.10-jvms-lex-8
-4.7.10-jvms-lex-9
-4.7.10-jvms-method-1
-4.7.10-jvms-method-10
-4.7.10-jvms-method-11
-4.7.10-jvms-method-12
-4.7.10-jvms-method-2
-4.7.10-jvms-method-3
-4.7.10-jvms-method-4
-4.7.10-jvms-method-5
4.7.10-jvms-method-6
-4.7.10-jvms-method-7
4.7.10-jvms-method-8
-4.7.10-jvms-method-9
5.1.2-btd-1
5.1.2-btd-3
5.1.2-btd-5
@@ -600,15 +535,6 @@
6.6.1-array-35
6.6.1-array-5
6.6.1-array-8
-6.6.1-runtime-privateconstructor-1
-6.6.2.1-protected-instance-field-3
-6.6.2.1-protected-instance-field-4
-6.6.2.1-protected-instance-field-6
-6.6.2.1-protected-instance-field-7
-6.6.2.1-protected-instance-method-3
-6.6.2.1-protected-instance-method-5
-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.2-protected-creation-3
7.1-named-5
@@ -648,12 +574,9 @@
8.1.2-static-11
8.1.2-static-16
8.1.3-object-3
-8.1.3-superclass-6
8.3-inheritance-1
8.3-inheritance-2
8.3-inheritance-3
-8.3-inheritance-5
-8.3-inheritance-6
8.3-runtime-1
8.3.1.2-final-17
8.3.1.2-final-19
@@ -737,7 +660,6 @@
8.7-abrupt-1
8.7-complete-1
8.7-complete-3
-8.8.3-runtime-inner-4
8.8.5.1-example-1
8.8.5.1-example-3
8.8.5.1-qualified-1
@@ -765,8 +687,6 @@
9.2-implicit-19
9.2-implicit-2
9.2-implicit-3
-9.2-implicit-6
-9.2-implicit-7
9.3.1-illegal-forward-1
9.3.1-illegal-forward-2
9.3.1-init-1
diff --git a/libjava/testsuite/libjava.lang/TLtest.java b/libjava/testsuite/libjava.lang/TLtest.java
index b7f4115b23f..6ddd0cbcd89 100644
--- a/libjava/testsuite/libjava.lang/TLtest.java
+++ b/libjava/testsuite/libjava.lang/TLtest.java
@@ -46,7 +46,7 @@ class ThreadTest extends Thread {
d.set (Integer.toString (value));
try {
- sleep((int)(Math.random() * 500));
+ sleep((int)((Math.random() * 20)));
} catch (InterruptedException e) {}
}
diff --git a/libjava/testsuite/libjava.lang/Thread_Alive.java b/libjava/testsuite/libjava.lang/Thread_Alive.java
index d97ea25c5d3..e885e1624cd 100644
--- a/libjava/testsuite/libjava.lang/Thread_Alive.java
+++ b/libjava/testsuite/libjava.lang/Thread_Alive.java
@@ -1,6 +1,5 @@
// Test the status of the isAlive() flag before, during, and after thread
// execution. Check that thread's threadgroup is null after thread exits.
-// Origin: Bryce McKinlay <bryce@albatross.co.nz>
public class Thread_Alive implements Runnable
{
@@ -12,7 +11,7 @@ public class Thread_Alive implements Runnable
t.start();
System.out.println(t.isAlive());
- Thread.sleep(100);
+ Thread.sleep(50);
synchronized (ta)
{
diff --git a/libjava/testsuite/libjava.lang/Thread_Interrupt.java b/libjava/testsuite/libjava.lang/Thread_Interrupt.java
index cb569c827c4..a69247422fe 100644
--- a/libjava/testsuite/libjava.lang/Thread_Interrupt.java
+++ b/libjava/testsuite/libjava.lang/Thread_Interrupt.java
@@ -1,11 +1,21 @@
// Test interrupt() behaviour on a thread in wait(), sleep(), and spinning
// in a loop.
-// Origin: Bryce McKinlay <bryce@albatross.co.nz>
-class Waiter extends Thread
+class ThreadBase extends Thread
+{
+ boolean ready = false;
+
+ synchronized void ready()
+ {
+ ready = true;
+ }
+}
+
+class Waiter extends ThreadBase
{
public synchronized void run()
{
+ super.ready();
System.out.println ("wait()");
try
{
@@ -22,14 +32,15 @@ class Waiter extends Thread
}
}
-class Sleeper extends Thread
+class Sleeper extends ThreadBase
{
public void run()
{
+ super.ready();
System.out.println ("sleep()");
try
{
- sleep(2000);
+ sleep(5000);
System.out.println("Error: sleep() completed normally.");
}
catch (InterruptedException x)
@@ -42,40 +53,23 @@ class Sleeper extends Thread
}
}
-class Looper extends Thread
+class Looper extends ThreadBase
{
- // Return the number of Thread.yield()s we can do in 500ms.
- static long calibrate ()
- {
- long i = 1;
-
- for (int tries = 0; tries < 40; tries++)
- {
- long t = System.currentTimeMillis();
- for (long n = 0; n < i; n++)
- Thread.yield();
- long t_prime = System.currentTimeMillis();
- if (t_prime - t > 500)
- return i;
- i *= 2;
- }
- // We have no system clock. Give up.
- throw new RuntimeException ("We have no system clock.");
- }
-
- static long yields = calibrate ();
-
public void run()
{
+ super.ready();
System.out.println ("Busy waiting");
int count = 0;
- for (long i=0; i < yields; i++)
+ long start = System.currentTimeMillis();
+ while (true)
{
Thread.yield();
- count += 5;
if (isInterrupted ())
break;
+ long now = System.currentTimeMillis();
+ if ((now - start) > 5000)
+ break;
}
synchronized (this)
{
@@ -91,10 +85,11 @@ class Looper extends Thread
}
}
-class Joiner extends Thread
+class Joiner extends ThreadBase
{
public void run()
{
+ super.ready();
System.out.println("join()");
try
{
@@ -133,11 +128,17 @@ public class Thread_Interrupt
sleep_and_interrupt (j);
}
- public static void sleep_and_interrupt(Thread t)
+ public static void sleep_and_interrupt(ThreadBase t)
{
try
{
- Thread.sleep (250);
+ synchronized (t)
+ {
+ while (!t.ready)
+ t.wait(10);
+ }
+
+ Thread.sleep (50);
t.interrupt ();
long t1 = System.currentTimeMillis();
t.join (5000);
diff --git a/libjava/testsuite/libjava.lang/Thread_Join.java b/libjava/testsuite/libjava.lang/Thread_Join.java
index 711b05cf0f8..9f7f2fb1590 100644
--- a/libjava/testsuite/libjava.lang/Thread_Join.java
+++ b/libjava/testsuite/libjava.lang/Thread_Join.java
@@ -1,5 +1,4 @@
// Many threads join a single thread.
-// Origin: Bryce McKinlay <bryce@albatross.co.nz>
class Sleeper implements Runnable
{
diff --git a/libjava/testsuite/libjava.lang/Thread_Monitor.java b/libjava/testsuite/libjava.lang/Thread_Monitor.java
index f1ffa674c37..649a75c762c 100644
--- a/libjava/testsuite/libjava.lang/Thread_Monitor.java
+++ b/libjava/testsuite/libjava.lang/Thread_Monitor.java
@@ -1,5 +1,4 @@
// Test that monitor locks work and are recursive.
-// Origin: Bryce McKinlay <bryce@albatross.co.nz>
class T implements Runnable
{
diff --git a/libjava/testsuite/libjava.lang/Thread_Sleep.java b/libjava/testsuite/libjava.lang/Thread_Sleep.java
index e7f4a81532c..7220a6a3a6a 100644
--- a/libjava/testsuite/libjava.lang/Thread_Sleep.java
+++ b/libjava/testsuite/libjava.lang/Thread_Sleep.java
@@ -1,5 +1,4 @@
// Test that Thread.sleep() works.
-// Origin: Bryce McKinlay <bryce@albatross.co.nz>
public class Thread_Sleep
{
@@ -9,9 +8,9 @@ public class Thread_Sleep
{
long start = System.currentTimeMillis();
System.out.println("sleeping");
- Thread.sleep(1000);
+ Thread.sleep(50);
long end = System.currentTimeMillis();
- if ((end - start) > 1100 || (end - start) < 990)
+ if ((end - start) < 50)
System.out.println ("failed");
else
System.out.println("ok");
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait.java b/libjava/testsuite/libjava.lang/Thread_Wait.java
index a6492821b4b..88508243a0a 100644
--- a/libjava/testsuite/libjava.lang/Thread_Wait.java
+++ b/libjava/testsuite/libjava.lang/Thread_Wait.java
@@ -1,5 +1,4 @@
// Test basic thread creation and wait/notify functionality.
-// Origin: Bryce McKinlay <bryce@albatross.co.nz>
public class Thread_Wait implements Runnable
{
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait_2.java b/libjava/testsuite/libjava.lang/Thread_Wait_2.java
index a03cb943812..7ee51726c29 100644
--- a/libjava/testsuite/libjava.lang/Thread_Wait_2.java
+++ b/libjava/testsuite/libjava.lang/Thread_Wait_2.java
@@ -1,6 +1,5 @@
// Create many threads waiting on a monitor. Interrupt some of them. Do the
// others wake up correctly with notify() and/or notifyAll()?
-// Origin: Bryce McKinlay <bryce@albatross.co.nz>
import java.util.Vector;
diff --git a/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java b/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java
index be7b5551614..609527cda99 100644
--- a/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java
+++ b/libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java
@@ -1,6 +1,5 @@
// Create two threads waiting on a monitor. Interrupt one of them. Does the
// other wake up correctly?
-// Origin: Bryce McKinlay <bryce@albatross.co.nz>
class Waiter extends Thread
{
diff --git a/libjava/testsuite/libjava.lang/pr179.java b/libjava/testsuite/libjava.lang/pr179.java
index ec99efc1a79..7124dedeef1 100644
--- a/libjava/testsuite/libjava.lang/pr179.java
+++ b/libjava/testsuite/libjava.lang/pr179.java
@@ -4,8 +4,6 @@
// Class.isInstance() and Class.isAssignableFrom(), and isAssignableFrom()
// functionality in the event that an interface argument that is not
// implemented by any loaded class is given.
-//
-// Bryce McKinlay <bryce@albatross.co.nz>
class A
{
diff --git a/libjava/win32.cc b/libjava/win32.cc
index 027333be738..c337922d296 100644
--- a/libjava/win32.cc
+++ b/libjava/win32.cc
@@ -256,7 +256,7 @@ _Jv_platform_initialize (void)
{
// Initialise winsock for networking
WSADATA data;
- if (WSAStartup (MAKEWORD (1, 1), &data))
+ if (WSAStartup (MAKEWORD (2, 2), &data))
MessageBox (NULL, _T("Error initialising winsock library."), _T("Error"),
MB_OK | MB_ICONEXCLAMATION);
diff --git a/libmudflap/ChangeLog b/libmudflap/ChangeLog
index 969d089b1af..d4a0b73d1bf 100644
--- a/libmudflap/ChangeLog
+++ b/libmudflap/ChangeLog
@@ -1,3 +1,108 @@
+2004-07-27 Ulrich Weigand <weigand@informatik.uni-erlangen.de>
+
+ * mf-runtime.c (__mf_fini): Set mudflap_mode to mode_nop in
+ the statically linked case.
+
+2004-07-27 Frank Ch. Eigler <fche@redhat.com>
+
+ * splay-tree.[ch]: Remove. Merge contents into ...
+ * mf-runtime.c: ... here, renaming symbols and making all functions
+ static. Remove unused min/max functions.
+ * Makefile.am: Forget about splay-tree.[ch].
+ * Makefile.in, testsuite/Makefile.in: Regenerated.
+
+2004-07-21 Frank Ch. Eigler <fche@redhat.com>
+
+ * mf-runtime.c (__mfu_check): Remove mistaken mode-nop handling.
+ (__mfu_usage): Include (C) 2004.
+ * mf-hooks3.c (__mf_find_threadinfo): Don't call tracing functions
+ here. Include a comment explaining why.
+
+2004-07-20 Frank Ch. Eigler <fche@redhat.com>
+
+ * mf-impl.h (__mf_options): Add ignore_reads and timestamps fields.
+ * mf-runtime.c (options): Give them a name.
+ (__mf_set_default_options): Set them.
+ (__mf_insert_new_object, __mfu_unregister): Optionalize timestamps.
+ (__mf_violation): Warning cleanup.
+ * mf-impl.h (MF_VALIDATE_EXTENT): Support ignore_reads option.
+ * splay-tree.c (splay_tree_delete_helper): Remove obsolete decl.
+
+2004-07-15 Frank Ch. Eigler <fche@redhat.com>
+
+ g++/15861
+ * mf-runtime.c (__mf_init): Make it non-static. Tolerate
+ repeated invocation.
+
+2004-07-09 Frank Ch. Eigler <fche@redhat.com>
+
+ Test case for g++/15861
+ * testsuite/libmudflap.c++/ctors-[12].cxx: New test case halves.
+ * testsuite/libmudflap.c++/ctors.exp: Driver.
+ * testsuite/libmudflap.c++/c++frags.exp: Elide redundant default.
+ Look only for *frag* test cases.
+
+2004-07-08 Frank Ch. Eigler <fche@redhat.com>
+
+ ANSI C conversion, libmudflap specialization, recursion limiting.
+ * splay-tree.h (splay_tree_{de,}allocate_fn): Remove allocation_data
+ argument and indirection function pointers, update callers.
+ (splay_tree_s): Add statistics and recursion control fields
+ num_keys, max_depth, depth, rebalance_p.
+ * splay-tree.c (splay_tree_splay_helper): Track recursion depth.
+ Back out of search if it exceeds limit.
+ (splay_tree_splay): Manage recursion limiting with rebalancing as
+ needed.
+ (splay_tree_new): More initialization.
+ (splay_tree_rebalance): New function.
+ (splay_tree_foreach): Rewrite using nonrecursive logic.
+ (splay_tree_xmalloc_allocate, splay_tree_xmalloc_deallocate):
+ Remove. Point indirect calls to mf-runtime.c's routines.
+ (splay_tree_compare_ints, splay_tree_compare_pointers): Remove unused
+ functions.
+ (splay_tree_delete, splay_tree_delete_helper): Ditto.
+ * testsuite/heap-scalestress.c: New test based on one from
+ Eyal Lebedinsky <eyal@eyal.emu.id.au>:
+
+2004-07-05 Matthias Klose <doko@debian.org>
+
+ * libtool-version: New.
+ * Makefile.am (libmudflap_la_LDFLAGS, libmudflapth_la_LDFLAGS):
+ Use -version-info for soname.
+ * Makefile.in: Regenerate.
+ * configure.ac: Remove libtool_VERSION macro
+ * configure: Regenerate
+
+2004-07-05 Zack Weinberg <zack@codesourcery.com>
+
+ * mf-runtime.h.in: Wrap declarations of struct __mf_cache,
+ __mf_lookup_cache, __mf_lc_mask, or __mf_lc_shift in
+ #ifndef _MUDFLAP.
+
+2004-06-29 Frank Ch. Eigler <fche@redhat.com>
+
+ Splay tree implementation fork.
+ * splay-tree.c, splay-tree.h: Copied & modified from libiberty.
+ Use hard-coded comparison function for uintptr_t. Remove key/value
+ deallocation logic. Cache last splayed key for consecutive lookups.
+ * Makefile.am, Makefile.in: Use them, don't link to them.
+ * mf-runtime.c (__mf_object_tree): Adapt to simpler splay_tree_new.
+ (__mf_find_objects2): Flip successor/predecessor search sequence.
+ * ansidecl.h, libiberty.h: Removed dummy files.
+
+2004-06-29 Nick Clifton <nickc@redhat.com>
+
+ * configure.ac (AC_CHECK_HEADERS): Add dirent.h
+ * configure: Regenerate.
+ * mf-hooks2.c: Surround uses of dirent.h with #ifdef
+ HAVE_DIRENT_H.
+ Remove spurious inclusion of <strings.h>.
+
+2004-06-29 Nick Clifton <nickc@redhat.com>
+
+ * mf-runtime.c (pthread_join): Only apply the weak pragma if the
+ function actually exists.
+
2004-06-25 Frank Ch. Eigler <fche@redhat.com>
* ansidecl.h, libiberty.h: New dummy files for building splay-tree.
@@ -71,7 +176,7 @@
* testsuite/libmudflap.c/pass46-frag.c: Ditto.
* configure, Makefile, aclocal.m4, config.h.in, testsuite/Makefile.in:
Regenerated with autoconf 2.57 and automake 1.7.
-
+
2004-06-04 Per Bothner <per@bothner.com>
* configure.in (LIBMUDFLAPTH): Fix thinko.
@@ -205,8 +310,8 @@
2003-11-19 Frank Ch. Eigler <fche@redhat.com>
libstdc++/11696
- * mf-runtime.h.in: Switch to #pragma redefine_extname for
- symbols interposed at compile time.
+ * mf-runtime.h.in: Switch to #pragma redefine_extname for
+ symbols interposed at compile time.
* testsuite/libmudflap.c++/pass41-frag.cxx: New test.
libmudflap/12939
@@ -230,7 +335,7 @@
2003-07-29 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
- * configure.in: Update check for union semun.
+ * configure.in: Update check for union semun.
2003-07-29 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
diff --git a/libmudflap/Makefile.am b/libmudflap/Makefile.am
index 639db4218d4..cdb608531f7 100644
--- a/libmudflap/Makefile.am
+++ b/libmudflap/Makefile.am
@@ -20,29 +20,20 @@ endif
toolexeclib_LTLIBRARIES = libmudflap.la $(libmudflapth)
include_HEADERS = mf-runtime.h
-# Copy this out of libiberty's source tree, so it can be built here via libtool
-splay-tree.c:
- rm -f $@
- $(LN_S) $(srcdir)/../libiberty/splay-tree.c $@
-# Copy this so that top-level include/ does not have to be put into -I path
-splay-tree.h:
- rm -f $@
- $(LN_S) $(srcdir)/../include/splay-tree.h $@
libmudflap_la_SOURCES = \
mf-runtime.c \
mf-heuristics.c \
mf-hooks1.c \
mf-hooks2.c
-mf-runtime.lo: mf-runtime.c splay-tree.c splay-tree.h
libmudflap_la_LIBADD =
libmudflap_la_DEPENDENCIES = $(libmudflap_la_LIBADD)
+libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
clean-local:
rm -f pth/*.o pth/*.lo
- rm -f splay-tree.c splay-tree.h
-pth/mf-runtime.lo: mf-runtime.c mf-runtime.h mf-impl.h splay-tree.c splay-tree.h
+pth/mf-runtime.lo: mf-runtime.c mf-runtime.h mf-impl.h
$(LTCOMPILE) -DLIBMUDFLAPTH -c $(srcdir)/mf-runtime.c -o $@
pth/mf-heuristics.lo: mf-heuristics.c mf-runtime.h mf-impl.h
$(LTCOMPILE) -DLIBMUDFLAPTH -c $(srcdir)/mf-heuristics.c -o $@
@@ -62,7 +53,7 @@ libmudflapth_la_LIBADD = \
pth/mf-hooks2.lo \
pth/mf-hooks3.lo
libmudflapth_la_DEPENDENCIES = $(libmudflapth_la_LIBADD)
-
+libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
# XXX hack alert
diff --git a/libmudflap/Makefile.in b/libmudflap/Makefile.in
index 787007ac66b..1b668fb27cd 100644
--- a/libmudflap/Makefile.in
+++ b/libmudflap/Makefile.in
@@ -195,7 +195,6 @@ infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
-libtool_VERSION = @libtool_VERSION@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
@@ -229,6 +228,7 @@ libmudflap_la_SOURCES = \
libmudflap_la_LIBADD =
libmudflap_la_DEPENDENCIES = $(libmudflap_la_LIBADD)
+libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
libmudflapth_la_SOURCES =
libmudflapth_la_LIBADD = \
pth/mf-runtime.lo \
@@ -238,6 +238,7 @@ libmudflapth_la_LIBADD = \
pth/mf-hooks3.lo
libmudflapth_la_DEPENDENCIES = $(libmudflapth_la_LIBADD)
+libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
# XXX hack alert
# From libffi/Makefile.am
@@ -818,21 +819,10 @@ uninstall-info: uninstall-info-recursive
uninstall-info-am uninstall-toolexeclibLTLIBRARIES
-# Copy this out of libiberty's source tree, so it can be built here via libtool
-splay-tree.c:
- rm -f $@
- $(LN_S) $(srcdir)/../libiberty/splay-tree.c $@
-# Copy this so that top-level include/ does not have to be put into -I path
-splay-tree.h:
- rm -f $@
- $(LN_S) $(srcdir)/../include/splay-tree.h $@
-mf-runtime.lo: mf-runtime.c splay-tree.c splay-tree.h
-
clean-local:
rm -f pth/*.o pth/*.lo
- rm -f splay-tree.c splay-tree.h
-pth/mf-runtime.lo: mf-runtime.c mf-runtime.h mf-impl.h splay-tree.c splay-tree.h
+pth/mf-runtime.lo: mf-runtime.c mf-runtime.h mf-impl.h
$(LTCOMPILE) -DLIBMUDFLAPTH -c $(srcdir)/mf-runtime.c -o $@
pth/mf-heuristics.lo: mf-heuristics.c mf-runtime.h mf-impl.h
$(LTCOMPILE) -DLIBMUDFLAPTH -c $(srcdir)/mf-heuristics.c -o $@
diff --git a/libmudflap/ansidecl.h b/libmudflap/ansidecl.h
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/libmudflap/ansidecl.h
+++ /dev/null
diff --git a/libmudflap/configure b/libmudflap/configure
index d1fc1a07cbb..2df7182e5bd 100755
--- a/libmudflap/configure
+++ b/libmudflap/configure
@@ -309,7 +309,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot libtool_VERSION MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT multi_basedir CC ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CFLAGS CPP CPPFLAGS EGREP LN_S RANLIB ac_ct_RANLIB LIBTOOL enable_shared enable_static MF_HAVE_STDINT_H MF_HAVE_UINTPTR_T LIBMUDFLAPTH_TRUE LIBMUDFLAPTH_FALSE build_libmudflapth gcc_version toolexecdir toolexeclibdir NM ac_ct_NM SECTION_FLAGS LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT multi_basedir CC ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CFLAGS CPP CPPFLAGS EGREP LN_S RANLIB ac_ct_RANLIB LIBTOOL enable_shared enable_static MF_HAVE_STDINT_H MF_HAVE_UINTPTR_T LIBMUDFLAPTH_TRUE LIBMUDFLAPTH_FALSE build_libmudflapth gcc_version toolexecdir toolexeclibdir NM ac_ct_NM SECTION_FLAGS LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -1824,10 +1824,6 @@ INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
-# For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=1:0:0
-
-
echo "$as_me:$LINENO: checking for --enable-version-specific-runtime-libs" >&5
echo $ECHO_N "checking for --enable-version-specific-runtime-libs... $ECHO_C" >&6
# Check whether --enable-version-specific-runtime-libs or --disable-version-specific-runtime-libs was given.
@@ -3585,7 +3581,8 @@ done
-for ac_header in stdint.h execinfo.h signal.h dlfcn.h \
+
+for ac_header in stdint.h execinfo.h signal.h dlfcn.h dirent.h \
netdb.h sys/ipc.h sys/sem.h sys/shm.h sys/wait.h sys/socket.h ctype.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -5007,7 +5004,7 @@ test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
case $host in
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 5010 "configure"' > conftest.$ac_ext
+ echo '#line 5007 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -6759,7 +6756,6 @@ s,@mkdir_p@,$mkdir_p,;t t
s,@AWK@,$AWK,;t t
s,@SET_MAKE@,$SET_MAKE,;t t
s,@am__leading_dot@,$am__leading_dot,;t t
-s,@libtool_VERSION@,$libtool_VERSION,;t t
s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
s,@MAINT@,$MAINT,;t t
diff --git a/libmudflap/configure.ac b/libmudflap/configure.ac
index 3e33db64dcc..e53a7ac8a9d 100644
--- a/libmudflap/configure.ac
+++ b/libmudflap/configure.ac
@@ -8,10 +8,6 @@ AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE
-# For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=1:0:0
-AC_SUBST(libtool_VERSION)
-
AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
AC_ARG_ENABLE(version-specific-runtime-libs,
[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
@@ -63,7 +59,7 @@ AC_TRY_COMPILE([
[AC_MSG_RESULT(no)
enable_shared=no])
-AC_CHECK_HEADERS(stdint.h execinfo.h signal.h dlfcn.h \
+AC_CHECK_HEADERS(stdint.h execinfo.h signal.h dlfcn.h dirent.h \
netdb.h sys/ipc.h sys/sem.h sys/shm.h sys/wait.h sys/socket.h ctype.h)
AC_CHECK_FUNCS(backtrace backtrace_symbols gettimeofday signal)
diff --git a/libmudflap/libiberty.h b/libmudflap/libiberty.h
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/libmudflap/libiberty.h
+++ /dev/null
diff --git a/libmudflap/mf-hooks2.c b/libmudflap/mf-hooks2.c
index d2a5f3130f4..e031b43f4c9 100644
--- a/libmudflap/mf-hooks2.c
+++ b/libmudflap/mf-hooks2.c
@@ -52,7 +52,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include <string.h>
#include <stdarg.h>
-#include <strings.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
@@ -64,7 +63,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include <limits.h>
#include <time.h>
#include <ctype.h>
+#ifdef HAVE_DIRENT_H
#include <dirent.h>
+#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
@@ -1075,6 +1076,7 @@ WRAPPER2(void, setbuf, FILE *stream, char *buf)
}
+#ifdef HAVE_DIRENT_H
WRAPPER2(DIR *, opendir, const char *path)
{
DIR *p;
@@ -1121,6 +1123,7 @@ WRAPPER2(struct dirent *, readdir, DIR *dir)
}
return p;
}
+#endif
#ifdef HAVE_SYS_SOCKET_H
diff --git a/libmudflap/mf-hooks3.c b/libmudflap/mf-hooks3.c
index 00fb3728e36..b844ee5c2b5 100644
--- a/libmudflap/mf-hooks3.c
+++ b/libmudflap/mf-hooks3.c
@@ -172,6 +172,10 @@ __mf_allocate_blank_threadinfo (unsigned* idx)
making an early call into libmudflap. In these cases, create a new
entry. If not it's not the main thread, put it into reentrant
initial state.
+
+ NB: VERBOSE_TRACE type functions are not generally safe to call
+ from this context, since a new thread might just be "booting up",
+ making printf unsafe to call.
*/
static struct pthread_info*
__mf_find_threadinfo ()
@@ -225,7 +229,7 @@ __mf_find_threadinfo ()
/* NB: leave stack-related fields unset, to avoid
deallocation. */
main_thread_seen_p = 1;
- VERBOSE_TRACE ("identified self as main thread\n");
+ /* VERBOSE_TRACE ("identified self as main thread\n"); */
}
else
{
@@ -236,15 +240,17 @@ __mf_find_threadinfo ()
/* NB: leave stack-related fields unset, leaving pthread_create
to fill them in for user threads, leaving them empty for
other threads. */
- VERBOSE_TRACE ("identified self as new aux or user thread\n");
+ /* VERBOSE_TRACE ("identified self as new aux or user thread\n"); */
}
}
if (last != it)
{
+ /*
VERBOSE_TRACE ("found threadinfo for %u, slot %u\n",
(unsigned) it,
(unsigned) *hash);
+ */
last = it;
}
diff --git a/libmudflap/mf-impl.h b/libmudflap/mf-impl.h
index ef962bfaf01..55706c13dba 100644
--- a/libmudflap/mf-impl.h
+++ b/libmudflap/mf-impl.h
@@ -133,9 +133,6 @@ struct __mf_options
/* Emit internal tracing message. */
unsigned verbose_trace;
- /* Support multiple threads. XXX: not yet implemented. */
- /* unsigned multi_threaded; */
-
/* Wipe stack/heap objects upon unwind. */
unsigned wipe_stack;
unsigned wipe_heap;
@@ -153,6 +150,12 @@ struct __mf_options
/* Maintain this many stack frames for contexts. */
unsigned backtrace;
+ /* Ignore read operations even if mode_check is in effect. */
+ unsigned ignore_reads;
+
+ /* Collect register/unregister timestamps. */
+ unsigned timestamps;
+
#ifdef LIBMUDFLAPTH
/* Thread stack size. */
unsigned thread_stack;
@@ -168,9 +171,7 @@ struct __mf_options
}
mudflap_mode;
-
/* How to handle a violation. */
-
enum
{
viol_nop, /* Return control to application. */
@@ -240,7 +241,6 @@ extern enum __mf_state_enum *__mf_state_perthread ();
extern enum __mf_state_enum __mf_state;
#endif
extern int __mf_starting_p;
-
extern struct __mf_options __mf_opts;
/* ------------------------------------------------------------------------ */
@@ -355,6 +355,7 @@ ret __mfwrap_ ## fname (__VA_ARGS__)
#define MF_VALIDATE_EXTENT(value,size,acc,context) \
do { \
if (UNLIKELY (size > 0 && __MF_CACHE_MISS_P (value, size))) \
+ if (acc == __MF_CHECK_WRITE || ! __mf_opts.ignore_reads) \
__mf_check ((void *) (value), (size), acc, "(" context ")"); \
} while (0)
#define BEGIN_PROTECT(fname, ...) \
diff --git a/libmudflap/mf-runtime.c b/libmudflap/mf-runtime.c
index 8b1cc749c9e..e0a37a437dc 100644
--- a/libmudflap/mf-runtime.c
+++ b/libmudflap/mf-runtime.c
@@ -2,6 +2,8 @@
Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Frank Ch. Eigler <fche@redhat.com>
and Graydon Hoare <graydon@redhat.com>
+ Splay Tree code originally by Mark Mitchell <mark@markmitchell.com>,
+ adapted from libiberty.
This file is part of GCC.
@@ -67,10 +69,63 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "mf-runtime.h"
#include "mf-impl.h"
-#include "splay-tree.h"
/* ------------------------------------------------------------------------ */
+/* Splay-tree implementation. */
+
+typedef uintptr_t mfsplay_tree_key;
+typedef void *mfsplay_tree_value;
+
+/* Forward declaration for a node in the tree. */
+typedef struct mfsplay_tree_node_s *mfsplay_tree_node;
+
+/* The type of a function used to iterate over the tree. */
+typedef int (*mfsplay_tree_foreach_fn) (mfsplay_tree_node, void *);
+
+/* The nodes in the splay tree. */
+struct mfsplay_tree_node_s
+{
+ /* Data. */
+ mfsplay_tree_key key;
+ mfsplay_tree_value value;
+ /* Children. */
+ mfsplay_tree_node left;
+ mfsplay_tree_node right;
+ /* XXX: The addition of a parent pointer may eliminate some recursion. */
+};
+
+/* The splay tree itself. */
+struct mfsplay_tree_s
+{
+ /* The root of the tree. */
+ mfsplay_tree_node root;
+
+ /* The last key value for which the tree has been splayed, but not
+ since modified. */
+ mfsplay_tree_key last_splayed_key;
+ int last_splayed_key_p;
+
+ /* Statistics. */
+ unsigned num_keys;
+
+ /* Traversal recursion control flags. */
+ unsigned max_depth;
+ unsigned depth;
+ unsigned rebalance_p;
+};
+typedef struct mfsplay_tree_s *mfsplay_tree;
+
+static mfsplay_tree mfsplay_tree_new (void);
+static mfsplay_tree_node mfsplay_tree_insert (mfsplay_tree, mfsplay_tree_key, mfsplay_tree_value);
+static void mfsplay_tree_remove (mfsplay_tree, mfsplay_tree_key);
+static mfsplay_tree_node mfsplay_tree_lookup (mfsplay_tree, mfsplay_tree_key);
+static mfsplay_tree_node mfsplay_tree_predecessor (mfsplay_tree, mfsplay_tree_key);
+static mfsplay_tree_node mfsplay_tree_successor (mfsplay_tree, mfsplay_tree_key);
+static int mfsplay_tree_foreach (mfsplay_tree, mfsplay_tree_foreach_fn, void *);
+static void mfsplay_tree_rebalance (mfsplay_tree sp);
+
+/* ------------------------------------------------------------------------ */
/* Utility macros */
#define CTOR __attribute__ ((constructor))
@@ -136,7 +191,11 @@ pthread_mutex_t __mf_biglock =
the libmudflap.la (no threading support) can diagnose whether
the application is linked with -lpthread. See __mf_usage() below. */
#if HAVE_PTHREAD_H
+#ifdef _POSIX_THREADS
#pragma weak pthread_join
+#else
+#define pthread_join NULL
+#endif
const void *threads_active_p = (void *) pthread_join;
#endif
@@ -202,7 +261,7 @@ static __mf_object_t *__mf_object_cemetary[__MF_TYPE_MAX_CEM+1][__MF_PERSIST_MAX
/* ------------------------------------------------------------------------ */
/* Forward function declarations */
-static void __mf_init () CTOR;
+void __mf_init () CTOR;
static void __mf_sigusr1_respond ();
static unsigned __mf_find_objects (uintptr_t ptr_low, uintptr_t ptr_high,
__mf_object_t **objs, unsigned max_objs);
@@ -213,7 +272,7 @@ static unsigned __mf_find_dead_objects (uintptr_t ptr_low, uintptr_t ptr_high,
static void __mf_adapt_cache ();
static void __mf_describe_object (__mf_object_t *obj);
static unsigned __mf_watch_or_not (void *ptr, size_t sz, char flag);
-static splay_tree __mf_object_tree (int type);
+static mfsplay_tree __mf_object_tree (int type);
static void __mf_link_object (__mf_object_t *node);
static void __mf_unlink_object (__mf_object_t *node);
@@ -233,6 +292,7 @@ __mf_set_default_options ()
__mf_opts.persistent_count = 100;
__mf_opts.crumple_zone = 32;
__mf_opts.backtrace = 4;
+ __mf_opts.timestamps = 1;
__mf_opts.mudflap_mode = mode_check;
__mf_opts.violation_mode = viol_nop;
__mf_opts.heur_std_data = 1;
@@ -309,6 +369,12 @@ options [] =
{"abbreviate",
"abbreviate repetitive listings",
set_option, 1, &__mf_opts.abbreviate},
+ {"timestamps",
+ "track object lifetime timestamps",
+ set_option, 1, &__mf_opts.timestamps},
+ {"ignore-reads",
+ "ignore read accesses - assume okay",
+ set_option, 1, &__mf_opts.ignore_reads},
{"wipe-stack",
"wipe stack objects at unwind",
set_option, 1, &__mf_opts.wipe_stack},
@@ -365,7 +431,7 @@ __mf_usage ()
fprintf (stderr,
"This is a %s%sGCC \"mudflap\" memory-checked binary.\n"
- "Mudflap is Copyright (C) 2002-2003 Free Software Foundation, Inc.\n"
+ "Mudflap is Copyright (C) 2002-2004 Free Software Foundation, Inc.\n"
"\n"
"The mudflap code can be controlled by an environment variable:\n"
"\n"
@@ -600,22 +666,26 @@ struct __mf_dynamic_entry __mf_dynamic [] =
/* ------------------------------------------------------------------------ */
/* Lookup & manage automatic initialization of the five or so splay trees. */
-static splay_tree
+static mfsplay_tree
__mf_object_tree (int type)
{
- static splay_tree trees [__MF_TYPE_MAX+1];
+ static mfsplay_tree trees [__MF_TYPE_MAX+1];
assert (type >= 0 && type <= __MF_TYPE_MAX);
if (UNLIKELY (trees[type] == NULL))
- trees[type] = splay_tree_new (splay_tree_compare_pointers, NULL, NULL);
+ trees[type] = mfsplay_tree_new ();
return trees[type];
}
-void
+/* not static */void
__mf_init ()
{
char *ov = 0;
+ /* Return if initialization has already been done. */
+ if (LIKELY (__mf_starting_p == 0))
+ return;
+
/* This initial bootstrap phase requires that __mf_starting_p = 1. */
#ifdef PIC
__mf_resolve_dynamics ();
@@ -708,6 +778,12 @@ void __mf_fini ()
{
TRACE ("__mf_fini\n");
__mfu_report ();
+
+#ifndef PIC
+/* Since we didn't populate the tree for allocations in constructors
+ before __mf_init, we cannot check destructors after __mf_fini. */
+ __mf_opts.mudflap_mode = mode_nop;
+#endif
}
@@ -744,8 +820,13 @@ void __mfu_check (void *ptr, size_t sz, int type, const char *location)
switch (__mf_opts.mudflap_mode)
{
case mode_nop:
- entry->low = MINPTR;
- entry->high = MAXPTR;
+ /* It is tempting to poison the cache here similarly to
+ mode_populate. However that eliminates a valuable
+ distinction between these two modes. mode_nop is useful to
+ let a user count & trace every single check / registration
+ call. mode_populate is useful to let a program run fast
+ while unchecked.
+ */
judgement = 1;
break;
@@ -909,7 +990,8 @@ __mf_insert_new_object (uintptr_t low, uintptr_t high, int type,
new_obj->name = name;
new_obj->alloc_pc = pc;
#if HAVE_GETTIMEOFDAY
- gettimeofday (& new_obj->alloc_time, NULL);
+ if (__mf_opts.timestamps)
+ gettimeofday (& new_obj->alloc_time, NULL);
#endif
#if LIBMUDFLAPTH
new_obj->alloc_thread = pthread_self ();
@@ -1149,7 +1231,8 @@ __mfu_unregister (void *ptr, size_t sz, int type)
old_obj->deallocated_p = 1;
old_obj->dealloc_pc = (uintptr_t) __builtin_return_address (0);
#if HAVE_GETTIMEOFDAY
- gettimeofday (& old_obj->dealloc_time, NULL);
+ if (__mf_opts.timestamps)
+ gettimeofday (& old_obj->dealloc_time, NULL);
#endif
#ifdef LIBMUDFLAPTH
old_obj->dealloc_thread = pthread_self ();
@@ -1232,7 +1315,7 @@ struct tree_stats
static int
-__mf_adapt_cache_fn (splay_tree_node n, void *param)
+__mf_adapt_cache_fn (mfsplay_tree_node n, void *param)
{
__mf_object_t *obj = (__mf_object_t *) n->value;
struct tree_stats *s = (struct tree_stats *) param;
@@ -1289,11 +1372,11 @@ __mf_adapt_cache ()
memset (&s, 0, sizeof (s));
- splay_tree_foreach (__mf_object_tree (__MF_TYPE_HEAP), __mf_adapt_cache_fn, (void *) & s);
- splay_tree_foreach (__mf_object_tree (__MF_TYPE_HEAP_I), __mf_adapt_cache_fn, (void *) & s);
- splay_tree_foreach (__mf_object_tree (__MF_TYPE_STACK), __mf_adapt_cache_fn, (void *) & s);
- splay_tree_foreach (__mf_object_tree (__MF_TYPE_STATIC), __mf_adapt_cache_fn, (void *) & s);
- splay_tree_foreach (__mf_object_tree (__MF_TYPE_GUESS), __mf_adapt_cache_fn, (void *) & s);
+ mfsplay_tree_foreach (__mf_object_tree (__MF_TYPE_HEAP), __mf_adapt_cache_fn, (void *) & s);
+ mfsplay_tree_foreach (__mf_object_tree (__MF_TYPE_HEAP_I), __mf_adapt_cache_fn, (void *) & s);
+ mfsplay_tree_foreach (__mf_object_tree (__MF_TYPE_STACK), __mf_adapt_cache_fn, (void *) & s);
+ mfsplay_tree_foreach (__mf_object_tree (__MF_TYPE_STATIC), __mf_adapt_cache_fn, (void *) & s);
+ mfsplay_tree_foreach (__mf_object_tree (__MF_TYPE_GUESS), __mf_adapt_cache_fn, (void *) & s);
/* Maybe we're dealing with funny aging/adaptation parameters, or an
empty tree. Just leave the cache alone in such cases, rather
@@ -1363,11 +1446,11 @@ __mf_find_objects2 (uintptr_t ptr_low, uintptr_t ptr_high,
__mf_object_t **objs, unsigned max_objs, int type)
{
unsigned count = 0;
- splay_tree t = __mf_object_tree (type);
- splay_tree_key k = (splay_tree_key) ptr_low;
+ mfsplay_tree t = __mf_object_tree (type);
+ mfsplay_tree_key k = (mfsplay_tree_key) ptr_low;
int direction;
- splay_tree_node n = splay_tree_lookup (t, k);
+ mfsplay_tree_node n = mfsplay_tree_lookup (t, k);
/* An exact match for base address implies a hit. */
if (n != NULL)
{
@@ -1380,13 +1463,13 @@ __mf_find_objects2 (uintptr_t ptr_low, uintptr_t ptr_high,
for (direction = 0; direction < 2; direction ++)
{
/* Reset search origin. */
- k = (splay_tree_key) ptr_low;
+ k = (mfsplay_tree_key) ptr_low;
while (1)
{
__mf_object_t *obj;
- n = (direction == 0 ? splay_tree_predecessor (t, k) : splay_tree_successor (t, k));
+ n = (direction == 0 ? mfsplay_tree_successor (t, k) : mfsplay_tree_predecessor (t, k));
if (n == NULL) break;
obj = (__mf_object_t *) n->value;
@@ -1397,7 +1480,7 @@ __mf_find_objects2 (uintptr_t ptr_low, uintptr_t ptr_high,
objs[count] = (__mf_object_t *) n->value;
count ++;
- k = (splay_tree_key) obj->low;
+ k = (mfsplay_tree_key) obj->low;
}
}
@@ -1439,8 +1522,8 @@ __mf_find_objects (uintptr_t ptr_low, uintptr_t ptr_high,
static void
__mf_link_object (__mf_object_t *node)
{
- splay_tree t = __mf_object_tree (node->type);
- splay_tree_insert (t, (splay_tree_key) node->low, (splay_tree_value) node);
+ mfsplay_tree t = __mf_object_tree (node->type);
+ mfsplay_tree_insert (t, (mfsplay_tree_key) node->low, (mfsplay_tree_value) node);
}
/* __mf_unlink_object */
@@ -1448,8 +1531,8 @@ __mf_link_object (__mf_object_t *node)
static void
__mf_unlink_object (__mf_object_t *node)
{
- splay_tree t = __mf_object_tree (node->type);
- splay_tree_remove (t, (splay_tree_key) node->low);
+ mfsplay_tree t = __mf_object_tree (node->type);
+ mfsplay_tree_remove (t, (mfsplay_tree_key) node->low);
}
/* __mf_find_dead_objects */
@@ -1601,7 +1684,7 @@ __mf_describe_object (__mf_object_t *obj)
static int
-__mf_report_leaks_fn (splay_tree_node n, void *param)
+__mf_report_leaks_fn (mfsplay_tree_node n, void *param)
{
__mf_object_t *node = (__mf_object_t *) n->value;
unsigned *count = (unsigned *) param;
@@ -1621,9 +1704,9 @@ __mf_report_leaks ()
{
unsigned count = 0;
- (void) splay_tree_foreach (__mf_object_tree (__MF_TYPE_HEAP),
+ (void) mfsplay_tree_foreach (__mf_object_tree (__MF_TYPE_HEAP),
__mf_report_leaks_fn, & count);
- (void) splay_tree_foreach (__mf_object_tree (__MF_TYPE_HEAP_I),
+ (void) mfsplay_tree_foreach (__mf_object_tree (__MF_TYPE_HEAP_I),
__mf_report_leaks_fn, & count);
return count;
@@ -1835,7 +1918,7 @@ __mf_violation (void *ptr, size_t sz, uintptr_t pc,
{
unsigned dead_p;
unsigned num_helpful = 0;
- struct timeval now;
+ struct timeval now = { 0, 0 };
#if HAVE_GETTIMEOFDAY
gettimeofday (& now, NULL);
#endif
@@ -2140,25 +2223,519 @@ __assert_fail (const char *msg, const char *file, unsigned line, const char *fun
-
-
-/* #include the generic splay tree implementation from libiberty here, to
- ensure that it uses our memory allocation primitives. */
+/* Adapted splay tree code, originally from libiberty. It has been
+ specialized for libmudflap as requested by RMS. */
static void
-splay_tree_free (void *p)
+mfsplay_tree_free (void *p)
{
DECLARE (void, free, void *p);
CALL_REAL (free, p);
}
static void *
-splay_tree_xmalloc (size_t s)
+mfsplay_tree_xmalloc (size_t s)
{
DECLARE (void *, malloc, size_t s);
return CALL_REAL (malloc, s);
}
-#define free(z) splay_tree_free(z)
-#define xmalloc(z) splay_tree_xmalloc(z)
-#include "splay-tree.c"
+
+static void mfsplay_tree_splay (mfsplay_tree, mfsplay_tree_key);
+static mfsplay_tree_node mfsplay_tree_splay_helper (mfsplay_tree,
+ mfsplay_tree_key,
+ mfsplay_tree_node *,
+ mfsplay_tree_node *,
+ mfsplay_tree_node *);
+static void *mfsplay_tree_xmalloc (size_t size);
+static void mfsplay_tree_free (void *object);
+
+
+
+/* Inline comparison function specialized for libmudflap's key type. */
+static inline int
+compare_uintptr_t (mfsplay_tree_key k1, mfsplay_tree_key k2)
+{
+ if ((uintptr_t) k1 < (uintptr_t) k2)
+ return -1;
+ else if ((uintptr_t) k1 > (uintptr_t) k2)
+ return 1;
+ else
+ return 0;
+}
+
+
+/* Help splay SP around KEY. PARENT and GRANDPARENT are the parent
+ and grandparent, respectively, of NODE. */
+
+static mfsplay_tree_node
+mfsplay_tree_splay_helper (mfsplay_tree sp,
+ mfsplay_tree_key key,
+ mfsplay_tree_node * node,
+ mfsplay_tree_node * parent,
+ mfsplay_tree_node * grandparent)
+{
+ mfsplay_tree_node *next;
+ mfsplay_tree_node n;
+ int comparison;
+
+ n = *node;
+
+ if (!n)
+ return *parent;
+
+ comparison = compare_uintptr_t (key, n->key);
+
+ if (comparison == 0)
+ /* We've found the target. */
+ next = 0;
+ else if (comparison < 0)
+ /* The target is to the left. */
+ next = &n->left;
+ else
+ /* The target is to the right. */
+ next = &n->right;
+
+ if (next)
+ {
+ /* Check whether our recursion depth is too high. Abort this search,
+ and signal that a rebalance is required to continue. */
+ if (sp->depth > sp->max_depth)
+ {
+ sp->rebalance_p = 1;
+ return n;
+ }
+
+ /* Continue down the tree. */
+ sp->depth ++;
+ n = mfsplay_tree_splay_helper (sp, key, next, node, parent);
+ sp->depth --;
+
+ /* The recursive call will change the place to which NODE
+ points. */
+ if (*node != n || sp->rebalance_p)
+ return n;
+ }
+
+ if (!parent)
+ /* NODE is the root. We are done. */
+ return n;
+
+ /* First, handle the case where there is no grandparent (i.e.,
+ *PARENT is the root of the tree.) */
+ if (!grandparent)
+ {
+ if (n == (*parent)->left)
+ {
+ *node = n->right;
+ n->right = *parent;
+ }
+ else
+ {
+ *node = n->left;
+ n->left = *parent;
+ }
+ *parent = n;
+ return n;
+ }
+
+ /* Next handle the cases where both N and *PARENT are left children,
+ or where both are right children. */
+ if (n == (*parent)->left && *parent == (*grandparent)->left)
+ {
+ mfsplay_tree_node p = *parent;
+
+ (*grandparent)->left = p->right;
+ p->right = *grandparent;
+ p->left = n->right;
+ n->right = p;
+ *grandparent = n;
+ return n;
+ }
+ else if (n == (*parent)->right && *parent == (*grandparent)->right)
+ {
+ mfsplay_tree_node p = *parent;
+
+ (*grandparent)->right = p->left;
+ p->left = *grandparent;
+ p->right = n->left;
+ n->left = p;
+ *grandparent = n;
+ return n;
+ }
+
+ /* Finally, deal with the case where N is a left child, but *PARENT
+ is a right child, or vice versa. */
+ if (n == (*parent)->left)
+ {
+ (*parent)->left = n->right;
+ n->right = *parent;
+ (*grandparent)->right = n->left;
+ n->left = *grandparent;
+ *grandparent = n;
+ return n;
+ }
+ else
+ {
+ (*parent)->right = n->left;
+ n->left = *parent;
+ (*grandparent)->left = n->right;
+ n->right = *grandparent;
+ *grandparent = n;
+ return n;
+ }
+}
+
+
+
+static int
+mfsplay_tree_rebalance_helper1 (mfsplay_tree_node n, void *array_ptr)
+{
+ mfsplay_tree_node **p = array_ptr;
+ *(*p) = n;
+ (*p)++;
+ return 0;
+}
+
+
+static mfsplay_tree_node
+mfsplay_tree_rebalance_helper2 (mfsplay_tree_node * array, unsigned low,
+ unsigned high)
+{
+ unsigned middle = low + (high - low) / 2;
+ mfsplay_tree_node n = array[middle];
+
+ /* Note that since we're producing a balanced binary tree, it is not a problem
+ that this function is recursive. */
+ if (low + 1 <= middle)
+ n->left = mfsplay_tree_rebalance_helper2 (array, low, middle - 1);
+ else
+ n->left = NULL;
+
+ if (middle + 1 <= high)
+ n->right = mfsplay_tree_rebalance_helper2 (array, middle + 1, high);
+ else
+ n->right = NULL;
+
+ return n;
+}
+
+
+/* Rebalance the entire tree. Do this by copying all the node
+ pointers into an array, then cleverly re-linking them. */
+static void
+mfsplay_tree_rebalance (mfsplay_tree sp)
+{
+ mfsplay_tree_node *all_nodes, *all_nodes_1;
+
+ if (sp->num_keys <= 2)
+ return;
+
+ all_nodes = mfsplay_tree_xmalloc (sizeof (mfsplay_tree_node) * sp->num_keys);
+
+ /* Traverse all nodes to copy their addresses into this array. */
+ all_nodes_1 = all_nodes;
+ mfsplay_tree_foreach (sp, mfsplay_tree_rebalance_helper1,
+ (void *) &all_nodes_1);
+
+ /* Relink all the nodes. */
+ sp->root = mfsplay_tree_rebalance_helper2 (all_nodes, 0, sp->num_keys - 1);
+
+ mfsplay_tree_free (all_nodes);
+}
+
+
+/* Splay SP around KEY. */
+static void
+mfsplay_tree_splay (mfsplay_tree sp, mfsplay_tree_key key)
+{
+ if (sp->root == 0)
+ return;
+
+ /* If we just splayed the tree with the same key, do nothing. */
+ if (sp->last_splayed_key_p &&
+ compare_uintptr_t (sp->last_splayed_key, key) == 0)
+ return;
+
+ /* Compute a maximum recursion depth for a splay tree with NUM nodes.
+ The idea is to limit excessive stack usage if we're facing
+ degenerate access patterns. Unfortunately such patterns can occur
+ e.g. during static initialization, where many static objects might
+ be registered in increasing address sequence, or during a case where
+ large tree-like heap data structures are allocated quickly.
+
+ On x86, this corresponds to roughly 200K of stack usage.
+ XXX: For libmudflapth, this could be a function of __mf_opts.thread_stack. */
+ sp->max_depth = 2500;
+ sp->rebalance_p = sp->depth = 0;
+
+ mfsplay_tree_splay_helper (sp, key, &sp->root, NULL, NULL);
+ if (sp->rebalance_p)
+ {
+ mfsplay_tree_rebalance (sp);
+
+ sp->rebalance_p = sp->depth = 0;
+ mfsplay_tree_splay_helper (sp, key, &sp->root, NULL, NULL);
+
+ if (sp->rebalance_p)
+ abort ();
+ }
+
+
+ /* Cache this splay key. */
+ sp->last_splayed_key = key;
+ sp->last_splayed_key_p = 1;
+}
+
+
+
+/* Allocate a new splay tree. */
+static mfsplay_tree
+mfsplay_tree_new ()
+{
+ mfsplay_tree sp = mfsplay_tree_xmalloc (sizeof (struct mfsplay_tree_s));
+ sp->root = NULL;
+ sp->last_splayed_key_p = 0;
+ sp->num_keys = 0;
+
+ return sp;
+}
+
+
+
+/* Insert a new node (associating KEY with DATA) into SP. If a
+ previous node with the indicated KEY exists, its data is replaced
+ with the new value. Returns the new node. */
+static mfsplay_tree_node
+mfsplay_tree_insert (mfsplay_tree sp, mfsplay_tree_key key, mfsplay_tree_value value)
+{
+ int comparison = 0;
+
+ mfsplay_tree_splay (sp, key);
+
+ if (sp->root)
+ comparison = compare_uintptr_t (sp->root->key, key);
+
+ if (sp->root && comparison == 0)
+ {
+ /* If the root of the tree already has the indicated KEY, just
+ replace the value with VALUE. */
+ sp->root->value = value;
+ }
+ else
+ {
+ /* Create a new node, and insert it at the root. */
+ mfsplay_tree_node node;
+
+ node = mfsplay_tree_xmalloc (sizeof (struct mfsplay_tree_node_s));
+ node->key = key;
+ node->value = value;
+ sp->num_keys++;
+ if (!sp->root)
+ node->left = node->right = 0;
+ else if (comparison < 0)
+ {
+ node->left = sp->root;
+ node->right = node->left->right;
+ node->left->right = 0;
+ }
+ else
+ {
+ node->right = sp->root;
+ node->left = node->right->left;
+ node->right->left = 0;
+ }
+
+ sp->root = node;
+ sp->last_splayed_key_p = 0;
+ }
+
+ return sp->root;
+}
+
+/* Remove KEY from SP. It is not an error if it did not exist. */
+
+static void
+mfsplay_tree_remove (mfsplay_tree sp, mfsplay_tree_key key)
+{
+ mfsplay_tree_splay (sp, key);
+ sp->last_splayed_key_p = 0;
+ if (sp->root && compare_uintptr_t (sp->root->key, key) == 0)
+ {
+ mfsplay_tree_node left, right;
+ left = sp->root->left;
+ right = sp->root->right;
+ /* Delete the root node itself. */
+ mfsplay_tree_free (sp->root);
+ sp->num_keys--;
+ /* One of the children is now the root. Doesn't matter much
+ which, so long as we preserve the properties of the tree. */
+ if (left)
+ {
+ sp->root = left;
+ /* If there was a right child as well, hang it off the
+ right-most leaf of the left child. */
+ if (right)
+ {
+ while (left->right)
+ left = left->right;
+ left->right = right;
+ }
+ }
+ else
+ sp->root = right;
+ }
+}
+
+/* Lookup KEY in SP, returning VALUE if present, and NULL
+ otherwise. */
+
+static mfsplay_tree_node
+mfsplay_tree_lookup (mfsplay_tree sp, mfsplay_tree_key key)
+{
+ mfsplay_tree_splay (sp, key);
+ if (sp->root && compare_uintptr_t (sp->root->key, key) == 0)
+ return sp->root;
+ else
+ return 0;
+}
+
+
+/* Return the immediate predecessor KEY, or NULL if there is no
+ predecessor. KEY need not be present in the tree. */
+
+static mfsplay_tree_node
+mfsplay_tree_predecessor (mfsplay_tree sp, mfsplay_tree_key key)
+{
+ int comparison;
+ mfsplay_tree_node node;
+ /* If the tree is empty, there is certainly no predecessor. */
+ if (!sp->root)
+ return NULL;
+ /* Splay the tree around KEY. That will leave either the KEY
+ itself, its predecessor, or its successor at the root. */
+ mfsplay_tree_splay (sp, key);
+ comparison = compare_uintptr_t (sp->root->key, key);
+ /* If the predecessor is at the root, just return it. */
+ if (comparison < 0)
+ return sp->root;
+ /* Otherwise, find the rightmost element of the left subtree. */
+ node = sp->root->left;
+ if (node)
+ while (node->right)
+ node = node->right;
+ return node;
+}
+
+/* Return the immediate successor KEY, or NULL if there is no
+ successor. KEY need not be present in the tree. */
+
+static mfsplay_tree_node
+mfsplay_tree_successor (mfsplay_tree sp, mfsplay_tree_key key)
+{
+ int comparison;
+ mfsplay_tree_node node;
+ /* If the tree is empty, there is certainly no successor. */
+ if (!sp->root)
+ return NULL;
+ /* Splay the tree around KEY. That will leave either the KEY
+ itself, its predecessor, or its successor at the root. */
+ mfsplay_tree_splay (sp, key);
+ comparison = compare_uintptr_t (sp->root->key, key);
+ /* If the successor is at the root, just return it. */
+ if (comparison > 0)
+ return sp->root;
+ /* Otherwise, find the leftmost element of the right subtree. */
+ node = sp->root->right;
+ if (node)
+ while (node->left)
+ node = node->left;
+ return node;
+}
+
+/* Call FN, passing it the DATA, for every node in SP, following an
+ in-order traversal. If FN every returns a non-zero value, the
+ iteration ceases immediately, and the value is returned.
+ Otherwise, this function returns 0.
+
+ This function simulates recursion using dynamically allocated
+ arrays, since it may be called from mfsplay_tree_rebalance(), which
+ in turn means that the tree is already uncomfortably deep for stack
+ space limits. */
+static int
+mfsplay_tree_foreach (mfsplay_tree st, mfsplay_tree_foreach_fn fn, void *data)
+{
+ mfsplay_tree_node *stack1;
+ char *stack2;
+ unsigned sp;
+ int val = 0;
+ enum s { s_left, s_here, s_right, s_up };
+
+ if (st->root == NULL) /* => num_keys == 0 */
+ return 0;
+
+ stack1 = mfsplay_tree_xmalloc (sizeof (mfsplay_tree_node) * st->num_keys);
+ stack2 = mfsplay_tree_xmalloc (sizeof (char) * st->num_keys);
+
+ sp = 0;
+ stack1 [sp] = st->root;
+ stack2 [sp] = s_left;
+
+ while (1)
+ {
+ mfsplay_tree_node n;
+ enum s s;
+
+ n = stack1 [sp];
+ s = stack2 [sp];
+
+ /* Handle each of the four possible states separately. */
+
+ /* 1: We're here to traverse the left subtree (if any). */
+ if (s == s_left)
+ {
+ stack2 [sp] = s_here;
+ if (n->left != NULL)
+ {
+ sp ++;
+ stack1 [sp] = n->left;
+ stack2 [sp] = s_left;
+ }
+ }
+
+ /* 2: We're here to traverse this node. */
+ else if (s == s_here)
+ {
+ stack2 [sp] = s_right;
+ val = (*fn) (n, data);
+ if (val) break;
+ }
+
+ /* 3: We're here to traverse the right subtree (if any). */
+ else if (s == s_right)
+ {
+ stack2 [sp] = s_up;
+ if (n->right != NULL)
+ {
+ sp ++;
+ stack1 [sp] = n->right;
+ stack2 [sp] = s_left;
+ }
+ }
+
+ /* 4: We're here after both subtrees (if any) have been traversed. */
+ else if (s == s_up)
+ {
+ /* Pop the stack. */
+ if (sp == 0) break; /* Popping off the root note: we're finished! */
+ sp --;
+ }
+
+ else
+ abort ();
+ }
+
+ mfsplay_tree_free (stack1);
+ mfsplay_tree_free (stack2);
+ return val;
+}
diff --git a/libmudflap/mf-runtime.h.in b/libmudflap/mf-runtime.h.in
index b035c7d2d32..afb04a59b7e 100644
--- a/libmudflap/mf-runtime.h.in
+++ b/libmudflap/mf-runtime.h.in
@@ -15,12 +15,18 @@ typedef unsigned long uintptr_t;
#endif
-/* Global declarations used by instrumentation. */
-
+/* Global declarations used by instrumentation. When _MUDFLAP is
+ defined, these have been auto-declared by the compiler and we
+ should not declare them again (ideally we *would* declare them
+ again, to verify that the compiler's declarations match the
+ library's, but the C++ front end has no mechanism for allowing
+ the re-definition of a structure type). */
+#ifndef _MUDFLAP
struct __mf_cache { uintptr_t low; uintptr_t high; };
extern struct __mf_cache __mf_lookup_cache [];
extern uintptr_t __mf_lc_mask;
extern unsigned char __mf_lc_shift;
+#endif
/* Multithreading support. */
#ifdef _MUDFLAPTH
diff --git a/libmudflap/testsuite/Makefile.in b/libmudflap/testsuite/Makefile.in
index a30769a73df..f3ab847eb56 100644
--- a/libmudflap/testsuite/Makefile.in
+++ b/libmudflap/testsuite/Makefile.in
@@ -136,7 +136,6 @@ infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
-libtool_VERSION = @libtool_VERSION@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
diff --git a/libmudflap/testsuite/libmudflap.c++/c++frags.exp b/libmudflap/testsuite/libmudflap.c++/c++frags.exp
index 43da3bdf56b..5eb69aa6528 100644
--- a/libmudflap/testsuite/libmudflap.c++/c++frags.exp
+++ b/libmudflap/testsuite/libmudflap.c++/c++frags.exp
@@ -6,9 +6,9 @@ dg-init
global srcdir
foreach flags [list {} {-static} {-O2} {-O3}] {
- foreach srcfile [lsort [glob -nocomplain ${srcdir}/libmudflap.c++/*.cxx]] {
+ foreach srcfile [lsort [glob -nocomplain ${srcdir}/libmudflap.c++/*frag.cxx]] {
set bsrc [file tail $srcfile]
- setenv MUDFLAP_OPTIONS "-no-heur-proc-map -viol-segv"
+ setenv MUDFLAP_OPTIONS "-viol-segv"
dg-runtest $srcfile $flags "-fmudflap -lmudflap"
}
}
diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog
index 8073dd8fba2..c31ffbd6e67 100644
--- a/libobjc/ChangeLog
+++ b/libobjc/ChangeLog
@@ -1,7 +1,17 @@
+2004-07-22 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * thr.c (__objc_thread_detach_function): Do not mark as volatile
+ but instead use the attribute noreturn.
+
+2004-06-28 Zack Weinberg <zack@codesourcery.com>
+
+ * encoding.c: Rename target_flags with a #define to avoid
+ conflict with a prior declaration.
+
2004-06-24 Andrew Pinski <apinski@apple.com>
* objc/encoding.h: Wrap the functions with extern "C" for C++
- mode.
+ mode.
* objc/hash.h: Likewise.
* objc/objc-api.h: Likewise.
* objc/objc-list.h: Likewise.
@@ -18,10 +28,10 @@
2004-06-20 Alexander Malmberg <alexander@malmberg.org>
- * Makefile.in (exception.lo): Remove $(OBJC_GCFLAGS).
- (exception_gc.lo): New.
- (OBJS_GC): Add exception_gc.lo.
-
+ * Makefile.in (exception.lo): Remove $(OBJC_GCFLAGS).
+ (exception_gc.lo): New.
+ (OBJS_GC): Add exception_gc.lo.
+
2004-06-17 Richard Henderson <rth@redhat.com>
* exception.c: New file.
@@ -74,30 +84,30 @@
Merge from the libobjc-branch
2004-02-09 Andrew Pinski <pinskia@physics.uc.edu>
-
+
* Makefile.in (OBJC_H): Change objc-deps.h to objc-decls.h.
-
+
2004-02-03 Andrew Pinski <pinskia@physics.uc.edu>
-
+
* Makefile.in (OBJC_H): Add objc-deps.h.
-
+
2004-01-27 Nicola Pero <n.pero@mi.flashnet.it>
-
+
* Protocol.m ([-conformsTo:]): If the argument is nil, return NO.
([-hash], [-isEqual:]): New methods.
-
+
2004-01-27 Richard Frith-Macdonald <rfm@gnu.org>
-
+
* sarray.c (sarray_free): Add a better comment.
-
+
2004-01-27 Adam Fedor <fedor@gnu.org>
-
+
* hash.c (hash_add): Cast cachep to int.
* selector.c (__sel_register_typed_name): Cast
soffset_decode to int.
-
+
2004-01-27 Alexander Malmberg <alexander@malmberg.org>
-
+
* selector.c: Rename register_selectors_from_list to
__objc_register_selectors_from_list. Update caller.
(__objc_register_selectors_from_list): Lock __objc_runtime_mutex
@@ -109,30 +119,30 @@
* sendmsg.c (class_add_method_list): Use
__objc_register_selectors_from_list.
* objc/runtime.h: Add __objc_register_selectors_from_list.
-
+
2004-01-25 Adam Fedor <fedor@gnu.org>
- Nicola Pero <n.pero@mi.flashnet.it>
- Andrew Pinski <pinskia@physics.uc.edu>
-
+ Nicola Pero <n.pero@mi.flashnet.it>
+ Andrew Pinski <pinskia@physics.uc.edu>
+
* objc/objc-decls.h: New file.
* objc/objc-api.h (_objc_lookup_class): Mark as export.
(_objc_load_callback): Likewise.
(_objc_object_alloc): Likewise.
(_objc_object_copy): Likewise.
(_objc_object_dispose): Likewise.
-
+
2004-01-25 Andrew Pinski <pinskia@physics.uc.edu>
-
+
* archive.c: s/__inline__/inline
- * sendmsg.c: Likewise.
-
+ * sendmsg.c: Likewise.
+
* encoding.c: Remove FIXME about the warning
about unused variable.
* sendmsg.c: Add a FIXME comment saying that
this should be using libffi.
-
+
* Makefile.in (LIBTOOL): Use @LIBTOOL@ now as it works.
-
+
2004-05-13 Andrew Pinski <pinskia@physics.uc.edu>
diff --git a/libobjc/encoding.c b/libobjc/encoding.c
index 248ab10bd9a..dba203204b6 100644
--- a/libobjc/encoding.c
+++ b/libobjc/encoding.c
@@ -86,8 +86,11 @@ Boston, MA 02111-1307, USA. */
#define STRUCTURE_SIZE_BOUNDARY (BITS_PER_UNIT * sizeof (struct{char a;}))
/* Some ROUND_TYPE_ALIGN macros use TARGET_foo, and consequently
- target_flags. Define a dummy entry here to so we don't die. */
-static int __attribute__ ((__unused__)) target_flags = 0;
+ target_flags. Define a dummy entry here to so we don't die.
+ We have to rename it because target_flags may already have been
+ declared extern. */
+#define target_flags not_target_flags
+static int __attribute__ ((__unused__)) not_target_flags = 0;
/* FIXME: while this file has no business including tm.h, this
diff --git a/libobjc/thr.c b/libobjc/thr.c
index c8e8173ad8b..7420cfaf2d0 100644
--- a/libobjc/thr.c
+++ b/libobjc/thr.c
@@ -75,8 +75,8 @@ struct __objc_thread_start_state
id argument;
};
-static volatile void
-__objc_thread_detach_function (struct __objc_thread_start_state *istate)
+static void __attribute__((noreturn))
+__objc_thread_detach_function (struct __objc_thread_start_state *istate)
{
/* Valid state? */
if (istate) {
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index ad9c7f55429..f56c60f5093 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,446 @@
+2004-07-30 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (num_get<>::_M_extract_float,
+ num_get<>::_M_extract_int): In the main parsing loop delay the
+ life of __q to the actual use point.
+
+2004-07-29 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/14220
+ * include/bits/locale_facets.tcc (num_put<>::_M_insert_float):
+ Don't clip the precision passed down to __convert_from_v:
+ 22.2.2.2.2 nowhere says so.
+ * testsuite/22_locale/num_put/put/char/14220.cc: New.
+ * testsuite/22_locale/num_put/put/wchar_t/14220.c: Likewise.
+
+2004-07-29 Paolo Carlini <pcarlini@suse.de>
+
+ * docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 31.
+
+2004-07-29 Paolo Carlini <pcarlini@suse.de>
+ Petur Runolfsson <peturr02@ru.is>
+
+ PR libstdc++/12658 (continued)
+ * src/locale_init.cc (locale::locale, locale::global): Use
+ a single locale_mutex instead of two separate mutexes.
+
+2004-07-29 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/16813
+ * include/debug/map.h (insert(_InputIterator, _InputIterator)):
+ Fix typo.
+ * testsuite/23_containers/map/insert/16813.cc: New.
+
+2004-07-29 Phil Edwards <phil@codesourcery.com>
+
+ * docs/html/faq/index.html: Update version references. Make
+ clear that code from SGI has diverged greatly. Remove references
+ to library snapshots and what's-new sections.
+ * docs/html/faq/index.txt: Regenerate.
+
+2004-07-28 Matt Austern <austern@apple.com>
+
+ * include/bits/stl_construct.h (_Destroy): New three-argument
+ overload that takes an allocator argument. Another inline
+ three-argument overload that takes std::allocator and dispatches
+ to the two-argument version.
+ * include/bits/stl_uninitialized.h (__uninitialized_fill_n_aux):
+ Change return type to void to match uninitialized_fill_n.
+ (__uninitialized_copy_a_): New function. Like uninitialized_copy
+ except that it takes an allocator and uses it for construct and
+ destroy. If the allocator is std::allocator, dispatches to
+ uninitialized_copy.
+ (__uninitialized_fill_a): Likewise.
+ (__uninitialized_fill_n_a): Likewise.
+ (__uninitialized_copy_copy): Give it an allocator argument.
+ (__uninitialized_fill_copy): Likewise.
+ (__uninitialized_copy_fill): Likewise.
+ * include/bits/deque.tcc: Use new forms defined in stl_construct.h
+ and stl_uninitialized.h. Replace use of single-argument _Construct
+ and _Destroy with use of allocator's construct and destroy methods.
+ * include/bits/list.tcc: Likewise.
+ * include/bits/stl_deque.h: Likewise.
+ * include/bits/stl_list.h: Likewise.
+ * include/bits/stl_tree.h: Likewise.
+ * include/bits/stl_vector.h: Likewise.
+ * include/bits/vector.tcc: Likewise.
+ * include/ext/hashtable.h: Use rebind so that allocator_type
+ has correct type for a container's allocator. Replace use of
+ single-argument _Construct and _Destroy with use of allocator's
+ construct and destroy methods.
+ * include/ext/memory (__uninitialized_copy_n_a): New function.
+ Like uninitialized_copy_n except that it takes an extra parameter,
+ an allocator, and uses it for construct and destroy operations.
+ * include/ext/rope: Use new forms defined in stl_construct.h,
+ stl_uninitialized.h, and ext/memory. Replace use of single-argument
+ _Construct and _Destroy with allocator construct and destroy methods.
+ * include/ext/ropeimpl.h: Likewise.
+ * include/ext/slist.h: Likewise.
+ * testsuite/testsuite_allocator.h (check_construct_destroy): New.
+ * testsuite/testsuite_allocator.cc (check_construct_destroy): New.
+ * testsuite/23_containers/deque/check_construct_destroy.cc: New.
+ * testsuite/23_containers/list/check_construct_destroy.cc: New.
+ * testsuite/23_containers/set/check_construct_destroy.cc: New.
+ * testsuite/23_containers/vector/check_construct_destroy.cc: New.
+ * testsuite/ext/hash_check_construct_destroy.cc: New.
+ * testsuite/ext/slist_check_construct_destroy.cc: New.
+
+2004-07-28 Alexandre Oliva <aoliva@redhat.com>
+
+ 2003-10-01 Eric Christopher <echristo@redhat.com>
+ * config/cpu/sh/atomicity.h (__exchange_and_add): Remove 'm'
+ constraint.
+ 2003-07-09 Alexandre Oliva <aoliva@redhat.com>
+ * config/cpu/sh/atomicity.h: New. Use movli and movco on SH4a.
+
+2004-07-23 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/16678
+ * include/bits/locale_facets.tcc: Fix for -Werror.
+
+2004-07-23 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * docs/html/debug.html: Say debug mode only available since 3.4.0.
+
+2004-07-21 Benjamin Kosnik <bkoz@redhat.com>
+
+ * docs/doxygen/mainpage.html: Clarify links.
+ * docs/doxygen/stdheader.cc: Add files.
+ * docs/doxygen/style.css: Remove bolds, add h2, h3 styles.
+ * docs/doxygen/user.cfg.in: New options, wrap.
+
+2004-07-20 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * include/c_std/std_cwchar.h (wcsstr): Correct signature.
+
+2004-07-19 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR libstdc++/15488
+ * testsuite/lib/libstdc++.exp (v3-copy-files): Revert.
+
+2004-07-17 Richard Sandiford <rsandifo@redhat.com>
+
+ PR bootstrap/16469
+ * scripts/create_testsuite_files: Pass -print to find.
+
+2004-07-15 Paolo Carlini <pcarlini@suse.de>
+
+ * docs/html/ext/lwg-active.html, lwg-defects.html: Import Revision 30.
+ * docs/html/ext/howto.html: Tweak entries for DRs 167/253/389/402.
+
+2004-07-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR libstdc++/14697
+ * acinclude.m4 (glibcxx_shared_libgcc): Correct
+ glibcxx_shared_libgcc test for multilibs.
+ * configure: Rebuilt.
+
+2004-07-14 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/16505
+ * include/bits/stl_uninitialized.h (uninitialized_fill_n): Fix
+ the signature to return void, as per 20.4.4.3.
+ * include/bits/stl_vector.h (vector::vector(size_type,
+ const value_type&, const allocator_type&), vector::vector(size_type),
+ vector::_M_initialize_dispatch): Adjust callers.
+ * include/bits/vector.tcc (vector<>::_M_fill_assign,
+ vector<>::_M_fill_insert): Likewise.
+ * testsuite/20_util/memory/16505.cc: New.
+
+2004-07-14 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/22_locale/locale/cons/12658_thread-1.cc,
+ 12658_thread-2.cc: Use __gnu_test::try_named_locale.
+
+2004-07-13 Benjamin Kosnik <bkoz@redhat.com>
+
+ * docs/html/ext/mt_allocator.html: Add docs for _Tune.
+ * include/ext/mt_allocator.h (__mt_alloc::_S_get_options): Make public.
+ (__mt_alloc::_S_set_options): Same.
+ Add to comments.
+
+2004-07-13 Benjamin Kosnik <bkoz@redhat.com>
+
+ * acinclude.m4 (GLIBCXX_ENABLE_ALLOCATOR): Add allocator defaults
+ for linux.
+ * configure: Regenerated.
+
+2004-07-13 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/22_locale/locale/cons/12658_thread.cc: Move/rename
+ to 12658_thread-1.cc and xfail.
+ * testsuite/22_locale/locale/cons/12658_thread-2.c: New, much
+ simpler version of 12658_thread-1.cc, still failing on 3_3 and
+ not failing on 3_4/mainline - both on single processor and
+ multiprocessor machines.
+
+2004-07-12 Benjamin Kosnik <bkoz@redhat.com>
+
+ * docs/html/abi.html: Remove non-public qualification.
+
+ * include/bits/concurrence.h: Tweak comments.
+
+2004-07-11 Paolo Carlini <pcarlini@suse.de>
+
+ Add wchar_t counterparts of the basic_streambbuf<char> tests.
+ * testsuite/27_io/basic_streambuf/cons/wchar_t/1.cc: New.
+ * testsuite/27_io/basic_streambuf/imbue/wchar_t/1.cc, 9322.cc:
+ Likewise.
+ * testsuite/27_io/basic_streambuf/in_avail/wchar_t/9701-3.cc: Likewise.
+ * testsuite/27_io/basic_streambuf/overflow/wchar_t/1.cc, 2.cc,
+ 3599.cc: Likewise.
+ * testsuite/27_io/basic_streambuf/sgetc/wchar_t/1.cc: Likewise.
+ * testsuite/27_io/basic_streambuf/sgetn/wchar_t/1.cc: Likewise.
+ * testsuite/27_io/basic_streambuf/sputbackc/wchar_t/9538.cc: Likewise.
+ * testsuite/27_io/basic_streambuf/sputc/wchar_t/1057.cc: Likewise.
+ * testsuite/27_io/basic_streambuf/sputn/wchar_t/1.cc, 1057.cc:
+ Likewise.
+ * testsuite/27_io/basic_streambuf/sync/wchar_t/1057.cc: Likewise.
+
+ * testsuite/27_io/basic_streambuf/imbue/char/1.cc, 9322.cc: Minor
+ tweaks.
+ * testsuite/27_io/basic_streambuf/overflow/char/2.cc, 3599.cc:
+ Likewise.
+ * testsuite/27_io/basic_streambuf/sputn/char/1057.cc: Likewise.
+ * testsuite/27_io/basic_streambuf/sync/char/1057.cc: Likewise.
+
+2004-07-11 Phil Edwards <phil@codesourcery.com>
+
+ * acinclude.m4: Cosmetic shell syntax fixes.
+ * configure.ac: Bring comment inline with reality.
+ * configure.host: Both of the above. Move 'arm' case to right
+ place in host_cpu switch.
+ * aclocal.m4, configure: Regenerate.
+
+2004-07-09 Paolo Carlini <pcarlini@suse.de>
+
+ Add wchar_t counterparts of the basic_stringbuf<char> tests.
+ * testsuite/27_io/basic_stringbuf/imbue/wchar_t/1.cc, 9322.cc: New.
+ * testsuite/27_io/basic_stringbuf/in_avail/wchar_t/1.cc: Likewise.
+ * testsuite/27_io/basic_stringbuf/overflow/wchar_t/1.cc, 2.cc,
+ 3599.cc, 9988.cc: Likewise.
+ * testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/1.cc, 9825.cc:
+ Likewise.
+ * testsuite/27_io/basic_stringbuf/seekoff/wchar_t/1.cc, 2.cc:
+ Likewise.
+ * testsuite/27_io/basic_stringbuf/seekoff/wchar_t/1.cc, 2.cc, 3.cc:
+ Likewise.
+ * testsuite/27_io/basic_stringbuf/setbuf/wchar_t/1.cc, 2.cc, 3.cc:
+ Likewise.
+ * testsuite/27_io/basic_stringbuf/sgetc/wchar_t/1.cc: Likewise.
+ * testsuite/27_io/basic_stringbuf/sgetn/wchar_t/1.cc: Likewise.
+ * testsuite/27_io/basic_stringbuf/snextc/wchar_t/1.cc: Likewise.
+ * testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/1.cc, 9425.cc:
+ Likewise.
+ * testsuite/27_io/basic_stringbuf/sputc/wchar_t/1.cc, 1057.cc,
+ 9404-1.cc: Likewise.
+ * testsuite/27_io/basic_stringbuf/sputn/wchar_t/1.cc, 1057.cc,
+ 9404-2.cc: Likewise.
+ * testsuite/27_io/basic_stringbuf/str/wchar_t/1.cc, 2.cc, 3.cc,
+ 3955.cc: Likewise.
+ * testsuite/27_io/basic_stringbuf/sungetc/wchar_t/1.cc: Likewise.
+ * testsuite/27_io/basic_stringbuf/sync/wchar_t/1057.cc: Likewise.
+
+2004-07-08 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/gslice.h: Trivial formatting fixes.
+ * include/bits/gslice_array.h: Likewise.
+ * include/bits/indirect_array.h: Likewise.
+ * include/bits/mask_array.h: Likewise.
+ * include/bits/slice_array.h: Likewise.
+ * include/bits/valarray_after.h: Likewise.
+ * include/bits/valarray_array.h: Likewise.
+ * include/bits/valarray_before.h: Likewise.
+ * include/std/std_valarray.h: Likewise.
+
+2004-07-08 Benjamin Kosnik <bkoz@redhat.com>
+
+ PR c++/16169
+ * include/bits/basic_string.h (basic_string::operator=): Revert.
+
+2004-07-07 Benjamin Kosnik <bkoz@redhat.com>
+
+ * configure.ac (libtool_VERSION): To 6:2:0.
+ * configure: Regenerated.
+
+ * testsuite/testsuite_abi.cc (check_version): Add 3.4.2.
+
+2004-07-07 Aaron W. LaFramboise <aaronraolete36@aaronwl.com>
+
+ PR libstdc++/16411
+ * config/linker-map.gnu: Add stdio_sync_filebuf::file exports.
+
+2004-07-07 Benjamin Kosnik <bkoz@redhat.com>
+
+ * docs/html/abi.html: Updates for 3.4.1 release. Add summary of
+ -Weffc++ issues.
+
+2004-07-07 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/16401
+ * include/bits/sstream.tcc (overflow): When reallocating _M_string
+ use an exponential grow policy.
+ * testsuite/27_io/basic_stringbuf/overflow/char/1.cc: New.
+ * testsuite/performance/27_io/stringbuf_overflow.cc: New.
+
+2004-07-06 Anssi Hannula <anssi.hannula@mbnet.fi>
+
+ PR libstdc++/15928
+ * crossconfig.m4: Add in bits for djgpp.
+ * configure: Regenerate.
+
+2004-07-05 Jonathan Wakely <redi@gcc.gnu.org>
+
+ * testsuite/23_containers/{set,multiset}/14340.cc: Fix typos in
+ instantiation of set and multiset (functor param given as int).
+
+2004-07-04 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/basic_string.h: Trivial formatting fixes and/or
+ const-ification of some variables.
+ * include/bits/deque.tcc: Likewise.
+ * include/bits/stl_algobase.h: Likewise.
+ * include/bits/stl_bvector.h: Likewise.
+ * include/bits/stl_construct.h: Likewise.
+ * include/bits/stl_deque.h: Likewise.
+ * include/bits/stl_pair.h: Likewise.
+ * include/bits/stl_vector.h: Likewise.
+ * include/bits/vector.tcc: Likewise.
+
+2004-07-04 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/25_algorithms/copy/1.cc: Add instantiations for
+ systems with no COMDAT or weak support.
+ * testsuite/25_algorithms/copy/2.cc: Likewise.
+ * testsuite/25_algorithms/copy/3.cc: Likewise.
+ * testsuite/25_algorithms/copy/4.cc: Likewise.
+
+2004-07-03 Paul Brook <paul@codesourcery.com>
+
+ * configure.ac: Set ABI_TWEAKS_SRCDIR.
+ * configure.host: Set abi_tweaks_dir. Check for atomicity.h when
+ setting atomicity_dir. Override type_cpu for arm based targets.
+ * include/Makefile.am (host_headers): Add cxxabi_tweaks.h.
+ * libsupc++/cxxabi.h: Include bits/cxxabi.h. Don't declare __guard.
+ * libsupc++/guard.cc: Use definitions from cxxabi_tweaks.h.
+ * libsupc++/vec.cc: Ditto.
+ * config/cpu/arm/cxxabi_tweaks.h: New file.
+ * config/cpu/generic/cxxabi_tweaks.h: New file.
+ * */Makefile.in: Regenerate.
+ * configure: Regenerate.
+
+2004-07-02 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/type_traits.h (_Is_normal_iterator): Move...
+ * include/bits/cpp_type_traits.h: ... here, renamed to
+ __is_normal_iterator and consistent with the other traits.
+ * include/bits/stl_algobase.h (__copy_ni1, __copy_ni2): Convert
+ to the struct __copy_normal and three specializations.
+ (__copy_backward_output_normal_iterator,
+ __copy_backward_input_normal_iterator): Likewise, convert to
+ the struct __copy_backward_normal and three specializations.
+ (copy, copy_backward): Use the latter.
+ (__copy_aux, __copy_backward_aux): Very minor tweaks.
+
+2004-07-01 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/stl_algobase.h (__copy_trivial): Remove.
+ (__copy_aux2): Rewrite as __copy_aux to use __is_pointer,
+ __is_trivially_copyable, __are_same and __copy::copy.
+ (__copy): Rewrite as a class template and two specializations.
+ (__copy_ni2): Simplify, just call __copy_aux.
+
+ * include/bits/stl_algobase.h (__copy_backward_aux): Add __are_same
+ check.
+ * testsuite/25_algorithms/copy/1.cc, 2.cc, 3.cc, 4.cc: Test also
+ for destination value type != source value type.
+
+2004-07-01 Benjamin Kosnik <bkoz@redhat.com>
+ Per Bothner <per@bothner.com>
+ Mohan Embar <gnustuff@thisiscool.com>
+
+ PR libstdc++/16248
+ * include/bits/concurrence.h (__glibcxx_mutex_type): New.
+ (__glibcxx_mutex): Encapsulate mutex init function into type for
+ threaded configurations without __GTHREAD_MUTEX_INIT.
+ (lock::lock): Make device member a reference.
+ (lock::~lock): Same.
+ * include/ext/pool_allocator.h (__pool_base::_M_get_mutex): Change
+ to mutex_type.
+ * src/allocator.cc: Same.
+
+2004-06-30 Brad Spencer <spencer@infointeractive.com>
+
+ * include/ext/mt_allocator.h: Handle allocations at static
+ initialization that happen before _S_options is (automatically)
+ constructed; set _S_init even if _M_force_new is true.
+
+2004-06-30 Benjamin Kosnik <bkoz@redhat.com>
+
+ * config/linker-map.gnu: Revert new exports.
+
+2004-06-30 Benjamin Kosnik <bkoz@redhat.com>
+ Stuart Anderson <anderson@netsweng.com>
+
+ * config/linker-map.gnu: Add destructor exports for abstract base
+ classes to conform to LSB.
+
+2004-06-30 Gabriel Dos Reis <gdr@integrable-solutions.net>
+ Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/cpp_type_traits.h: Add __is_pointer and
+ __is_trivially_copyable.
+ * include/bits/stl_algobase.h (fill, fill_n): Slightly
+ tweak to use the latter.
+ (__copy_backward_dispatch): Remove.
+ (__copy_backward_aux): Rewrite to use __is_pointer and
+ __is_trivially_copyable and __copy_backward::copy_b.
+ (__copy_backward): Rewrite as a class template and two
+ specializations.
+
+2004-06-30 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/25_algorithms/copy.cc: Move to...
+ * testsuite/25_algorithms/copy/1.cc: ... here, extend.
+ * testsuite/25_algorithms/copy/2.cc: New.
+ * testsuite/25_algorithms/copy/3.cc: New.
+ * testsuite/25_algorithms/copy/4.cc: New.
+
+2004-06-29 Paul Brook <paul@codesourcery.com>
+
+ * libsupc++/vec.cc (__cxa_vec_new2, __cxa_vec_new3): Store the
+ element size in the cookie.
+
+2004-06-28 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/cpp_type_traits.h: Move the additions to
+ namespace __gnu_internal outside of namespace std; trivial
+ formatting fixes.
+
+2004-06-28 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/debug/safe_base.h (__gnu_debug::_Safe_sequence_base):
+ Revert -Weffc++ changes that defined copy ctory and or assignment
+ operator.
+ * libsupc++/tinfo.cc (__upcast_result): Same.
+
+2004-06-28 Paolo Carlini <pcarlini@suse.de>
+
+ * src/localename.cc (locale::_Impl::_Impl): Slightly improve
+ the algorithm used to name the categories.
+
+2004-06-28 Paolo Bonzini <bonzini@gnu.org>
+
+ * include/Makefile.am: Give a .gch extension to
+ the PCH files, not only to the directory.
+ * include/Makefile.in: Regenerate.
+
+2004-06-28 Paolo Carlini <pcarlini@suse.de>
+
+ * config/locale/gnu/monetary_members.cc
+ (moneypunct<wchar_t>::_M_initialize_moneypunct): Clean up
+ assignments of _M_decimal_point and _M_thousands_sep.
+
2004-06-27 Paolo Carlini <pcarlini@suse.de>
* docs/html/17_intro/contribute.html: Update some links.
diff --git a/libstdc++-v3/Makefile.in b/libstdc++-v3/Makefile.in
index d1a304024c2..e99995f0ea4 100644
--- a/libstdc++-v3/Makefile.in
+++ b/libstdc++-v3/Makefile.in
@@ -87,6 +87,7 @@ DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
+ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
ACLOCAL = @ACLOCAL@
ALLOCATOR_H = @ALLOCATOR_H@
ALLOCATOR_NAME = @ALLOCATOR_NAME@
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 64b208fea30..c9be65e0ba7 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -982,8 +982,8 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
# Probe for locale support if no specific model is specified.
# Default to "generic".
if test $enable_clocale_flag = auto; then
- case x${target_os} in
- xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu)
+ case ${target_os} in
+ linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
AC_EGREP_CPP([_GLIBCXX_ok], [
#include <features.h>
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
@@ -992,7 +992,7 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
], enable_clocale_flag=gnu, enable_clocale_flag=generic)
# Test for bugs early in glibc-2.2.x series
- if test x$enable_clocale_flag = xgnu; then
+ if test $enable_clocale_flag = gnu; then
AC_TRY_RUN([
#define _GNU_SOURCE 1
#include <locale.h>
@@ -1153,20 +1153,27 @@ AC_DEFUN([GLIBCXX_ENABLE_ALLOCATOR], [
GLIBCXX_ENABLE(libstdcxx-allocator,auto,[=KIND],
[use KIND for target std::allocator base],
[permit new|malloc|mt|bitmap|pool|yes|no|auto])
+
# If they didn't use this option switch, or if they specified --enable
# with no specific model, we'll have to look for one. If they
# specified --disable (???), do likewise.
- if test $enable_libstdcxx_allocator = no || test $enable_libstdcxx_allocator = yes; then
+ if test $enable_libstdcxx_allocator = no ||
+ test $enable_libstdcxx_allocator = yes;
+ then
enable_libstdcxx_allocator=auto
fi
- # Either a known package, or "auto"
+ # Either a known package, or "auto". Auto implies the default choice
+ # for a particular platform.
enable_libstdcxx_allocator_flag=$enable_libstdcxx_allocator
# Probe for host-specific support if no specific model is specified.
# Default to "new".
if test $enable_libstdcxx_allocator_flag = auto; then
case ${target_os} in
+ linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+ enable_libstdcxx_allocator_flag=mt
+ ;;
*)
enable_libstdcxx_allocator_flag=new
;;
@@ -1570,6 +1577,23 @@ if test $enable_symvers != no; then
CFLAGS=' -lgcc_s'
AC_TRY_LINK(, [return 0;], glibcxx_shared_libgcc=yes, glibcxx_shared_libgcc=no)
CFLAGS="$ac_save_CFLAGS"
+ if test $glibcxx_shared_libgcc = no; then
+ cat > conftest.c <<EOF
+int main (void) { return 0; }
+EOF
+changequote(,)dnl
+ glibcxx_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
+ -shared -shared-libgcc -o conftest.so \
+ conftest.c -v 2>&1 >/dev/null \
+ | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
+changequote([,])dnl
+ rm -f conftest.c conftest.so
+ if test x${glibcxx_libgcc_s_suffix+set} = xset; then
+ CFLAGS=" -lgcc_s$glibcxx_libgcc_s_suffix"
+ AC_TRY_LINK(, [return 0;], glibcxx_shared_libgcc=yes)
+ CFLAGS="$ac_save_CFLAGS"
+ fi
+ fi
AC_MSG_RESULT($glibcxx_shared_libgcc)
fi
diff --git a/libstdc++-v3/config/linker-map.gnu b/libstdc++-v3/config/linker-map.gnu
index e6a861b78f3..71ffef62a49 100644
--- a/libstdc++-v3/config/linker-map.gnu
+++ b/libstdc++-v3/config/linker-map.gnu
@@ -130,9 +130,6 @@ GLIBCXX_3.4 {
_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_;
_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_;
- # std::__codecvt_abstract_base*
- _ZNStSt23__codecvt_abstract_base*;
-
# std::__basic_file
_ZNKSt12__basic_fileIcE7is_openEv;
_ZNSt12__basic_fileIcE2fdEv;
@@ -256,6 +253,8 @@ GLIBCXX_3.4.1 {
GLIBCXX_3.4.2 {
+ _ZN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EE4fileEv;
+
_ZN9__gnu_cxx11__pool_base9_M_refillE[jm];
_ZN9__gnu_cxx11__pool_base16_M_get_free_listE[jm];
_ZN9__gnu_cxx11__pool_base12_M_get_mutexEv;
diff --git a/libstdc++-v3/config/locale/gnu/monetary_members.cc b/libstdc++-v3/config/locale/gnu/monetary_members.cc
index f1cb25fe58b..947876cce45 100644
--- a/libstdc++-v3/config/locale/gnu/monetary_members.cc
+++ b/libstdc++-v3/config/locale/gnu/monetary_members.cc
@@ -387,12 +387,12 @@ namespace std
setlocale(LC_ALL, __name);
#endif
- union __s_and_w { const char *__s; unsigned int __w; } __u;
+ union { char *__s; wchar_t __w; } __u;
__u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
- _M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
+ _M_data->_M_decimal_point = __u.__w;
__u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
- _M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
+ _M_data->_M_thousands_sep = __u.__w;
_M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
_M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
@@ -529,12 +529,12 @@ namespace std
setlocale(LC_ALL, __name);
#endif
- union __s_and_w { const char *__s; unsigned int __w; } __u;
+ union { char *__s; wchar_t __w; } __u;
__u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
- _M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
+ _M_data->_M_decimal_point = __u.__w;
__u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
- _M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
+ _M_data->_M_thousands_sep = __u.__w;
_M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
_M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 5ab13a4e6af..fe0bb85e9f3 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -309,7 +309,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS libtool_VERSION multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot glibcxx_builddir glibcxx_srcdir toplevel_srcdir CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LN_S AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBTOOL CXXCPP CPPFLAGS enable_shared enable_static GLIBCXX_HOSTED_TRUE GLIBCXX_HOSTED_FALSE GLIBCXX_BUILD_PCH_TRUE GLIBCXX_BUILD_PCH_FALSE glibcxx_PCHFLAGS CSTDIO_H BASIC_FILE_H BASIC_FILE_CC CPP EGREP check_msgfmt glibcxx_MOFILES glibcxx_POFILES glibcxx_localedir USE_NLS CLOCALE_H CCODECVT_H CMESSAGES_H CCODECVT_CC CCOLLATE_CC CCTYPE_CC CMESSAGES_CC CMONEY_CC CNUMERIC_CC CTIME_H CTIME_CC CLOCALE_CC CLOCALE_INTERNAL_H ALLOCATOR_H ALLOCATOR_NAME C_INCLUDE_DIR GLIBCXX_C_HEADERS_C_TRUE GLIBCXX_C_HEADERS_C_FALSE GLIBCXX_C_HEADERS_C_STD_TRUE GLIBCXX_C_HEADERS_C_STD_FALSE GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE glibcxx_thread_h DEBUG_FLAGS GLIBCXX_BUILD_DEBUG_TRUE GLIBCXX_BUILD_DEBUG_FALSE EXTRA_CXX_FLAGS WERROR SECTION_FLAGS SECTION_LDFLAGS OPT_LDFLAGS LIBMATHOBJS LIBICONV SYMVER_MAP port_specific_symbol_files GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE GLIBCXX_BUILD_VERSIONED_SHLIB_FALSE baseline_dir GLIBCXX_TEST_WCHAR_T_TRUE GLIBCXX_TEST_WCHAR_T_FALSE GLIBCXX_TEST_ABI_TRUE GLIBCXX_TEST_ABI_FALSE ATOMICITY_SRCDIR ATOMIC_WORD_SRCDIR OS_INC_SRCDIR glibcxx_prefixdir gxx_include_dir glibcxx_toolexecdir glibcxx_toolexeclibdir GLIBCXX_INCLUDES TOPLEVEL_INCLUDES OPTIMIZE_CXXFLAGS WARN_FLAGS LIBSUPCXX_PICFLAGS LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS libtool_VERSION multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot glibcxx_builddir glibcxx_srcdir toplevel_srcdir CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LN_S AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBTOOL CXXCPP CPPFLAGS enable_shared enable_static GLIBCXX_HOSTED_TRUE GLIBCXX_HOSTED_FALSE GLIBCXX_BUILD_PCH_TRUE GLIBCXX_BUILD_PCH_FALSE glibcxx_PCHFLAGS CSTDIO_H BASIC_FILE_H BASIC_FILE_CC CPP EGREP check_msgfmt glibcxx_MOFILES glibcxx_POFILES glibcxx_localedir USE_NLS CLOCALE_H CCODECVT_H CMESSAGES_H CCODECVT_CC CCOLLATE_CC CCTYPE_CC CMESSAGES_CC CMONEY_CC CNUMERIC_CC CTIME_H CTIME_CC CLOCALE_CC CLOCALE_INTERNAL_H ALLOCATOR_H ALLOCATOR_NAME C_INCLUDE_DIR GLIBCXX_C_HEADERS_C_TRUE GLIBCXX_C_HEADERS_C_FALSE GLIBCXX_C_HEADERS_C_STD_TRUE GLIBCXX_C_HEADERS_C_STD_FALSE GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE glibcxx_thread_h DEBUG_FLAGS GLIBCXX_BUILD_DEBUG_TRUE GLIBCXX_BUILD_DEBUG_FALSE EXTRA_CXX_FLAGS WERROR SECTION_FLAGS SECTION_LDFLAGS OPT_LDFLAGS LIBMATHOBJS LIBICONV SYMVER_MAP port_specific_symbol_files GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE GLIBCXX_BUILD_VERSIONED_SHLIB_FALSE baseline_dir GLIBCXX_TEST_WCHAR_T_TRUE GLIBCXX_TEST_WCHAR_T_FALSE GLIBCXX_TEST_ABI_TRUE GLIBCXX_TEST_ABI_FALSE ATOMICITY_SRCDIR ATOMIC_WORD_SRCDIR ABI_TWEAKS_SRCDIR OS_INC_SRCDIR glibcxx_prefixdir gxx_include_dir glibcxx_toolexecdir glibcxx_toolexeclibdir GLIBCXX_INCLUDES TOPLEVEL_INCLUDES OPTIMIZE_CXXFLAGS WARN_FLAGS LIBSUPCXX_PICFLAGS LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -1373,7 +1373,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
### am handles this now? ORIGINAL_LD_FOR_MULTILIBS=$LD
# For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=6:1:0
+libtool_VERSION=6:2:0
# Find the rest of the source tree framework.
@@ -5681,8 +5681,8 @@ fi;
# Probe for locale support if no specific model is specified.
# Default to "generic".
if test $enable_clocale_flag = auto; then
- case x${target_os} in
- xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu)
+ case ${target_os} in
+ linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -5706,7 +5706,7 @@ rm -f conftest*
# Test for bugs early in glibc-2.2.x series
- if test x$enable_clocale_flag = xgnu; then
+ if test $enable_clocale_flag = gnu; then
if test "$cross_compiling" = yes; then
enable_clocale_flag=generic
else
@@ -6234,20 +6234,27 @@ else
enable_libstdcxx_allocator=auto
fi;
+
# If they didn't use this option switch, or if they specified --enable
# with no specific model, we'll have to look for one. If they
# specified --disable (???), do likewise.
- if test $enable_libstdcxx_allocator = no || test $enable_libstdcxx_allocator = yes; then
+ if test $enable_libstdcxx_allocator = no ||
+ test $enable_libstdcxx_allocator = yes;
+ then
enable_libstdcxx_allocator=auto
fi
- # Either a known package, or "auto"
+ # Either a known package, or "auto". Auto implies the default choice
+ # for a particular platform.
enable_libstdcxx_allocator_flag=$enable_libstdcxx_allocator
# Probe for host-specific support if no specific model is specified.
# Default to "new".
if test $enable_libstdcxx_allocator_flag = auto; then
case ${target_os} in
+ linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+ enable_libstdcxx_allocator_flag=mt
+ ;;
*)
enable_libstdcxx_allocator_flag=new
;;
@@ -53200,6 +53207,21771 @@ _ACEOF
;;
+ *djgpp)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_header in float.h ieeefp.h inttypes.h locale.h \
+ memory.h stdint.h stdlib.h strings.h string.h unistd.h \
+ wchar.h wctype.h machine/endian.h sys/ioctl.h sys/param.h \
+ sys/resource.h sys/stat.h sys/time.h sys/types.h sys/uio.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ----------------------------------------- ##
+## Report this to the package-unused lists. ##
+## ----------------------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ # All these tests are for C++; save the language and the compiler flags.
+ # The CXXFLAGS thing is suspicious, but based on similar bits previously
+ # found in GLIBCXX_CONFIGURE.
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ ac_test_CXXFLAGS="${CXXFLAGS+set}"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+
+ # Check for maintainer-mode bits.
+ if test x"$USE_MAINTAINER_MODE" = xno; then
+ WERROR=''
+ else
+ WERROR='-Werror'
+ fi
+
+ # Check for -ffunction-sections -fdata-sections
+ echo "$as_me:$LINENO: checking for g++ that supports -ffunction-sections -fdata-sections" >&5
+echo $ECHO_N "checking for g++ that supports -ffunction-sections -fdata-sections... $ECHO_C" >&6
+ CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+int foo;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_fdsections=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fdsections=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ else
+ # this is the suspicious part
+ CXXFLAGS=''
+ fi
+ if test x"$ac_fdsections" = x"yes"; then
+ SECTION_FLAGS='-ffunction-sections -fdata-sections'
+ fi
+ echo "$as_me:$LINENO: result: $ac_fdsections" >&5
+echo "${ECHO_T}$ac_fdsections" >&6
+
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+ # If we're not using GNU ld, then there's no point in even trying these
+ # tests. Check for that first. We should have already tested for gld
+ # by now (in libtool), but require it now just to be safe...
+ test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
+ test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
+
+
+
+ # The name set by libtool depends on the version of libtool. Shame on us
+ # for depending on an impl detail, but c'est la vie. Older versions used
+ # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on
+ # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually
+ # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't
+ # set (hence we're using an older libtool), then set it.
+ if test x${with_gnu_ld+set} != xset; then
+ if test x${ac_cv_prog_gnu_ld+set} != xset; then
+ # We got through "ac_require(ac_prog_ld)" and still not set? Huh?
+ with_gnu_ld=no
+ else
+ with_gnu_ld=$ac_cv_prog_gnu_ld
+ fi
+ fi
+
+ # Start by getting the version number. I think the libtool test already
+ # does some of this, but throws away the result.
+
+ ldver=`$LD --version 2>/dev/null | head -1 | \
+ sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+
+ glibcxx_gnu_ld_version=`echo $ldver | \
+ $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
+
+ # Set --gc-sections.
+ if test "$with_gnu_ld" = "notbroken"; then
+ # GNU ld it is! Joy and bunny rabbits!
+
+ # All these tests are for C++; save the language and the compiler flags.
+ # Need to do this so that g++ won't try to link in libstdc++
+ ac_test_CFLAGS="${CFLAGS+set}"
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS='-x c++ -Wl,--gc-sections'
+
+ # Check for -Wl,--gc-sections
+ # XXX This test is broken at the moment, as symbols required for linking
+ # are now in libsupc++ (not built yet). In addition, this test has
+ # cored on solaris in the past. In addition, --gc-sections doesn't
+ # really work at the moment (keeps on discarding used sections, first
+ # .eh_frame and now some of the glibc sections for iconv).
+ # Bzzzzt. Thanks for playing, maybe next time.
+ echo "$as_me:$LINENO: checking for ld that supports -Wl,--gc-sections" >&5
+echo $ECHO_N "checking for ld that supports -Wl,--gc-sections... $ECHO_C" >&6
+ if test "$cross_compiling" = yes; then
+ ac_sectionLDflags=yes
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ int main(void)
+ {
+ try { throw 1; }
+ catch (...) { };
+ return 0;
+ }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_sectionLDflags=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_sectionLDflags=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS="$ac_save_CFLAGS"
+ else
+ # this is the suspicious part
+ CFLAGS=''
+ fi
+ if test "$ac_sectionLDflags" = "yes"; then
+ SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
+ fi
+ echo "$as_me:$LINENO: result: $ac_sectionLDflags" >&5
+echo "${ECHO_T}$ac_sectionLDflags" >&6
+ fi
+
+ # Set linker optimization flags.
+ if test x"$with_gnu_ld" = x"yes"; then
+ OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
+ fi
+
+
+
+
+
+ ac_test_CXXFLAGS="${CXXFLAGS+set}"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+ echo "$as_me:$LINENO: checking for sin in -lm" >&5
+echo $ECHO_N "checking for sin in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_sin+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm $LIBS"
+if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char sin ();
+int
+main ()
+{
+sin ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_m_sin=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_sin=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_sin" >&5
+echo "${ECHO_T}$ac_cv_lib_m_sin" >&6
+if test $ac_cv_lib_m_sin = yes; then
+ libm="-lm"
+fi
+
+ ac_save_LIBS="$LIBS"
+ LIBS="$LIBS $libm"
+
+
+
+ echo "$as_me:$LINENO: checking for isinf declaration" >&5
+echo $ECHO_N "checking for isinf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_isinf_use+set} != xset; then
+ if test "${glibcxx_cv_func_isinf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ isinf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_isinf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_isinf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_isinf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_isinf_use" >&6
+
+ if test x$glibcxx_cv_func_isinf_use = x"yes"; then
+
+for ac_func in isinf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _isinf declaration" >&5
+echo $ECHO_N "checking for _isinf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__isinf_use+set} != xset; then
+ if test "${glibcxx_cv_func__isinf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _isinf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__isinf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__isinf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__isinf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__isinf_use" >&6
+
+ if test x$glibcxx_cv_func__isinf_use = x"yes"; then
+
+for ac_func in _isinf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for isnan declaration" >&5
+echo $ECHO_N "checking for isnan declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_isnan_use+set} != xset; then
+ if test "${glibcxx_cv_func_isnan_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ isnan(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_isnan_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_isnan_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_isnan_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_isnan_use" >&6
+
+ if test x$glibcxx_cv_func_isnan_use = x"yes"; then
+
+for ac_func in isnan
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _isnan declaration" >&5
+echo $ECHO_N "checking for _isnan declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__isnan_use+set} != xset; then
+ if test "${glibcxx_cv_func__isnan_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _isnan(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__isnan_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__isnan_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__isnan_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__isnan_use" >&6
+
+ if test x$glibcxx_cv_func__isnan_use = x"yes"; then
+
+for ac_func in _isnan
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for finite declaration" >&5
+echo $ECHO_N "checking for finite declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_finite_use+set} != xset; then
+ if test "${glibcxx_cv_func_finite_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ finite(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_finite_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_finite_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_finite_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_finite_use" >&6
+
+ if test x$glibcxx_cv_func_finite_use = x"yes"; then
+
+for ac_func in finite
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _finite declaration" >&5
+echo $ECHO_N "checking for _finite declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__finite_use+set} != xset; then
+ if test "${glibcxx_cv_func__finite_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _finite(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__finite_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__finite_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__finite_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__finite_use" >&6
+
+ if test x$glibcxx_cv_func__finite_use = x"yes"; then
+
+for ac_func in _finite
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for copysign declaration" >&5
+echo $ECHO_N "checking for copysign declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_copysign_use+set} != xset; then
+ if test "${glibcxx_cv_func_copysign_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ copysign(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_copysign_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_copysign_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_copysign_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_copysign_use" >&6
+
+ if test x$glibcxx_cv_func_copysign_use = x"yes"; then
+
+for ac_func in copysign
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _copysign declaration" >&5
+echo $ECHO_N "checking for _copysign declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__copysign_use+set} != xset; then
+ if test "${glibcxx_cv_func__copysign_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _copysign(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__copysign_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__copysign_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__copysign_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__copysign_use" >&6
+
+ if test x$glibcxx_cv_func__copysign_use = x"yes"; then
+
+for ac_func in _copysign
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for sincos declaration" >&5
+echo $ECHO_N "checking for sincos declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_sincos_use+set} != xset; then
+ if test "${glibcxx_cv_func_sincos_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ sincos(0, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_sincos_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_sincos_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_sincos_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_sincos_use" >&6
+
+ if test x$glibcxx_cv_func_sincos_use = x"yes"; then
+
+for ac_func in sincos
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _sincos declaration" >&5
+echo $ECHO_N "checking for _sincos declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__sincos_use+set} != xset; then
+ if test "${glibcxx_cv_func__sincos_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _sincos(0, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__sincos_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__sincos_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__sincos_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__sincos_use" >&6
+
+ if test x$glibcxx_cv_func__sincos_use = x"yes"; then
+
+for ac_func in _sincos
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for fpclass declaration" >&5
+echo $ECHO_N "checking for fpclass declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_fpclass_use+set} != xset; then
+ if test "${glibcxx_cv_func_fpclass_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ fpclass(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_fpclass_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_fpclass_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_fpclass_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_fpclass_use" >&6
+
+ if test x$glibcxx_cv_func_fpclass_use = x"yes"; then
+
+for ac_func in fpclass
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _fpclass declaration" >&5
+echo $ECHO_N "checking for _fpclass declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__fpclass_use+set} != xset; then
+ if test "${glibcxx_cv_func__fpclass_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _fpclass(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__fpclass_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__fpclass_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__fpclass_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__fpclass_use" >&6
+
+ if test x$glibcxx_cv_func__fpclass_use = x"yes"; then
+
+for ac_func in _fpclass
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for qfpclass declaration" >&5
+echo $ECHO_N "checking for qfpclass declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_qfpclass_use+set} != xset; then
+ if test "${glibcxx_cv_func_qfpclass_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ qfpclass(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_qfpclass_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_qfpclass_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_qfpclass_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_qfpclass_use" >&6
+
+ if test x$glibcxx_cv_func_qfpclass_use = x"yes"; then
+
+for ac_func in qfpclass
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _qfpclass declaration" >&5
+echo $ECHO_N "checking for _qfpclass declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__qfpclass_use+set} != xset; then
+ if test "${glibcxx_cv_func__qfpclass_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _qfpclass(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__qfpclass_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__qfpclass_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__qfpclass_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__qfpclass_use" >&6
+
+ if test x$glibcxx_cv_func__qfpclass_use = x"yes"; then
+
+for ac_func in _qfpclass
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for hypot declaration" >&5
+echo $ECHO_N "checking for hypot declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_hypot_use+set} != xset; then
+ if test "${glibcxx_cv_func_hypot_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ hypot(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_hypot_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_hypot_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_hypot_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_hypot_use" >&6
+
+ if test x$glibcxx_cv_func_hypot_use = x"yes"; then
+
+for ac_func in hypot
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _hypot declaration" >&5
+echo $ECHO_N "checking for _hypot declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__hypot_use+set} != xset; then
+ if test "${glibcxx_cv_func__hypot_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _hypot(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__hypot_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__hypot_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__hypot_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__hypot_use" >&6
+
+ if test x$glibcxx_cv_func__hypot_use = x"yes"; then
+
+for ac_func in _hypot
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for float trig functions" >&5
+echo $ECHO_N "checking for float trig functions... $ECHO_C" >&6
+ if test "${glibcxx_cv_func_float_trig_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ `for x in acosf asinf atanf \
+ cosf sinf tanf \
+ coshf sinhf tanhf; do echo "$x (0);"; done`
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_float_trig_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_float_trig_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_float_trig_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_float_trig_use" >&6
+ if test x$glibcxx_cv_func_float_trig_use = x"yes"; then
+
+
+
+
+
+
+
+
+
+for ac_func in acosf asinf atanf \
+ cosf sinf tanf \
+ coshf sinhf tanhf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+
+
+ echo "$as_me:$LINENO: checking for float round functions" >&5
+echo $ECHO_N "checking for float round functions... $ECHO_C" >&6
+ if test "${glibcxx_cv_func_float_round_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ `for x in ceilf floorf; do echo "$x (0);"; done`
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_float_round_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_float_round_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_float_round_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_float_round_use" >&6
+ if test x$glibcxx_cv_func_float_round_use = x"yes"; then
+
+
+for ac_func in ceilf floorf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for expf declaration" >&5
+echo $ECHO_N "checking for expf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_expf_use+set} != xset; then
+ if test "${glibcxx_cv_func_expf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ expf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_expf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_expf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_expf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_expf_use" >&6
+
+ if test x$glibcxx_cv_func_expf_use = x"yes"; then
+
+for ac_func in expf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _expf declaration" >&5
+echo $ECHO_N "checking for _expf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__expf_use+set} != xset; then
+ if test "${glibcxx_cv_func__expf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _expf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__expf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__expf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__expf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__expf_use" >&6
+
+ if test x$glibcxx_cv_func__expf_use = x"yes"; then
+
+for ac_func in _expf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for isnanf declaration" >&5
+echo $ECHO_N "checking for isnanf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_isnanf_use+set} != xset; then
+ if test "${glibcxx_cv_func_isnanf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ isnanf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_isnanf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_isnanf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_isnanf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_isnanf_use" >&6
+
+ if test x$glibcxx_cv_func_isnanf_use = x"yes"; then
+
+for ac_func in isnanf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _isnanf declaration" >&5
+echo $ECHO_N "checking for _isnanf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__isnanf_use+set} != xset; then
+ if test "${glibcxx_cv_func__isnanf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _isnanf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__isnanf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__isnanf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__isnanf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__isnanf_use" >&6
+
+ if test x$glibcxx_cv_func__isnanf_use = x"yes"; then
+
+for ac_func in _isnanf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for isinff declaration" >&5
+echo $ECHO_N "checking for isinff declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_isinff_use+set} != xset; then
+ if test "${glibcxx_cv_func_isinff_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ isinff(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_isinff_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_isinff_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_isinff_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_isinff_use" >&6
+
+ if test x$glibcxx_cv_func_isinff_use = x"yes"; then
+
+for ac_func in isinff
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _isinff declaration" >&5
+echo $ECHO_N "checking for _isinff declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__isinff_use+set} != xset; then
+ if test "${glibcxx_cv_func__isinff_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _isinff(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__isinff_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__isinff_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__isinff_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__isinff_use" >&6
+
+ if test x$glibcxx_cv_func__isinff_use = x"yes"; then
+
+for ac_func in _isinff
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for atan2f declaration" >&5
+echo $ECHO_N "checking for atan2f declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_atan2f_use+set} != xset; then
+ if test "${glibcxx_cv_func_atan2f_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ atan2f(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_atan2f_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_atan2f_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_atan2f_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_atan2f_use" >&6
+
+ if test x$glibcxx_cv_func_atan2f_use = x"yes"; then
+
+for ac_func in atan2f
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _atan2f declaration" >&5
+echo $ECHO_N "checking for _atan2f declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__atan2f_use+set} != xset; then
+ if test "${glibcxx_cv_func__atan2f_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _atan2f(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__atan2f_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__atan2f_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__atan2f_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__atan2f_use" >&6
+
+ if test x$glibcxx_cv_func__atan2f_use = x"yes"; then
+
+for ac_func in _atan2f
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for fabsf declaration" >&5
+echo $ECHO_N "checking for fabsf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_fabsf_use+set} != xset; then
+ if test "${glibcxx_cv_func_fabsf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ fabsf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_fabsf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_fabsf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_fabsf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_fabsf_use" >&6
+
+ if test x$glibcxx_cv_func_fabsf_use = x"yes"; then
+
+for ac_func in fabsf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _fabsf declaration" >&5
+echo $ECHO_N "checking for _fabsf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__fabsf_use+set} != xset; then
+ if test "${glibcxx_cv_func__fabsf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _fabsf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__fabsf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__fabsf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__fabsf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__fabsf_use" >&6
+
+ if test x$glibcxx_cv_func__fabsf_use = x"yes"; then
+
+for ac_func in _fabsf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for fmodf declaration" >&5
+echo $ECHO_N "checking for fmodf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_fmodf_use+set} != xset; then
+ if test "${glibcxx_cv_func_fmodf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ fmodf(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_fmodf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_fmodf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_fmodf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_fmodf_use" >&6
+
+ if test x$glibcxx_cv_func_fmodf_use = x"yes"; then
+
+for ac_func in fmodf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _fmodf declaration" >&5
+echo $ECHO_N "checking for _fmodf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__fmodf_use+set} != xset; then
+ if test "${glibcxx_cv_func__fmodf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _fmodf(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__fmodf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__fmodf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__fmodf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__fmodf_use" >&6
+
+ if test x$glibcxx_cv_func__fmodf_use = x"yes"; then
+
+for ac_func in _fmodf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for frexpf declaration" >&5
+echo $ECHO_N "checking for frexpf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_frexpf_use+set} != xset; then
+ if test "${glibcxx_cv_func_frexpf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ frexpf(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_frexpf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_frexpf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_frexpf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_frexpf_use" >&6
+
+ if test x$glibcxx_cv_func_frexpf_use = x"yes"; then
+
+for ac_func in frexpf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _frexpf declaration" >&5
+echo $ECHO_N "checking for _frexpf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__frexpf_use+set} != xset; then
+ if test "${glibcxx_cv_func__frexpf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _frexpf(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__frexpf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__frexpf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__frexpf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__frexpf_use" >&6
+
+ if test x$glibcxx_cv_func__frexpf_use = x"yes"; then
+
+for ac_func in _frexpf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for hypotf declaration" >&5
+echo $ECHO_N "checking for hypotf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_hypotf_use+set} != xset; then
+ if test "${glibcxx_cv_func_hypotf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ hypotf(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_hypotf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_hypotf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_hypotf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_hypotf_use" >&6
+
+ if test x$glibcxx_cv_func_hypotf_use = x"yes"; then
+
+for ac_func in hypotf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _hypotf declaration" >&5
+echo $ECHO_N "checking for _hypotf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__hypotf_use+set} != xset; then
+ if test "${glibcxx_cv_func__hypotf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _hypotf(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__hypotf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__hypotf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__hypotf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__hypotf_use" >&6
+
+ if test x$glibcxx_cv_func__hypotf_use = x"yes"; then
+
+for ac_func in _hypotf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for ldexpf declaration" >&5
+echo $ECHO_N "checking for ldexpf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_ldexpf_use+set} != xset; then
+ if test "${glibcxx_cv_func_ldexpf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ ldexpf(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_ldexpf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_ldexpf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_ldexpf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_ldexpf_use" >&6
+
+ if test x$glibcxx_cv_func_ldexpf_use = x"yes"; then
+
+for ac_func in ldexpf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _ldexpf declaration" >&5
+echo $ECHO_N "checking for _ldexpf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__ldexpf_use+set} != xset; then
+ if test "${glibcxx_cv_func__ldexpf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _ldexpf(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__ldexpf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__ldexpf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__ldexpf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__ldexpf_use" >&6
+
+ if test x$glibcxx_cv_func__ldexpf_use = x"yes"; then
+
+for ac_func in _ldexpf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for logf declaration" >&5
+echo $ECHO_N "checking for logf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_logf_use+set} != xset; then
+ if test "${glibcxx_cv_func_logf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ logf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_logf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_logf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_logf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_logf_use" >&6
+
+ if test x$glibcxx_cv_func_logf_use = x"yes"; then
+
+for ac_func in logf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _logf declaration" >&5
+echo $ECHO_N "checking for _logf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__logf_use+set} != xset; then
+ if test "${glibcxx_cv_func__logf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _logf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__logf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__logf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__logf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__logf_use" >&6
+
+ if test x$glibcxx_cv_func__logf_use = x"yes"; then
+
+for ac_func in _logf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for log10f declaration" >&5
+echo $ECHO_N "checking for log10f declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_log10f_use+set} != xset; then
+ if test "${glibcxx_cv_func_log10f_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ log10f(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_log10f_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_log10f_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_log10f_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_log10f_use" >&6
+
+ if test x$glibcxx_cv_func_log10f_use = x"yes"; then
+
+for ac_func in log10f
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _log10f declaration" >&5
+echo $ECHO_N "checking for _log10f declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__log10f_use+set} != xset; then
+ if test "${glibcxx_cv_func__log10f_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _log10f(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__log10f_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__log10f_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__log10f_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__log10f_use" >&6
+
+ if test x$glibcxx_cv_func__log10f_use = x"yes"; then
+
+for ac_func in _log10f
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for modff declaration" >&5
+echo $ECHO_N "checking for modff declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_modff_use+set} != xset; then
+ if test "${glibcxx_cv_func_modff_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ modff(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_modff_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_modff_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_modff_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_modff_use" >&6
+
+ if test x$glibcxx_cv_func_modff_use = x"yes"; then
+
+for ac_func in modff
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _modff declaration" >&5
+echo $ECHO_N "checking for _modff declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__modff_use+set} != xset; then
+ if test "${glibcxx_cv_func__modff_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _modff(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__modff_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__modff_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__modff_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__modff_use" >&6
+
+ if test x$glibcxx_cv_func__modff_use = x"yes"; then
+
+for ac_func in _modff
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for powf declaration" >&5
+echo $ECHO_N "checking for powf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_powf_use+set} != xset; then
+ if test "${glibcxx_cv_func_powf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ powf(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_powf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_powf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_powf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_powf_use" >&6
+
+ if test x$glibcxx_cv_func_powf_use = x"yes"; then
+
+for ac_func in powf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _powf declaration" >&5
+echo $ECHO_N "checking for _powf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__powf_use+set} != xset; then
+ if test "${glibcxx_cv_func__powf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _powf(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__powf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__powf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__powf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__powf_use" >&6
+
+ if test x$glibcxx_cv_func__powf_use = x"yes"; then
+
+for ac_func in _powf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for sqrtf declaration" >&5
+echo $ECHO_N "checking for sqrtf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_sqrtf_use+set} != xset; then
+ if test "${glibcxx_cv_func_sqrtf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ sqrtf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_sqrtf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_sqrtf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_sqrtf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_sqrtf_use" >&6
+
+ if test x$glibcxx_cv_func_sqrtf_use = x"yes"; then
+
+for ac_func in sqrtf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _sqrtf declaration" >&5
+echo $ECHO_N "checking for _sqrtf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__sqrtf_use+set} != xset; then
+ if test "${glibcxx_cv_func__sqrtf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _sqrtf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__sqrtf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__sqrtf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__sqrtf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__sqrtf_use" >&6
+
+ if test x$glibcxx_cv_func__sqrtf_use = x"yes"; then
+
+for ac_func in _sqrtf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for sincosf declaration" >&5
+echo $ECHO_N "checking for sincosf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_sincosf_use+set} != xset; then
+ if test "${glibcxx_cv_func_sincosf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ sincosf(0, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_sincosf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_sincosf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_sincosf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_sincosf_use" >&6
+
+ if test x$glibcxx_cv_func_sincosf_use = x"yes"; then
+
+for ac_func in sincosf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _sincosf declaration" >&5
+echo $ECHO_N "checking for _sincosf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__sincosf_use+set} != xset; then
+ if test "${glibcxx_cv_func__sincosf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _sincosf(0, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__sincosf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__sincosf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__sincosf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__sincosf_use" >&6
+
+ if test x$glibcxx_cv_func__sincosf_use = x"yes"; then
+
+for ac_func in _sincosf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for finitef declaration" >&5
+echo $ECHO_N "checking for finitef declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_finitef_use+set} != xset; then
+ if test "${glibcxx_cv_func_finitef_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ finitef(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_finitef_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_finitef_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_finitef_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_finitef_use" >&6
+
+ if test x$glibcxx_cv_func_finitef_use = x"yes"; then
+
+for ac_func in finitef
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _finitef declaration" >&5
+echo $ECHO_N "checking for _finitef declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__finitef_use+set} != xset; then
+ if test "${glibcxx_cv_func__finitef_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _finitef(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__finitef_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__finitef_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__finitef_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__finitef_use" >&6
+
+ if test x$glibcxx_cv_func__finitef_use = x"yes"; then
+
+for ac_func in _finitef
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for long double trig functions" >&5
+echo $ECHO_N "checking for long double trig functions... $ECHO_C" >&6
+ if test "${glibcxx_cv_func_long_double_trig_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ `for x in acosl asinl atanl \
+ cosl sinl tanl \
+ coshl sinhl tanhl; do echo "$x (0);"; done`
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_long_double_trig_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_long_double_trig_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_long_double_trig_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_long_double_trig_use" >&6
+ if test x$glibcxx_cv_func_long_double_trig_use = x"yes"; then
+
+
+
+
+
+
+
+
+
+for ac_func in acosl asinl atanl \
+ cosl sinl tanl \
+ coshl sinhl tanhl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+
+
+ echo "$as_me:$LINENO: checking for long double round functions" >&5
+echo $ECHO_N "checking for long double round functions... $ECHO_C" >&6
+ if test "${glibcxx_cv_func_long_double_round_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ `for x in ceill floorl; do echo "$x (0);"; done`
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_long_double_round_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_long_double_round_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_long_double_round_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_long_double_round_use" >&6
+ if test x$glibcxx_cv_func_long_double_round_use = x"yes"; then
+
+
+for ac_func in ceill floorl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for isnanl declaration" >&5
+echo $ECHO_N "checking for isnanl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_isnanl_use+set} != xset; then
+ if test "${glibcxx_cv_func_isnanl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ isnanl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_isnanl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_isnanl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_isnanl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_isnanl_use" >&6
+
+ if test x$glibcxx_cv_func_isnanl_use = x"yes"; then
+
+for ac_func in isnanl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _isnanl declaration" >&5
+echo $ECHO_N "checking for _isnanl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__isnanl_use+set} != xset; then
+ if test "${glibcxx_cv_func__isnanl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _isnanl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__isnanl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__isnanl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__isnanl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__isnanl_use" >&6
+
+ if test x$glibcxx_cv_func__isnanl_use = x"yes"; then
+
+for ac_func in _isnanl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for isinfl declaration" >&5
+echo $ECHO_N "checking for isinfl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_isinfl_use+set} != xset; then
+ if test "${glibcxx_cv_func_isinfl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ isinfl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_isinfl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_isinfl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_isinfl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_isinfl_use" >&6
+
+ if test x$glibcxx_cv_func_isinfl_use = x"yes"; then
+
+for ac_func in isinfl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _isinfl declaration" >&5
+echo $ECHO_N "checking for _isinfl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__isinfl_use+set} != xset; then
+ if test "${glibcxx_cv_func__isinfl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _isinfl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__isinfl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__isinfl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__isinfl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__isinfl_use" >&6
+
+ if test x$glibcxx_cv_func__isinfl_use = x"yes"; then
+
+for ac_func in _isinfl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for copysignl declaration" >&5
+echo $ECHO_N "checking for copysignl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_copysignl_use+set} != xset; then
+ if test "${glibcxx_cv_func_copysignl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ copysignl(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_copysignl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_copysignl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_copysignl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_copysignl_use" >&6
+
+ if test x$glibcxx_cv_func_copysignl_use = x"yes"; then
+
+for ac_func in copysignl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _copysignl declaration" >&5
+echo $ECHO_N "checking for _copysignl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__copysignl_use+set} != xset; then
+ if test "${glibcxx_cv_func__copysignl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _copysignl(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__copysignl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__copysignl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__copysignl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__copysignl_use" >&6
+
+ if test x$glibcxx_cv_func__copysignl_use = x"yes"; then
+
+for ac_func in _copysignl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for atan2l declaration" >&5
+echo $ECHO_N "checking for atan2l declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_atan2l_use+set} != xset; then
+ if test "${glibcxx_cv_func_atan2l_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ atan2l(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_atan2l_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_atan2l_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_atan2l_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_atan2l_use" >&6
+
+ if test x$glibcxx_cv_func_atan2l_use = x"yes"; then
+
+for ac_func in atan2l
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _atan2l declaration" >&5
+echo $ECHO_N "checking for _atan2l declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__atan2l_use+set} != xset; then
+ if test "${glibcxx_cv_func__atan2l_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _atan2l(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__atan2l_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__atan2l_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__atan2l_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__atan2l_use" >&6
+
+ if test x$glibcxx_cv_func__atan2l_use = x"yes"; then
+
+for ac_func in _atan2l
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for expl declaration" >&5
+echo $ECHO_N "checking for expl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_expl_use+set} != xset; then
+ if test "${glibcxx_cv_func_expl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ expl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_expl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_expl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_expl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_expl_use" >&6
+
+ if test x$glibcxx_cv_func_expl_use = x"yes"; then
+
+for ac_func in expl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _expl declaration" >&5
+echo $ECHO_N "checking for _expl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__expl_use+set} != xset; then
+ if test "${glibcxx_cv_func__expl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _expl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__expl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__expl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__expl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__expl_use" >&6
+
+ if test x$glibcxx_cv_func__expl_use = x"yes"; then
+
+for ac_func in _expl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for fabsl declaration" >&5
+echo $ECHO_N "checking for fabsl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_fabsl_use+set} != xset; then
+ if test "${glibcxx_cv_func_fabsl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ fabsl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_fabsl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_fabsl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_fabsl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_fabsl_use" >&6
+
+ if test x$glibcxx_cv_func_fabsl_use = x"yes"; then
+
+for ac_func in fabsl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _fabsl declaration" >&5
+echo $ECHO_N "checking for _fabsl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__fabsl_use+set} != xset; then
+ if test "${glibcxx_cv_func__fabsl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _fabsl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__fabsl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__fabsl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__fabsl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__fabsl_use" >&6
+
+ if test x$glibcxx_cv_func__fabsl_use = x"yes"; then
+
+for ac_func in _fabsl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for fmodl declaration" >&5
+echo $ECHO_N "checking for fmodl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_fmodl_use+set} != xset; then
+ if test "${glibcxx_cv_func_fmodl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ fmodl(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_fmodl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_fmodl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_fmodl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_fmodl_use" >&6
+
+ if test x$glibcxx_cv_func_fmodl_use = x"yes"; then
+
+for ac_func in fmodl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _fmodl declaration" >&5
+echo $ECHO_N "checking for _fmodl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__fmodl_use+set} != xset; then
+ if test "${glibcxx_cv_func__fmodl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _fmodl(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__fmodl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__fmodl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__fmodl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__fmodl_use" >&6
+
+ if test x$glibcxx_cv_func__fmodl_use = x"yes"; then
+
+for ac_func in _fmodl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for frexpl declaration" >&5
+echo $ECHO_N "checking for frexpl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_frexpl_use+set} != xset; then
+ if test "${glibcxx_cv_func_frexpl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ frexpl(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_frexpl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_frexpl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_frexpl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_frexpl_use" >&6
+
+ if test x$glibcxx_cv_func_frexpl_use = x"yes"; then
+
+for ac_func in frexpl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _frexpl declaration" >&5
+echo $ECHO_N "checking for _frexpl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__frexpl_use+set} != xset; then
+ if test "${glibcxx_cv_func__frexpl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _frexpl(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__frexpl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__frexpl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__frexpl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__frexpl_use" >&6
+
+ if test x$glibcxx_cv_func__frexpl_use = x"yes"; then
+
+for ac_func in _frexpl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for hypotl declaration" >&5
+echo $ECHO_N "checking for hypotl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_hypotl_use+set} != xset; then
+ if test "${glibcxx_cv_func_hypotl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ hypotl(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_hypotl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_hypotl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_hypotl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_hypotl_use" >&6
+
+ if test x$glibcxx_cv_func_hypotl_use = x"yes"; then
+
+for ac_func in hypotl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _hypotl declaration" >&5
+echo $ECHO_N "checking for _hypotl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__hypotl_use+set} != xset; then
+ if test "${glibcxx_cv_func__hypotl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _hypotl(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__hypotl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__hypotl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__hypotl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__hypotl_use" >&6
+
+ if test x$glibcxx_cv_func__hypotl_use = x"yes"; then
+
+for ac_func in _hypotl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for ldexpl declaration" >&5
+echo $ECHO_N "checking for ldexpl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_ldexpl_use+set} != xset; then
+ if test "${glibcxx_cv_func_ldexpl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ ldexpl(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_ldexpl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_ldexpl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_ldexpl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_ldexpl_use" >&6
+
+ if test x$glibcxx_cv_func_ldexpl_use = x"yes"; then
+
+for ac_func in ldexpl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _ldexpl declaration" >&5
+echo $ECHO_N "checking for _ldexpl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__ldexpl_use+set} != xset; then
+ if test "${glibcxx_cv_func__ldexpl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _ldexpl(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__ldexpl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__ldexpl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__ldexpl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__ldexpl_use" >&6
+
+ if test x$glibcxx_cv_func__ldexpl_use = x"yes"; then
+
+for ac_func in _ldexpl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for logl declaration" >&5
+echo $ECHO_N "checking for logl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_logl_use+set} != xset; then
+ if test "${glibcxx_cv_func_logl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ logl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_logl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_logl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_logl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_logl_use" >&6
+
+ if test x$glibcxx_cv_func_logl_use = x"yes"; then
+
+for ac_func in logl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _logl declaration" >&5
+echo $ECHO_N "checking for _logl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__logl_use+set} != xset; then
+ if test "${glibcxx_cv_func__logl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _logl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__logl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__logl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__logl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__logl_use" >&6
+
+ if test x$glibcxx_cv_func__logl_use = x"yes"; then
+
+for ac_func in _logl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for log10l declaration" >&5
+echo $ECHO_N "checking for log10l declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_log10l_use+set} != xset; then
+ if test "${glibcxx_cv_func_log10l_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ log10l(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_log10l_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_log10l_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_log10l_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_log10l_use" >&6
+
+ if test x$glibcxx_cv_func_log10l_use = x"yes"; then
+
+for ac_func in log10l
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _log10l declaration" >&5
+echo $ECHO_N "checking for _log10l declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__log10l_use+set} != xset; then
+ if test "${glibcxx_cv_func__log10l_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _log10l(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__log10l_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__log10l_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__log10l_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__log10l_use" >&6
+
+ if test x$glibcxx_cv_func__log10l_use = x"yes"; then
+
+for ac_func in _log10l
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for modfl declaration" >&5
+echo $ECHO_N "checking for modfl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_modfl_use+set} != xset; then
+ if test "${glibcxx_cv_func_modfl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ modfl(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_modfl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_modfl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_modfl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_modfl_use" >&6
+
+ if test x$glibcxx_cv_func_modfl_use = x"yes"; then
+
+for ac_func in modfl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _modfl declaration" >&5
+echo $ECHO_N "checking for _modfl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__modfl_use+set} != xset; then
+ if test "${glibcxx_cv_func__modfl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _modfl(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__modfl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__modfl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__modfl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__modfl_use" >&6
+
+ if test x$glibcxx_cv_func__modfl_use = x"yes"; then
+
+for ac_func in _modfl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for powl declaration" >&5
+echo $ECHO_N "checking for powl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_powl_use+set} != xset; then
+ if test "${glibcxx_cv_func_powl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ powl(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_powl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_powl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_powl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_powl_use" >&6
+
+ if test x$glibcxx_cv_func_powl_use = x"yes"; then
+
+for ac_func in powl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _powl declaration" >&5
+echo $ECHO_N "checking for _powl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__powl_use+set} != xset; then
+ if test "${glibcxx_cv_func__powl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _powl(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__powl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__powl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__powl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__powl_use" >&6
+
+ if test x$glibcxx_cv_func__powl_use = x"yes"; then
+
+for ac_func in _powl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for sqrtl declaration" >&5
+echo $ECHO_N "checking for sqrtl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_sqrtl_use+set} != xset; then
+ if test "${glibcxx_cv_func_sqrtl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ sqrtl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_sqrtl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_sqrtl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_sqrtl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_sqrtl_use" >&6
+
+ if test x$glibcxx_cv_func_sqrtl_use = x"yes"; then
+
+for ac_func in sqrtl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _sqrtl declaration" >&5
+echo $ECHO_N "checking for _sqrtl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__sqrtl_use+set} != xset; then
+ if test "${glibcxx_cv_func__sqrtl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _sqrtl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__sqrtl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__sqrtl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__sqrtl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__sqrtl_use" >&6
+
+ if test x$glibcxx_cv_func__sqrtl_use = x"yes"; then
+
+for ac_func in _sqrtl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for sincosl declaration" >&5
+echo $ECHO_N "checking for sincosl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_sincosl_use+set} != xset; then
+ if test "${glibcxx_cv_func_sincosl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ sincosl(0, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_sincosl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_sincosl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_sincosl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_sincosl_use" >&6
+
+ if test x$glibcxx_cv_func_sincosl_use = x"yes"; then
+
+for ac_func in sincosl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _sincosl declaration" >&5
+echo $ECHO_N "checking for _sincosl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__sincosl_use+set} != xset; then
+ if test "${glibcxx_cv_func__sincosl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ _sincosl(0, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__sincosl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__sincosl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__sincosl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__sincosl_use" >&6
+
+ if test x$glibcxx_cv_func__sincosl_use = x"yes"; then
+
+for ac_func in _sincosl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for finitel declaration" >&5
+echo $ECHO_N "checking for finitel declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_finitel_use+set} != xset; then
+ if test "${glibcxx_cv_func_finitel_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ finitel(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_finitel_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_finitel_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_finitel_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_finitel_use" >&6
+
+ if test x$glibcxx_cv_func_finitel_use = x"yes"; then
+
+for ac_func in finitel
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ else
+
+ echo "$as_me:$LINENO: checking for _finitel declaration" >&5
+echo $ECHO_N "checking for _finitel declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func__finitel_use+set} != xset; then
+ if test "${glibcxx_cv_func__finitel_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+
+int
+main ()
+{
+ _finitel(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__finitel_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__finitel_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__finitel_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__finitel_use" >&6
+
+ if test x$glibcxx_cv_func__finitel_use = x"yes"; then
+
+for ac_func in _finitel
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+
+
+
+ echo "$as_me:$LINENO: checking for _float trig functions" >&5
+echo $ECHO_N "checking for _float trig functions... $ECHO_C" >&6
+ if test "${glibcxx_cv_func__float_trig_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ `for x in _acosf _asinf _atanf \
+ _cosf _sinf _tanf \
+ _coshf _sinhf _tanhf; do echo "$x (0);"; done`
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__float_trig_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__float_trig_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__float_trig_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__float_trig_use" >&6
+ if test x$glibcxx_cv_func__float_trig_use = x"yes"; then
+
+
+
+
+
+
+
+
+
+for ac_func in _acosf _asinf _atanf \
+ _cosf _sinf _tanf \
+ _coshf _sinhf _tanhf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+
+
+ echo "$as_me:$LINENO: checking for _float round functions" >&5
+echo $ECHO_N "checking for _float round functions... $ECHO_C" >&6
+ if test "${glibcxx_cv_func__float_round_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ `for x in _ceilf _floorf; do echo "$x (0);"; done`
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__float_round_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__float_round_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__float_round_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__float_round_use" >&6
+ if test x$glibcxx_cv_func__float_round_use = x"yes"; then
+
+
+for ac_func in _ceilf _floorf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for _long double trig functions" >&5
+echo $ECHO_N "checking for _long double trig functions... $ECHO_C" >&6
+ if test "${glibcxx_cv_func__long_double_trig_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ `for x in _acosl _asinl _atanl \
+ _cosl _sinl _tanl \
+ _coshl _sinhl _tanhl; do echo "$x (0);"; done`
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__long_double_trig_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__long_double_trig_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__long_double_trig_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__long_double_trig_use" >&6
+ if test x$glibcxx_cv_func__long_double_trig_use = x"yes"; then
+
+
+
+
+
+
+
+
+
+for ac_func in _acosl _asinl _atanl \
+ _cosl _sinl _tanl \
+ _coshl _sinhl _tanhl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+
+
+ echo "$as_me:$LINENO: checking for _long double round functions" >&5
+echo $ECHO_N "checking for _long double round functions... $ECHO_C" >&6
+ if test "${glibcxx_cv_func__long_double_round_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ `for x in _ceill _floorl; do echo "$x (0);"; done`
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func__long_double_round_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func__long_double_round_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func__long_double_round_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func__long_double_round_use" >&6
+ if test x$glibcxx_cv_func__long_double_round_use = x"yes"; then
+
+
+for ac_func in _ceill _floorl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+
+
+ LIBS="$ac_save_LIBS"
+ CXXFLAGS="$ac_save_CXXFLAGS"
+
+
+
+ echo "$as_me:$LINENO: checking for __builtin_abs declaration" >&5
+echo $ECHO_N "checking for __builtin_abs declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_abs_use+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_abs_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_abs(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_abs_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_abs_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_abs_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_abs_use" >&6
+ if test x$glibcxx_cv_func___builtin_abs_use = x"yes"; then
+ echo "$as_me:$LINENO: checking for __builtin_abs linkage" >&5
+echo $ECHO_N "checking for __builtin_abs linkage... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_abs_link+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_abs_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_abs(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_abs_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_abs_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_abs_link" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_abs_link" >&6
+ if test x$glibcxx_cv_func___builtin_abs_link = x"yes"; then
+ ac_tr_func=HAVE_`echo __builtin_abs | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+
+cat >>confdefs.h <<_ACEOF
+#define ${ac_tr_func} 1
+_ACEOF
+
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for __builtin_fabsf declaration" >&5
+echo $ECHO_N "checking for __builtin_fabsf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_fabsf_use+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_fabsf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_fabsf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_fabsf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_fabsf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsf_use" >&6
+ if test x$glibcxx_cv_func___builtin_fabsf_use = x"yes"; then
+ echo "$as_me:$LINENO: checking for __builtin_fabsf linkage" >&5
+echo $ECHO_N "checking for __builtin_fabsf linkage... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_fabsf_link+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_fabsf_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_fabsf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_fabsf_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_fabsf_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsf_link" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsf_link" >&6
+ if test x$glibcxx_cv_func___builtin_fabsf_link = x"yes"; then
+ ac_tr_func=HAVE_`echo __builtin_fabsf | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+
+cat >>confdefs.h <<_ACEOF
+#define ${ac_tr_func} 1
+_ACEOF
+
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for __builtin_fabs declaration" >&5
+echo $ECHO_N "checking for __builtin_fabs declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_fabs_use+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_fabs_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_fabs(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_fabs_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_fabs_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabs_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_fabs_use" >&6
+ if test x$glibcxx_cv_func___builtin_fabs_use = x"yes"; then
+ echo "$as_me:$LINENO: checking for __builtin_fabs linkage" >&5
+echo $ECHO_N "checking for __builtin_fabs linkage... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_fabs_link+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_fabs_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_fabs(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_fabs_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_fabs_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabs_link" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_fabs_link" >&6
+ if test x$glibcxx_cv_func___builtin_fabs_link = x"yes"; then
+ ac_tr_func=HAVE_`echo __builtin_fabs | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+
+cat >>confdefs.h <<_ACEOF
+#define ${ac_tr_func} 1
+_ACEOF
+
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for __builtin_fabsl declaration" >&5
+echo $ECHO_N "checking for __builtin_fabsl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_fabsl_use+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_fabsl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_fabsl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_fabsl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_fabsl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsl_use" >&6
+ if test x$glibcxx_cv_func___builtin_fabsl_use = x"yes"; then
+ echo "$as_me:$LINENO: checking for __builtin_fabsl linkage" >&5
+echo $ECHO_N "checking for __builtin_fabsl linkage... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_fabsl_link+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_fabsl_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_fabsl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_fabsl_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_fabsl_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsl_link" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsl_link" >&6
+ if test x$glibcxx_cv_func___builtin_fabsl_link = x"yes"; then
+ ac_tr_func=HAVE_`echo __builtin_fabsl | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+
+cat >>confdefs.h <<_ACEOF
+#define ${ac_tr_func} 1
+_ACEOF
+
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for __builtin_labs declaration" >&5
+echo $ECHO_N "checking for __builtin_labs declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_labs_use+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_labs_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_labs(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_labs_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_labs_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_labs_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_labs_use" >&6
+ if test x$glibcxx_cv_func___builtin_labs_use = x"yes"; then
+ echo "$as_me:$LINENO: checking for __builtin_labs linkage" >&5
+echo $ECHO_N "checking for __builtin_labs linkage... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_labs_link+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_labs_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_labs(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_labs_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_labs_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_labs_link" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_labs_link" >&6
+ if test x$glibcxx_cv_func___builtin_labs_link = x"yes"; then
+ ac_tr_func=HAVE_`echo __builtin_labs | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+
+cat >>confdefs.h <<_ACEOF
+#define ${ac_tr_func} 1
+_ACEOF
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for __builtin_sqrtf declaration" >&5
+echo $ECHO_N "checking for __builtin_sqrtf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_sqrtf_use+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_sqrtf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_sqrtf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_sqrtf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_sqrtf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtf_use" >&6
+ if test x$glibcxx_cv_func___builtin_sqrtf_use = x"yes"; then
+ echo "$as_me:$LINENO: checking for __builtin_sqrtf linkage" >&5
+echo $ECHO_N "checking for __builtin_sqrtf linkage... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_sqrtf_link+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_sqrtf_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_sqrtf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_sqrtf_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_sqrtf_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtf_link" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtf_link" >&6
+ if test x$glibcxx_cv_func___builtin_sqrtf_link = x"yes"; then
+ ac_tr_func=HAVE_`echo __builtin_sqrtf | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+
+cat >>confdefs.h <<_ACEOF
+#define ${ac_tr_func} 1
+_ACEOF
+
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for __builtin_sqrt declaration" >&5
+echo $ECHO_N "checking for __builtin_sqrt declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_sqrt_use+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_sqrt_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_sqrt(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_sqrt_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_sqrt_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrt_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrt_use" >&6
+ if test x$glibcxx_cv_func___builtin_sqrt_use = x"yes"; then
+ echo "$as_me:$LINENO: checking for __builtin_sqrt linkage" >&5
+echo $ECHO_N "checking for __builtin_sqrt linkage... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_sqrt_link+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_sqrt_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_sqrt(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_sqrt_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_sqrt_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrt_link" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrt_link" >&6
+ if test x$glibcxx_cv_func___builtin_sqrt_link = x"yes"; then
+ ac_tr_func=HAVE_`echo __builtin_sqrt | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+
+cat >>confdefs.h <<_ACEOF
+#define ${ac_tr_func} 1
+_ACEOF
+
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for __builtin_sqrtl declaration" >&5
+echo $ECHO_N "checking for __builtin_sqrtl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_sqrtl_use+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_sqrtl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_sqrtl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_sqrtl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_sqrtl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtl_use" >&6
+ if test x$glibcxx_cv_func___builtin_sqrtl_use = x"yes"; then
+ echo "$as_me:$LINENO: checking for __builtin_sqrtl linkage" >&5
+echo $ECHO_N "checking for __builtin_sqrtl linkage... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_sqrtl_link+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_sqrtl_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_sqrtl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_sqrtl_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_sqrtl_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtl_link" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtl_link" >&6
+ if test x$glibcxx_cv_func___builtin_sqrtl_link = x"yes"; then
+ ac_tr_func=HAVE_`echo __builtin_sqrtl | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+
+cat >>confdefs.h <<_ACEOF
+#define ${ac_tr_func} 1
+_ACEOF
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for __builtin_sinf declaration" >&5
+echo $ECHO_N "checking for __builtin_sinf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_sinf_use+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_sinf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_sinf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_sinf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_sinf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_sinf_use" >&6
+ if test x$glibcxx_cv_func___builtin_sinf_use = x"yes"; then
+ echo "$as_me:$LINENO: checking for __builtin_sinf linkage" >&5
+echo $ECHO_N "checking for __builtin_sinf linkage... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_sinf_link+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_sinf_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_sinf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_sinf_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_sinf_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinf_link" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_sinf_link" >&6
+ if test x$glibcxx_cv_func___builtin_sinf_link = x"yes"; then
+ ac_tr_func=HAVE_`echo __builtin_sinf | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+
+cat >>confdefs.h <<_ACEOF
+#define ${ac_tr_func} 1
+_ACEOF
+
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for __builtin_sin declaration" >&5
+echo $ECHO_N "checking for __builtin_sin declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_sin_use+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_sin_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_sin(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_sin_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_sin_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sin_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_sin_use" >&6
+ if test x$glibcxx_cv_func___builtin_sin_use = x"yes"; then
+ echo "$as_me:$LINENO: checking for __builtin_sin linkage" >&5
+echo $ECHO_N "checking for __builtin_sin linkage... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_sin_link+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_sin_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_sin(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_sin_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_sin_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sin_link" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_sin_link" >&6
+ if test x$glibcxx_cv_func___builtin_sin_link = x"yes"; then
+ ac_tr_func=HAVE_`echo __builtin_sin | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+
+cat >>confdefs.h <<_ACEOF
+#define ${ac_tr_func} 1
+_ACEOF
+
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for __builtin_sinl declaration" >&5
+echo $ECHO_N "checking for __builtin_sinl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_sinl_use+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_sinl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_sinl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_sinl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_sinl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_sinl_use" >&6
+ if test x$glibcxx_cv_func___builtin_sinl_use = x"yes"; then
+ echo "$as_me:$LINENO: checking for __builtin_sinl linkage" >&5
+echo $ECHO_N "checking for __builtin_sinl linkage... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_sinl_link+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_sinl_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_sinl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_sinl_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_sinl_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinl_link" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_sinl_link" >&6
+ if test x$glibcxx_cv_func___builtin_sinl_link = x"yes"; then
+ ac_tr_func=HAVE_`echo __builtin_sinl | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+
+cat >>confdefs.h <<_ACEOF
+#define ${ac_tr_func} 1
+_ACEOF
+
+ fi
+ fi
+
+
+
+ echo "$as_me:$LINENO: checking for __builtin_cosf declaration" >&5
+echo $ECHO_N "checking for __builtin_cosf declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_cosf_use+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_cosf_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_cosf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_cosf_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_cosf_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosf_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_cosf_use" >&6
+ if test x$glibcxx_cv_func___builtin_cosf_use = x"yes"; then
+ echo "$as_me:$LINENO: checking for __builtin_cosf linkage" >&5
+echo $ECHO_N "checking for __builtin_cosf linkage... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_cosf_link+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_cosf_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_cosf(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_cosf_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_cosf_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosf_link" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_cosf_link" >&6
+ if test x$glibcxx_cv_func___builtin_cosf_link = x"yes"; then
+ ac_tr_func=HAVE_`echo __builtin_cosf | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+
+cat >>confdefs.h <<_ACEOF
+#define ${ac_tr_func} 1
+_ACEOF
+
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for __builtin_cos declaration" >&5
+echo $ECHO_N "checking for __builtin_cos declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_cos_use+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_cos_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_cos(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_cos_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_cos_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cos_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_cos_use" >&6
+ if test x$glibcxx_cv_func___builtin_cos_use = x"yes"; then
+ echo "$as_me:$LINENO: checking for __builtin_cos linkage" >&5
+echo $ECHO_N "checking for __builtin_cos linkage... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_cos_link+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_cos_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_cos(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_cos_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_cos_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cos_link" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_cos_link" >&6
+ if test x$glibcxx_cv_func___builtin_cos_link = x"yes"; then
+ ac_tr_func=HAVE_`echo __builtin_cos | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+
+cat >>confdefs.h <<_ACEOF
+#define ${ac_tr_func} 1
+_ACEOF
+
+ fi
+ fi
+
+
+ echo "$as_me:$LINENO: checking for __builtin_cosl declaration" >&5
+echo $ECHO_N "checking for __builtin_cosl declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_cosl_use+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_cosl_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_cosl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_cosl_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_cosl_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosl_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_cosl_use" >&6
+ if test x$glibcxx_cv_func___builtin_cosl_use = x"yes"; then
+ echo "$as_me:$LINENO: checking for __builtin_cosl linkage" >&5
+echo $ECHO_N "checking for __builtin_cosl linkage... $ECHO_C" >&6
+ if test x${glibcxx_cv_func___builtin_cosl_link+set} != xset; then
+ if test "${glibcxx_cv_func___builtin_cosl_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+ __builtin_cosl(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func___builtin_cosl_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func___builtin_cosl_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosl_link" >&5
+echo "${ECHO_T}$glibcxx_cv_func___builtin_cosl_link" >&6
+ if test x$glibcxx_cv_func___builtin_cosl_link = x"yes"; then
+ ac_tr_func=HAVE_`echo __builtin_cosl | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+
+cat >>confdefs.h <<_ACEOF
+#define ${ac_tr_func} 1
+_ACEOF
+
+ fi
+ fi
+
+
+
+
+echo "$as_me:$LINENO: checking for main in -lm" >&5
+echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_main+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm $LIBS"
+if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+
+int
+main ()
+{
+main ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_m_main=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_main=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
+echo "${ECHO_T}$ac_cv_lib_m_main" >&6
+if test $ac_cv_lib_m_main = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+ LIBS="-lm $LIBS"
+
+fi
+
+
+for ac_func in copysignf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"
+fi
+done
+
+
+
+for ac_func in __signbit
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ LIBMATHOBJS="$LIBMATHOBJS signbit.lo"
+fi
+done
+
+
+
+for ac_func in __signbitf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"
+fi
+done
+
+
+ if test x$ac_cv_func_copysignl = x"yes"; then
+
+for ac_func in __signbitl
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"
+fi
+done
+
+ fi
+
+ # Used in libmath/Makefile.am.
+ if test -n "$LIBMATHOBJS"; then
+ need_libmath=yes
+ fi
+
+
+
+ # Test wchar.h for mbstate_t, which is needed for char_traits and
+ # others even if wchar_t support is not on.
+ echo "$as_me:$LINENO: checking for mbstate_t" >&5
+echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wchar.h>
+int
+main ()
+{
+mbstate_t teststate;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ have_mbstate_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+have_mbstate_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ echo "$as_me:$LINENO: result: $have_mbstate_t" >&5
+echo "${ECHO_T}$have_mbstate_t" >&6
+ if test x"$have_mbstate_t" = xyes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_MBSTATE_T 1
+_ACEOF
+
+ fi
+
+ # Sanity check for existence of ISO C99 headers for extended encoding.
+
+for ac_header in wchar.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ----------------------------------------- ##
+## Report this to the package-unused lists. ##
+## ----------------------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ ac_has_wchar_h=yes
+else
+ ac_has_wchar_h=no
+fi
+
+done
+
+
+for ac_header in wctype.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ----------------------------------------- ##
+## Report this to the package-unused lists. ##
+## ----------------------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ ac_has_wctype_h=yes
+else
+ ac_has_wctype_h=no
+fi
+
+done
+
+
+ # Only continue checking if the ISO C99 headers exist and support is on.
+ if test x"$ac_has_wchar_h" = xyes &&
+ test x"$ac_has_wctype_h" = xyes &&
+ test x"$enable_c_mbchar" != xno; then
+
+ # Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
+ # numeric_limits can instantiate type_traits<wchar_t>
+ echo "$as_me:$LINENO: checking for WCHAR_MIN and WCHAR_MAX" >&5
+echo $ECHO_N "checking for WCHAR_MIN and WCHAR_MAX... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wchar.h>
+int
+main ()
+{
+int i = WCHAR_MIN; int j = WCHAR_MAX;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ has_wchar_minmax=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+has_wchar_minmax=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ echo "$as_me:$LINENO: result: $has_wchar_minmax" >&5
+echo "${ECHO_T}$has_wchar_minmax" >&6
+
+ # Test wchar.h for WEOF, which is what we use to determine whether
+ # to specialize for char_traits<wchar_t> or not.
+ echo "$as_me:$LINENO: checking for WEOF" >&5
+echo $ECHO_N "checking for WEOF... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <wchar.h>
+ #include <stddef.h>
+int
+main ()
+{
+wint_t i = WEOF;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ has_weof=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+has_weof=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ echo "$as_me:$LINENO: result: $has_weof" >&5
+echo "${ECHO_T}$has_weof" >&6
+
+ # Tests for wide character functions used in char_traits<wchar_t>.
+ ac_wfuncs=yes
+
+
+
+
+
+
+for ac_func in wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ ac_wfuncs=no
+fi
+done
+
+
+ # Checks for names injected into std:: by the c_std headers.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in btowc wctob fgetwc fgetws fputwc fputws fwide \
+ fwprintf fwscanf swprintf swscanf vfwprintf vswprintf \
+ vwprintf wprintf wscanf getwc getwchar mbsinit mbrlen mbrtowc \
+ mbsrtowcs wcsrtombs putwc putwchar ungetwc wcrtomb wcstod wcstol \
+ wcstoul wcscpy wcsncpy wcscat wcsncat wcscmp wcscoll wcsncmp wcsxfrm \
+ wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ ac_wfuncs=no
+fi
+done
+
+
+ # Checks for wide character functions that are not required
+ # for basic wchar_t support. Don't disable support if they are missing.
+ # Injection of these is wrapped with guard macros.
+
+
+
+
+
+for ac_func in vfwscanf vswscanf vwscanf wcstof iswblank
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+ echo "$as_me:$LINENO: checking for ISO C99 wchar_t support" >&5
+echo $ECHO_N "checking for ISO C99 wchar_t support... $ECHO_C" >&6
+ if test x"$has_weof" = xyes &&
+ test x"$has_wchar_minmax" = xyes &&
+ test x"$ac_wfuncs" = xyes;
+ then
+ ac_isoC99_wchar_t=yes
+ else
+ ac_isoC99_wchar_t=no
+ fi
+ echo "$as_me:$LINENO: result: $ac_isoC99_wchar_t" >&5
+echo "${ECHO_T}$ac_isoC99_wchar_t" >&6
+
+ # Use iconv for wchar_t to char conversions. As such, check for
+ # X/Open Portability Guide, version 2 features (XPG2).
+ if test "${ac_cv_header_iconv_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for iconv.h" >&5
+echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
+if test "${ac_cv_header_iconv_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
+echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking iconv.h usability" >&5
+echo $ECHO_N "checking iconv.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <iconv.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking iconv.h presence" >&5
+echo $ECHO_N "checking iconv.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <iconv.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: iconv.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: iconv.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: iconv.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: iconv.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: iconv.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: iconv.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: iconv.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: iconv.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: iconv.h: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ----------------------------------------- ##
+## Report this to the package-unused lists. ##
+## ----------------------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for iconv.h" >&5
+echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
+if test "${ac_cv_header_iconv_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_iconv_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
+echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
+
+fi
+if test $ac_cv_header_iconv_h = yes; then
+ ac_has_iconv_h=yes
+else
+ ac_has_iconv_h=no
+fi
+
+
+ if test "${ac_cv_header_langinfo_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for langinfo.h" >&5
+echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
+if test "${ac_cv_header_langinfo_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
+echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking langinfo.h usability" >&5
+echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <langinfo.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking langinfo.h presence" >&5
+echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <langinfo.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: langinfo.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: langinfo.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: langinfo.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: langinfo.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: langinfo.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: langinfo.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: langinfo.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: langinfo.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: langinfo.h: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ----------------------------------------- ##
+## Report this to the package-unused lists. ##
+## ----------------------------------------- ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for langinfo.h" >&5
+echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
+if test "${ac_cv_header_langinfo_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_langinfo_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
+echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
+
+fi
+if test $ac_cv_header_langinfo_h = yes; then
+ ac_has_langinfo_h=yes
+else
+ ac_has_langinfo_h=no
+fi
+
+
+
+ # Check for existence of libiconv.a providing XPG2 wchar_t support.
+ echo "$as_me:$LINENO: checking for iconv in -liconv" >&5
+echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6
+if test "${ac_cv_lib_iconv_iconv+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-liconv $LIBS"
+if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char iconv ();
+int
+main ()
+{
+iconv ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_iconv_iconv=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_iconv_iconv=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv" >&5
+echo "${ECHO_T}$ac_cv_lib_iconv_iconv" >&6
+if test $ac_cv_lib_iconv_iconv = yes; then
+ LIBICONV="-liconv"
+fi
+
+ ac_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+
+
+
+
+
+
+for ac_func in iconv_open iconv_close iconv nl_langinfo
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+ ac_XPG2funcs=yes
+else
+ ac_XPG2funcs=no
+fi
+done
+
+
+ LIBS="$ac_save_LIBS"
+
+ echo "$as_me:$LINENO: checking for XPG2 wchar_t support" >&5
+echo $ECHO_N "checking for XPG2 wchar_t support... $ECHO_C" >&6
+ if test x"$ac_has_iconv_h" = xyes &&
+ test x"$ac_has_langinfo_h" = xyes &&
+ test x"$ac_XPG2funcs" = xyes;
+ then
+ ac_XPG2_wchar_t=yes
+ else
+ ac_XPG2_wchar_t=no
+ fi
+ echo "$as_me:$LINENO: result: $ac_XPG2_wchar_t" >&5
+echo "${ECHO_T}$ac_XPG2_wchar_t" >&6
+
+ # At the moment, only enable wchar_t specializations if all the
+ # above support is present.
+ if test x"$ac_isoC99_wchar_t" = xyes &&
+ test x"$ac_XPG2_wchar_t" = xyes;
+ then
+ cat >>confdefs.h <<\_ACEOF
+#define _GLIBCXX_USE_WCHAR_T 1
+_ACEOF
+
+ enable_wchar_t=yes
+ fi
+ fi
+ echo "$as_me:$LINENO: checking for enabled wchar_t specializations" >&5
+echo $ECHO_N "checking for enabled wchar_t specializations... $ECHO_C" >&6
+ echo "$as_me:$LINENO: result: $enable_wchar_t" >&5
+echo "${ECHO_T}$enable_wchar_t" >&6
+
+
+ ac_test_CXXFLAGS="${CXXFLAGS+set}"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
+
+
+ echo "$as_me:$LINENO: checking for strtold declaration" >&5
+echo $ECHO_N "checking for strtold declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_strtold_use+set} != xset; then
+ if test "${glibcxx_cv_func_strtold_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+int
+main ()
+{
+ strtold(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_strtold_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_strtold_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_strtold_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_strtold_use" >&6
+ if test x$glibcxx_cv_func_strtold_use = x"yes"; then
+
+for ac_func in strtold
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+
+
+ echo "$as_me:$LINENO: checking for strtof declaration" >&5
+echo $ECHO_N "checking for strtof declaration... $ECHO_C" >&6
+ if test x${glibcxx_cv_func_strtof_use+set} != xset; then
+ if test "${glibcxx_cv_func_strtof_use+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+int
+main ()
+{
+ strtof(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_func_strtof_use=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_func_strtof_use=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+ fi
+ echo "$as_me:$LINENO: result: $glibcxx_cv_func_strtof_use" >&5
+echo "${ECHO_T}$glibcxx_cv_func_strtof_use" >&6
+ if test x$glibcxx_cv_func_strtof_use = x"yes"; then
+
+for ac_func in strtof
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+
+
+ CXXFLAGS="$ac_save_CXXFLAGS"
+
+
+ if test "${glibcxx_cv_S_ISREG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/stat.h>
+int
+main ()
+{
+struct stat buffer;
+ fstat(0, &buffer);
+ S_ISREG(buffer.st_mode);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_S_ISREG=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_S_ISREG=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ if test "${glibcxx_cv_S_IFREG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/stat.h>
+int
+main ()
+{
+struct stat buffer;
+ fstat(0, &buffer);
+ S_IFREG & buffer.st_mode;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_cv_S_IFREG=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibcxx_cv_S_IFREG=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+ if test $glibcxx_cv_S_ISREG = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_S_ISREG 1
+_ACEOF
+
+ elif test $glibcxx_cv_S_IFREG = yes; then
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_S_IFREG 1
+_ACEOF
+
+ fi
+
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_WRITEV 1
+_ACEOF
+
+ ;;
+
*-freebsd*)
@@ -71904,6 +93676,70 @@ fi
rm -f conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
CFLAGS="$ac_save_CFLAGS"
+ if test $glibcxx_shared_libgcc = no; then
+ cat > conftest.c <<EOF
+int main (void) { return 0; }
+EOF
+ glibcxx_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
+ -shared -shared-libgcc -o conftest.so \
+ conftest.c -v 2>&1 >/dev/null \
+ | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
+ rm -f conftest.c conftest.so
+ if test x${glibcxx_libgcc_s_suffix+set} = xset; then
+ CFLAGS=" -lgcc_s$glibcxx_libgcc_s_suffix"
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibcxx_shared_libgcc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$ac_save_CFLAGS"
+ fi
+ fi
echo "$as_me:$LINENO: result: $glibcxx_shared_libgcc" >&5
echo "${ECHO_T}$glibcxx_shared_libgcc" >&6
fi
@@ -72702,11 +94538,11 @@ done
# Propagate the target-specific source directories through the build chain.
-# (Nothing currently uses cpu_include_dir directly; only atomicity_include_dir
-# uses it, and it only gets used in this file.)
ATOMICITY_SRCDIR=config/${atomicity_dir}
ATOMIC_WORD_SRCDIR=config/${atomic_word_dir}
OS_INC_SRCDIR=config/${os_include_dir}
+ABI_TWEAKS_SRCDIR=config/${abi_tweaks_dir}
+
@@ -73856,6 +95692,7 @@ s,@GLIBCXX_TEST_ABI_TRUE@,$GLIBCXX_TEST_ABI_TRUE,;t t
s,@GLIBCXX_TEST_ABI_FALSE@,$GLIBCXX_TEST_ABI_FALSE,;t t
s,@ATOMICITY_SRCDIR@,$ATOMICITY_SRCDIR,;t t
s,@ATOMIC_WORD_SRCDIR@,$ATOMIC_WORD_SRCDIR,;t t
+s,@ABI_TWEAKS_SRCDIR@,$ABI_TWEAKS_SRCDIR,;t t
s,@OS_INC_SRCDIR@,$OS_INC_SRCDIR,;t t
s,@glibcxx_prefixdir@,$glibcxx_prefixdir,;t t
s,@gxx_include_dir@,$gxx_include_dir,;t t
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index d53a3efe99e..9aa68edc1ba 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -13,7 +13,7 @@ AC_CONFIG_HEADER(config.h)
### am handles this now? ORIGINAL_LD_FOR_MULTILIBS=$LD
# For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=6:1:0
+libtool_VERSION=6:2:0
AC_SUBST(libtool_VERSION)
# Find the rest of the source tree framework.
@@ -267,13 +267,13 @@ GLIBCXX_ENABLE_SYMVERS([yes])
GLIBCXX_CONFIGURE_TESTSUITE
# Propagate the target-specific source directories through the build chain.
-# (Nothing currently uses cpu_include_dir directly; only atomicity_include_dir
-# uses it, and it only gets used in this file.)
ATOMICITY_SRCDIR=config/${atomicity_dir}
ATOMIC_WORD_SRCDIR=config/${atomic_word_dir}
OS_INC_SRCDIR=config/${os_include_dir}
+ABI_TWEAKS_SRCDIR=config/${abi_tweaks_dir}
AC_SUBST(ATOMICITY_SRCDIR)
AC_SUBST(ATOMIC_WORD_SRCDIR)
+AC_SUBST(ABI_TWEAKS_SRCDIR)
AC_SUBST(OS_INC_SRCDIR)
# Determine cross-compile flags and AM_CONDITIONALs.
diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
index 747cf74099a..2b964ca9c84 100644
--- a/libstdc++-v3/configure.host
+++ b/libstdc++-v3/configure.host
@@ -17,8 +17,8 @@
# It sets the following shell variables:
#
# cpu_include_dir CPU-specific directory, defaults to cpu/generic
-# if cpu/host_cpu doesn't exist. This is
-# used to set atomicity_include_dir.
+# if cpu/host_cpu doesn't exist. This is not used
+# directly, but sets the default for others.
#
# os_include_dir OS-specific directory, defaults to os/generic.
#
@@ -30,6 +30,9 @@
# abi_baseline_pair directory name for ABI compat testing,
# defaults to host_cpu-host_os (as per config.guess)
#
+# abi_tweaks_dir location of cxxabi_tweaks.h,
+# defaults to cpu_include_dir
+#
# atomicity_dir location of atomicity.h,
# defaults to cpu_include_dir
#
@@ -72,6 +75,9 @@ case "${host_cpu}" in
alpha*)
try_cpu=alpha
;;
+ arm* | xscale | ep9312)
+ try_cpu=arm
+ ;;
i[567]86 | x86_64)
try_cpu=i486
;;
@@ -98,7 +104,7 @@ case "${host_cpu}" in
try_cpu=sparc
;;
*)
- if test -f ${glibcxx_srcdir}/config/cpu/${host_cpu}/atomicity.h; then
+ if test -d ${glibcxx_srcdir}/config/cpu/${host_cpu}; then
try_cpu=${host_cpu}
else
try_cpu=generic
@@ -120,10 +126,21 @@ esac
# Now look for the file(s) usually tied to a CPU model, and make
# default choices for those if they haven't been explicitly set
# already.
-cpu_include_dir="cpu/${try_cpu}"
-atomicity_dir=$cpu_include_dir
+cpu_include_dir=cpu/${try_cpu}
abi_baseline_pair=${try_cpu}-${host_os}
+unset try_cpu
+
+if test -f ${glibcxx_srcdir}/config/${cpu_include_dir}/atomicity.h ; then
+ atomicity_dir=$cpu_include_dir
+else
+ atomicity_dir="cpu/generic"
+fi
+if test -f ${glibcxx_srcdir}/config/${cpu_include_dir}/cxxabi_tweaks.h ; then
+ abi_tweaks_dir=$cpu_include_dir
+else
+ abi_tweaks_dir="cpu/generic"
+fi
# Set any OS-dependent bits.
# Set the os_include_dir.
@@ -192,7 +209,7 @@ case "${host_os}" in
# This too-vague configuration does not provide enough information
# to select a ctype include, and thus os_include_dir is a crap shoot.
echo "Please specify the full version of Solaris, ie. solaris2.9 " 1>&2
- exit 1;
+ exit 1
;;
solaris2.5 | solaris2.5.[0-9])
os_include_dir="os/solaris/solaris2.5"
diff --git a/libstdc++-v3/crossconfig.m4 b/libstdc++-v3/crossconfig.m4
index 57ab558b3a6..96bbdd84a1d 100644
--- a/libstdc++-v3/crossconfig.m4
+++ b/libstdc++-v3/crossconfig.m4
@@ -42,6 +42,22 @@ case "${host}" in
AC_DEFINE(HAVE_MMAP)
;;
+ *djgpp)
+ AC_CHECK_HEADERS([float.h ieeefp.h inttypes.h locale.h \
+ memory.h stdint.h stdlib.h strings.h string.h unistd.h \
+ wchar.h wctype.h machine/endian.h sys/ioctl.h sys/param.h \
+ sys/resource.h sys/stat.h sys/time.h sys/types.h sys/uio.h])
+ GLIBCXX_CHECK_COMPILER_FEATURES
+ GLIBCXX_CHECK_LINKER_FEATURES
+ GLIBCXX_CHECK_MATH_SUPPORT
+ GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
+ GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
+ GLIBCXX_CHECK_WCHAR_T_SUPPORT
+ GLIBCXX_CHECK_STDLIB_SUPPORT
+ GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
+ AC_DEFINE(HAVE_WRITEV)
+ ;;
+
*-freebsd*)
AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
machine/endian.h machine/param.h sys/machine.h sys/types.h \
diff --git a/libstdc++-v3/docs/doxygen/mainpage.html b/libstdc++-v3/docs/doxygen/mainpage.html
index 0edaa5b80e9..3f1b41d268d 100644
--- a/libstdc++-v3/docs/doxygen/mainpage.html
+++ b/libstdc++-v3/docs/doxygen/mainpage.html
@@ -44,13 +44,12 @@
<p>Here are entry points to all the pages generated by Doxygen:
<ul>
- <li><a href="index.html">Main Page</a>
<li><a href="modules.html">Modules</a>
<li><a href="namespaces.html">Namespace List</a>
- <li><a href="hierarchy.html">Class Hierarchy</a>
- <li><a href="annotated.html">Compound List</a>
- <li><a href="classes.html">Alphabetical List</a>
- <li><a href="files.html">File List</a>
+ <li><a href="hierarchy.html">Class List</a>
+ <li><a href="annotated.html">Class Annotated List</a>
+ <li><a href="classes.html">Class Alphabetical Index</a>
+ <li><a href="files.html">Source File List</a>
<li><a href="todo.html">TODO List</a> (This is incomplete... how ironic.)
</ul>
</p>
diff --git a/libstdc++-v3/docs/doxygen/stdheader.cc b/libstdc++-v3/docs/doxygen/stdheader.cc
index 896a4e0b07c..a5145419b04 100644
--- a/libstdc++-v3/docs/doxygen/stdheader.cc
+++ b/libstdc++-v3/docs/doxygen/stdheader.cc
@@ -25,11 +25,8 @@ void init_map()
headers["algo.h"] = "algorithm";
headers["algobase.h"] = "algorithm";
headers["algorithm.h"] = "algorithm";
- headers["allocator.h"] = "memory";
- headers["basic_ios.h"] = "ios";
- headers["basic_ios.tcc"] = "ios";
+ headers["heap.h"] = "algorithm";
headers["bitset.h"] = "bitset";
- headers["bvector.h"] = "vector";
headers["complex.h"] = "complex";
//headers["construct.h"] stl_construct.h entirely internal
headers["deque.h"] = "deque";
@@ -38,8 +35,9 @@ void init_map()
headers["fstream.tcc"] = "fstream";
headers["function.h"] = "functional";
headers["functional.h"] = "functional";
- headers["heap.h"] = "algorithm";
headers["iomanip.h"] = "iomanip";
+ headers["basic_ios.h"] = "ios";
+ headers["basic_ios.tcc"] = "ios";
headers["ios.h"] = "ios";
headers["iosfwd.h"] = "iosfwd";
headers["iostream.h"] = "iostream";
@@ -48,9 +46,11 @@ void init_map()
headers["iterator.h"] = "iterator";
headers["iterator_base_funcs.h"] = "iterator";
headers["iterator_base_types.h"] = "iterator";
+ headers["stream_iterator.h"] = "iterator";
+ headers["streambuf_iterator.h"] = "iterator";
headers["limits.h"] = "limits";
headers["list.h"] = "list";
- headers["list.tcc"] = "list";
+ headers["list.tcc"] = "list";
headers["codecvt.h"] = "locale";
headers["locale.h"] = "locale";
headers["localefwd.h"] = "locale";
@@ -58,24 +58,23 @@ void init_map()
headers["locale_facets.h"] = "locale";
headers["locale_facets.tcc"] = "locale";
headers["map.h"] = "map";
- headers["memory.h"] = "memory";
headers["multimap.h"] = "map";
- headers["multiset.h"] = "set";
+ headers["memory.h"] = "memory";
+ headers["allocator.h"] = "memory";
+ headers["raw_storage_iter.h"] = "memory";
+ headers["tempbuf.h"] = "memory";
+ headers["uninitialized.h"] = "memory";
headers["numeric.h"] = "numeric";
headers["ostream.h"] = "ostream";
headers["ostream.tcc"] = "ostream";
- headers["pair.h"] = "utility";
headers["queue.h"] = "queue";
- headers["raw_storage_iter.h"] = "memory";
- headers["relops.h"] = "utility";
headers["set.h"] = "set";
+ headers["multiset.h"] = "set";
headers["sstream.h"] = "sstream";
headers["sstream.tcc"] = "sstream";
headers["stack.h"] = "stack";
- headers["functexcept.h"] = "stdexcept";
+ headers["functexcept.h"] = "stdexcept";
headers["stdexcept.h"] = "stdexcept";
- headers["stream_iterator.h"] = "iterator";
- headers["streambuf_iterator.h"] = "iterator";
headers["streambuf.h"] = "streambuf";
headers["streambuf.tcc"] = "streambuf";
headers["string.h"] = "string";
@@ -83,10 +82,10 @@ void init_map()
headers["postypes.h"] = "string";
headers["basic_string.h"] = "string";
headers["basic_string.tcc"] = "string";
- headers["tempbuf.h"] = "memory";
headers["tree.h"] = "backward/tree.h";
- headers["uninitialized.h"] = "memory";
+ headers["pair.h"] = "utility";
headers["utility.h"] = "utility";
+ headers["relops.h"] = "utility";
headers["gslice.h"] = "valarray";
headers["gslice_array.h"] = "valarray";
headers["indirect_array.h"] = "valarray";
@@ -98,9 +97,10 @@ void init_map()
headers["valarray_array.h"] = "valarray";
headers["valarray_array.tcc"] = "valarray";
headers["valarray_meta.h"] = "valarray";
+ headers["bvector.h"] = "vector";
headers["vector.h"] = "vector";
+ headers["vector.tcc"] = "vector";
- //headers["threads.h"] who knows
//headers["concurrence.h"] who knows
//headers["atomicity.h"] who knows
diff --git a/libstdc++-v3/docs/doxygen/style.css b/libstdc++-v3/docs/doxygen/style.css
index e527a57c4f2..c49c37cdfd9 100644
--- a/libstdc++-v3/docs/doxygen/style.css
+++ b/libstdc++-v3/docs/doxygen/style.css
@@ -1,24 +1,48 @@
-H1 { text-align: center; }
-CAPTION { font-weight: bold }
+BODY {
+ background: white;
+ font-size: small;
+}
+H1 { text-align: center; font-size: large }
+H2 { text-align: left; font-size: medium; }
+H3 { text-align: left; font-size: small; }
+CODE { font-size: small; }
+CAPTION { font-weight: normal }
A.qindex {}
A.qindexRef {}
-A.el { text-decoration: none; font-weight: bold }
-A.elRef { font-weight: bold }
+A.el { text-decoration: none; font-size: small; font-weight: normal }
+A.elRef { text-decoration: none; font-size: small; font-weight: normal }
A.code { text-decoration: none; font-weight: normal; color: #4444ee }
A.codeRef { font-weight: normal; color: #4444ee }
A:hover { text-decoration: none; background-color: #f2f2ff }
DL.el { margin-left: -1cm }
DIV.fragment { width: 100%; border: none; background-color: #eeeeee }
-DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
-TD.md { background-color: #f2f2ff; font-weight: bold; }
-TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; }
-TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; }
-DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
-DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
-BODY { background: white }
+DIV.ah {
+ background-color: black;
+ font-weight: normal;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px
+}
+DIV.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ margin-bottom: 6px;
+ font-weight: normal
+}
+DIV.groupText { margin-left: 16px; font-style: italic; font-size: small }
+TD.md { background-color: #f2f2ff; font-size: small; }
+TD.mdname1 { background-color: #f2f2ff; font-size: small; color: #602020; }
+TD.mdname {
+ background-color: #f2f2ff;
+ font-weight: normal;
+ font-size: small;
+ color: #602020;
+ width: 600px
+}
TD.indexkey {
background-color: #eeeeff;
- font-weight: bold;
+ font-weight: normal;
+ font-size: small;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
@@ -31,6 +55,7 @@ TD.indexkey {
TD.indexvalue {
background-color: #eeeeff;
font-style: italic;
+ font-size: small;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
diff --git a/libstdc++-v3/docs/doxygen/user.cfg.in b/libstdc++-v3/docs/doxygen/user.cfg.in
index 6c99c82ed56..e1e68b2894f 100644
--- a/libstdc++-v3/docs/doxygen/user.cfg.in
+++ b/libstdc++-v3/docs/doxygen/user.cfg.in
@@ -17,7 +17,7 @@
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project.
-PROJECT_NAME = "libstdc++-v3 Source"
+PROJECT_NAME = "libstdc++ source"
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
# This could be handy for archiving the generated documentation or
@@ -25,40 +25,44 @@ PROJECT_NAME = "libstdc++-v3 Source"
PROJECT_NUMBER =
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or
+# absolute) base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will
+# be used.
OUTPUT_DIRECTORY = @outdir@
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 2 levels of 10 sub-directories under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of source
-# files, where putting all generated files in the same directory would otherwise
-# cause performance problems for the file system.
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 2
+# levels of 10 sub-directories under the output directory of each
+# output format and will distribute the generated files over these
+# directories. Enabling this option can be useful when feeding
+# doxygen a huge amount of source files, where putting all generated
+# files in the same directory would otherwise cause performance
+# problems for the file system.
CREATE_SUBDIRS = NO
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch,
-# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en
-# (Japanese with English messages), Korean, Korean-en, Norwegian, Polish, Portuguese,
-# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech,
+# Danish, Dutch, Finnish, French, German, Greek, Hungarian, Italian,
+# Japanese, Japanese-en (Japanese with English messages), Korean,
+# Korean-en, Norwegian, Polish, Portuguese, Romanian, Russian,
+# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
OUTPUT_LANGUAGE = English
-# This tag can be used to specify the encoding used in the generated output.
-# The encoding is not always determined by the language that is chosen,
-# but also whether or not the output is meant for Windows or non-Windows users.
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
-# forces the Windows encoding (this is the default for the Windows binary),
-# whereas setting the tag to NO uses a Unix-style encoding (the default for
-# all platforms other than Windows).
+# This tag can be used to specify the encoding used in the generated
+# output. The encoding is not always determined by the language that
+# is chosen, but also whether or not the output is meant for Windows
+# or non-Windows users. In case there is a difference, setting the
+# USE_WINDOWS_ENCODING tag to YES forces the Windows encoding (this is
+# the default for the Windows binary), whereas setting the tag to NO
+# uses a Unix-style encoding (the default for all platforms other than
+# Windows).
USE_WINDOWS_ENCODING = NO
@@ -67,22 +71,24 @@ USE_WINDOWS_ENCODING = NO
# the file and class documentation (similar to JavaDoc).
# Set to NO to disable this.
-BRIEF_MEMBER_DESC = YES
+BRIEF_MEMBER_DESC = NO
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will
+# prepend the brief description of a member or function before the
+# detailed description. Note: if both HIDE_UNDOC_MEMBERS and
+# BRIEF_MEMBER_DESC are set to NO, the brief descriptions will be
+# completely suppressed.
-REPEAT_BRIEF = YES
+REPEAT_BRIEF = NO
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is used
-# as the annotated text. Otherwise, the brief description is used as-is. If left
-# blank, the following values are used ("$name" is automatically replaced with the
-# name of the entity): "The $name class" "The $name widget" "The $name file"
+# This tag implements a quasi-intelligent brief description
+# abbreviator that is used to form the text in various listings. Each
+# string in this list, if found as the leading text of the brief
+# description, will be stripped from the text and the result after
+# processing the whole list, is used as the annotated text. Otherwise,
+# the brief description is used as-is. If left blank, the following
+# values are used ("$name" is automatically replaced with the name of
+# the entity): "The $name class" "The $name widget" "The $name file"
# "is" "provides" "specifies" "contains" "represents" "a" "an" "the"
ABBREVIATE_BRIEF =
@@ -93,10 +99,11 @@ ABBREVIATE_BRIEF =
ALWAYS_DETAILED_SEC = YES
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited
-# members of a class in the documentation of that class as if those members were
-# ordinary class members. Constructors, destructors and assignment operators of
-# the base classes will not be shown.
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show
+# all inherited members of a class in the documentation of that class
+# as if those members were ordinary class members. Constructors,
+# destructors and assignment operators of the base classes will not be
+# shown.
INLINE_INHERITED_MEMB = YES
@@ -151,7 +158,7 @@ MULTILINE_CPP_IS_BRIEF = YES
# If set to NO, the detailed description appears after the member
# documentation.
-DETAILS_AT_TOP = NO
+DETAILS_AT_TOP = YES
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
# member inherits the documentation from any documented member that it
@@ -171,27 +178,28 @@ DISTRIBUTE_GROUP_DOC = YES
TAB_SIZE = 4
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
+# This tag can be used to specify a number of aliases that acts as
+# commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you
+# to put the command \sideeffect (or @sideeffect) in the
+# documentation, which will result in a user-defined paragraph with
+# heading "Side Effects:". You can put \n's in the value part of an
+# alias to insert newlines.
ALIASES = "doctodo=@todo\nDoc me! See docs/doxygen/TODO and http://gcc.gnu.org/ml/libstdc++/2002-02/msg00003.html for more." \
"isiosfwd=One of the @link s27_2_iosfwd I/O forward declarations @endlink"
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of
+# C sources only. Doxygen will then generate output that is more
+# tailored for C. For instance, some of the names that are used will
+# be different. The list of all members will be omitted, etc.
OPTIMIZE_OUTPUT_FOR_C = NO
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
-# only. Doxygen will then generate output that is more tailored for Java.
-# For instance, namespaces will be presented as packages, qualified scopes
-# will look different, etc.
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of
+# Java sources only. Doxygen will then generate output that is more
+# tailored for Java. For instance, namespaces will be presented as
+# packages, qualified scopes will look different, etc.
OPTIMIZE_OUTPUT_JAVA = NO
@@ -217,7 +225,7 @@ EXTRACT_ALL = NO
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
# will be included in the documentation.
-EXTRACT_PRIVATE = YES
+EXTRACT_PRIVATE = NO
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
@@ -243,7 +251,7 @@ EXTRACT_LOCAL_METHODS = NO
# various overviews, but no documentation section is generated.
# This option has no effect if EXTRACT_ALL is enabled.
-HIDE_UNDOC_MEMBERS = YES
+HIDE_UNDOC_MEMBERS = NO
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy.
@@ -266,30 +274,31 @@ HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
+# The INTERNAL_DOCS tag determines if documentation that is typed
+# after a \internal command is included. If the tag is set to NO (the
+# default) then the documentation will be excluded. Set it to YES to
+# include the internal documentation.
INTERNAL_DOCS = NO
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# users are advised to set this option to NO.
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only
+# generate file names in lower-case letters. If set to YES upper-case
+# letters are also allowed. This is useful if you have classes or
+# files whose names only differ in case and if your file system
+# supports case sensitive file names. Windows users are advised to set
+# this option to NO.
CASE_SENSE_NAMES = NO
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
# documentation. If set to YES the scope will be hidden.
-HIDE_SCOPE_NAMES = NO
+HIDE_SCOPE_NAMES = YES
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then
+# Doxygen will put a list of the files that are included by a file in
+# the documentation of that file.
SHOW_INCLUDE_FILES = YES
@@ -298,19 +307,19 @@ SHOW_INCLUDE_FILES = YES
INLINE_INFO = YES
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear
+# in declaration order.
SORT_MEMBER_DOCS = YES
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members
+# alphabetically by member name. If set to NO (the default) the
+# members will appear in declaration order.
-SORT_BRIEF_DOCS = NO
+SORT_BRIEF_DOCS = YES
# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
# sorted by fully-qualified names, including namespaces. If set to
@@ -320,7 +329,7 @@ SORT_BRIEF_DOCS = NO
# Note: This option applies only to the class list, not to the
# alphabetical list.
-SORT_BY_SCOPE_NAME = NO
+SORT_BY_SCOPE_NAME = YES
# The GENERATE_TODOLIST tag can be used to enable (YES) or
# disable (NO) the todo list. This list is created by putting \todo
@@ -431,7 +440,7 @@ INPUT = @srcdir@/docs/doxygen/doxygroups.cc \
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp
# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
-FILE_PATTERNS = *
+FILE_PATTERNS = *.h *.tcc
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
# should be searched for input files as well. Possible values are YES and NO.
@@ -439,17 +448,19 @@ FILE_PATTERNS = *
RECURSIVE = YES
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
+# The EXCLUDE tag can be used to specify files and/or directories that
+# should excluded from the INPUT source files. This way you can easily
+# exclude a subdirectory from a directory tree whose root is specified
+# with the INPUT tag.
EXCLUDE = Makefile \
CVS \
include/bits/demangle.h \
stdc++.h.gch
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories
-# that are symbolic links (a Unix filesystem feature) are excluded from the input.
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are
+# excluded from the input.
EXCLUDE_SYMLINKS = NO
@@ -557,14 +568,14 @@ ALPHABETICAL_INDEX = YES
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
# in which this list will be split (can be a number in the range [1..20])
-COLS_IN_ALPHA_INDEX = 5
+COLS_IN_ALPHA_INDEX = 3
# In case all classes in a project start with a common prefix, all
# classes will be put under the same header in the alphabetical index.
# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
# should be ignored while generating the index headers.
-IGNORE_PREFIX =
+IGNORE_PREFIX = std __gnu_cxx __gnu_debug
#---------------------------------------------------------------------------
# configuration options related to the HTML output
@@ -612,7 +623,8 @@ HTML_STYLESHEET = @srcdir@/docs/doxygen/style.css
# files or namespaces will be aligned in HTML using tables. If set to
# NO a bullet list will be used.
-HTML_ALIGN_MEMBERS = YES
+#HTML_ALIGN_MEMBERS = YES
+HTML_ALIGN_MEMBERS = NO
# If the GENERATE_HTMLHELP tag is set to YES, additional index files
# will be generated that can be used as input for tools like the
@@ -670,7 +682,7 @@ ENUM_VALUES_PER_LINE = 4
# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
# probably better off using the HTML help feature.
-GENERATE_TREEVIEW = NO
+GENERATE_TREEVIEW = YES
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
# used to set the initial width (in pixels) of the frame in which the tree
@@ -959,18 +971,19 @@ PREDEFINED = _GLIBCXX_DEPRECATED \
__glibcxx_class_requires3=// \
__glibcxx_class_requires4=//
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES
+# then this tag can be used to specify a list of macro names that
+# should be expanded. The macro definition that is found in the
+# sources will be used. Use the PREDEFINED tag if you want to use a
+# different macro definition.
EXPAND_AS_DEFINED =
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse the
-# parser if not removed.
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are
+# alone on a line, have an all uppercase name, and do not end with a
+# semicolon. Such function macros are typically used for boiler-plate
+# code, and will confuse the parser if not removed.
SKIP_FUNCTION_MACROS = YES
@@ -1021,44 +1034,47 @@ PERL_PATH = /usr/bin/perl
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or
-# super classes. Setting the tag to NO turns the diagrams off. Note that this
-# option is superseded by the HAVE_DOT option below. This is only a fallback. It is
-# recommended to install and use dot, since it yields more powerful graphs.
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes
+# with base or super classes. Setting the tag to NO turns the diagrams
+# off. Note that this option is superseded by the HAVE_DOT option
+# below. This is only a fallback. It is recommended to install and use
+# dot, since it yields more powerful graphs.
CLASS_DIAGRAMS = YES
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented or is
+# not a class.
HIDE_UNDOC_RELATIONS = YES
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot
+# tool is available from the path. This tool is part of Graphviz, a
+# graph visualization toolkit from AT&T and Lucent Bell Labs. The
+# other options in this section have no effect if this option is set
+# to NO (the default)
HAVE_DOT = YES
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct
+# and indirect inheritance relations. Setting this tag to YES will
+# force the the CLASS_DIAGRAMS tag to NO.
CLASS_GRAPH = YES
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a graph for each documented class showing the
+# direct and indirect implementation dependencies (inheritance,
+# containment, and class references variables) of the class with other
+# documented classes.
COLLABORATION_GRAPH = YES
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance
+# and collaboration diagrams in a style similar to the OMG's Unified
+# Modeling Language.
UML_LOOK = NO
@@ -1067,36 +1083,39 @@ UML_LOOK = NO
TEMPLATE_RELATIONS = YES
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for
+# each documented file showing the direct and indirect include
+# dependencies of the file with other documented files.
INCLUDE_GRAPH = YES
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for
+# each documented header file showing the documented files that
+# directly or indirectly include this file.
-INCLUDED_BY_GRAPH = YES
+#INCLUDED_BY_GRAPH = YES
+INCLUDED_BY_GRAPH = NO
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a call dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a call dependency graph for every global function or class
+# method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable
+# call graphs for selected functions only using the \callgraph
+# command.
CALL_GRAPH = NO
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then
+# doxygen will graphical hierarchy of all classes instead of a textual
+# one.
GRAPHICAL_HIERARCHY = YES
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the
+# images generated by dot. Possible values are png, jpg, or gif If
+# left blank png will be used.
DOT_IMAGE_FORMAT = png
@@ -1105,48 +1124,50 @@ DOT_IMAGE_FORMAT = png
DOT_PATH =
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
+# The DOTFILE_DIRS tag can be used to specify one or more directories
+# that contain dot files that are included in the documentation (see
+# the \dotfile command).
DOTFILE_DIRS =
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed
+# width (in pixels) of the graphs generated by dot. If a graph becomes
+# larger than this value, doxygen will try to truncate the graph, so
+# that it fits within the specified constraint. Beware that most
+# browsers cannot cope with very large images.
MAX_DOT_GRAPH_WIDTH = 1024
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows
+# height (in pixels) of the graphs generated by dot. If a graph
+# becomes larger than this value, doxygen will try to truncate the
+# graph, so that it fits within the specified constraint. Beware that
+# most browsers cannot cope with very large images.
MAX_DOT_GRAPH_HEIGHT = 1024
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes that
-# lay further from the root node will be omitted. Note that setting this option to
-# 1 or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that a graph may be further truncated if the graph's image dimensions are
-# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT).
-# If 0 is used for the depth value (the default), the graph is not depth-constrained.
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of
+# the graphs generated by dot. A depth value of 3 means that only
+# nodes reachable from the root by following a path via at most 3
+# edges will be shown. Nodes that lay further from the root node will
+# be omitted. Note that setting this option to 1 or 2 may greatly
+# reduce the computation time needed for large code bases. Also note
+# that a graph may be further truncated if the graph's image
+# dimensions are not sufficient to fit the graph (see
+# MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the
+# depth value (the default), the graph is not depth-constrained.
MAX_DOT_GRAPH_DEPTH = 0
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes
+# and arrows in the dot generated graphs.
-GENERATE_LEGEND = YES
+GENERATE_LEGEND = NO
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate the
+# various graphs.
DOT_CLEANUP = YES
diff --git a/libstdc++-v3/docs/html/abi.html b/libstdc++-v3/docs/html/abi.html
index 5aac425b25b..e48bb4b8bf7 100644
--- a/libstdc++-v3/docs/html/abi.html
+++ b/libstdc++-v3/docs/html/abi.html
@@ -197,6 +197,7 @@ on ELF systems).</p>
<li>gcc-3.3.2: libstdc++.so.5.0.5</li>
<li>gcc-3.3.3: libstdc++.so.5.0.5</li>
<li>gcc-3.4.0: libstdc++.so.6.0.0</li>
+ <li>gcc-3.4.1: libstdc++.so.6.0.1</li>
</ul>
<p></p>
</li>
@@ -256,6 +257,7 @@ on ELF systems).</p>
<li>gcc-3.3.2: GLIBCPP_3.2.3, CXXABI_1.2.1</li>
<li>gcc-3.3.3: GLIBCPP_3.2.3, CXXABI_1.2.1</li>
<li>gcc-3.4.0: GLIBCXX_3.4, CXXABI_1.3</li>
+ <li>gcc-3.4.1: GLIBCXX_3.4.1, CXXABI_1.3</li>
</ul>
<p></p>
</li>
@@ -284,7 +286,7 @@ on ELF systems).</p>
<li>gcc-3.2.x: 102</li>
<li>gcc-3.3.x: 102</li>
<li>gcc-3.4.x: 102 (when n=1)</li>
- <li>gcc-3.4.x: 1000+n (when n&gt;1)</li>
+ <li>gcc-3.4.x: 1000 + n (when n&gt;1)</li>
<li>gcc-3.4.x: 999999 (when n=0)</li>
</ul>
<p></p>
@@ -341,6 +343,7 @@ on ELF systems).</p>
<li>gcc-3.3.2: 20031016</li>
<li>gcc-3.3.3: 20040214</li>
<li>gcc-3.4.0: 20040419</li>
+ <li>gcc-3.4.1: 20040701</li>
</ul>
<p></p>
</li>
@@ -382,6 +385,7 @@ on ELF systems).</p>
<li>gcc-3.3.2: "3.3.2"</li>
<li>gcc-3.3.3: "3.3.3"</li>
<li>gcc-3.4.0: "version-unused"</li>
+ <li>gcc-3.4.1: "version-unused"</li>
</ul>
<p></p>
</li>
@@ -419,6 +423,7 @@ on ELF systems).</p>
<li>gcc-3.3.2: include/c++/3.3.2</li>
<li>gcc-3.3.3: include/c++/3.3.3</li>
<li>gcc-3.4.0: include/c++/3.4.0</li>
+ <li>gcc-3.4.1: include/c++/3.4.1</li>
</ul>
<p></p>
</li>
@@ -575,11 +580,20 @@ number to increase, say from "libstdc++.so.3.0.4" to
include all the required locale facets, as well as things like
std::basic_streambuf, et al.
</li>
+
+<li> adding an explicit copy constructor or destructor to a
+class that would otherwise have implicit versions. This will change
+the way the compiler deals with this class in by-value return
+statements or parameters: instead of being passing instances of this
+class in registers, the compiler will be forced to use memory. See <a
+href="http://www.codesourcery.com/cxx-abi/abi.html#calls"> this part</a>
+ of the C++ ABI documentation for further details.
+ </li>
+
</ul>
<h3 class="left">
- <a name="implementation">Library implementation strategy</a>
-</h3>
+ <a name="implementation">Library implementation strategy</a> </h3>
<ul>
<li>Separation of interface and implementation
diff --git a/libstdc++-v3/docs/html/debug.html b/libstdc++-v3/docs/html/debug.html
index bfdf38b943f..1bf4bccbaeb 100644
--- a/libstdc++-v3/docs/html/debug.html
+++ b/libstdc++-v3/docs/html/debug.html
@@ -99,7 +99,8 @@
debug mode that provides additional checking of library facilities,
and will report errors in the use of libstdc++ as soon as they can
be detected by emitting a description of the problem to standard
- error and aborting the program. </p>
+ error and aborting the program. This debug mode is available with
+ GCC 3.4.0 and later versions. </p>
<p>The libstdc++ debug mode performs checking for many areas of the C++
standard, but the focus is on checking interactions among standard
diff --git a/libstdc++-v3/docs/html/ext/howto.html b/libstdc++-v3/docs/html/ext/howto.html
index b3f91552825..c085800c600 100644
--- a/libstdc++-v3/docs/html/ext/howto.html
+++ b/libstdc++-v3/docs/html/ext/howto.html
@@ -351,7 +351,7 @@
should probably not be calling <code>underflow()</code>.
</dd> -->
- <dt><a href="lwg-active.html#167">167</a>:
+ <dt><a href="lwg-defects.html#167">167</a>:
<em>Improper use of traits_type::length()</em>
</dt>
<dd><code>op&lt;&lt;</code> with a <code>const char*</code> was
@@ -412,7 +412,7 @@
<dd>This nested typdef was originally not specified.
</dd>
- <dt><a href="lwg-active.html#253">253</a>:
+ <dt><a href="lwg-defects.html#253">253</a>:
<em>valarray helper functions are almost entirely useless</em>
</dt>
<dd>Make the copy constructor and copy-assignment operator declarations
@@ -479,13 +479,13 @@
<dd>Change the format string to &quot;%.0Lf&quot;.
</dd>
- <dt><a href="lwg-active.html#389">389</a>:
+ <dt><a href="lwg-defects.html#389">389</a>:
<em>Const overload of valarray::operator[] returns by value</em>
</dt>
<dd>Change it to return a <code>const T&amp;</code>.
</dd>
- <dt><a href="lwg-active.html#402">402</a>:
+ <dt><a href="lwg-defects.html#402">402</a>:
<em>Wrong new expression in [some_]allocator::construct</em>
</dt>
<dd>Replace &quot;new&quot; with &quot;::new&quot;.
diff --git a/libstdc++-v3/docs/html/ext/lwg-active.html b/libstdc++-v3/docs/html/ext/lwg-active.html
index 379e65861a3..148e32f9baf 100644
--- a/libstdc++-v3/docs/html/ext/lwg-active.html
+++ b/libstdc++-v3/docs/html/ext/lwg-active.html
@@ -1,14 +1,15 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"><html><head><title>C++ Standard Library Active Issues List</title></head>
-
-<body text="#000000" bgcolor="#ffffff">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<head><title>C++ Standard Library Active Issues List</title></head>
+<body bgcolor="#ffffff" text="#000000">
<table>
-<tbody><tr>
+<tr>
<td align="left">Doc. no.</td>
-<td align="left">N1537=03-0120</td>
+<td align="left">N1657=04-0097</td>
</tr>
<tr>
<td align="left">Date:</td>
-<td align="left">13 Nov 2003</td>
+<td align="left">16 Jul 2004</td>
</tr>
<tr>
<td align="left">Project:</td>
@@ -18,19 +19,19 @@
<td align="left">Reply to:</td>
<td align="left">Matt Austern &lt;austern@apple.com&gt;</td>
</tr>
-</tbody></table>
-<h1>C++ Standard Library Active Issues List (Revision 28)</h1>
+</table>
+<h1>C++ Standard Library Active Issues List (Revision 31)</h1>
<p>Reference ISO/IEC IS 14882:1998(E)</p>
<p>Also see:</p>
<ul>
<li>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-toc.html">Table of Contents</a> for all library issues.</li>
+<a href="lwg-toc.html">Table of Contents</a> for all library issues.</li>
<li>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-index.html">Index by Section</a> for all library issues.</li>
+<a href="lwg-index.html">Index by Section</a> for all library issues.</li>
<li>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-status.html">Index by Status</a> for all library issues.</li>
- <li><a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html">Library Defect Reports List</a></li>
- <li><a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html">Library Closed Issues List</a></li>
+<a href="lwg-status.html">Index by Status</a> for all library issues.</li>
+ <li><a href="lwg-defects.html">Library Defect Reports List</a></li>
+ <li><a href="lwg-closed.html">Library Closed Issues List</a></li>
</ul>
<p>The purpose of this document is to record the status of issues
which have come before the Library Working Group (LWG) of the ANSI
@@ -40,10 +41,10 @@
<p>This document contains only library issues which are actively being
considered by the Library Working Group. That is, issues which have a
- status of <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#New">New</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>,
- <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>, and <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Review">Review</a>. See
- <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html">Library Defect Reports List</a> for issues considered defects and
- <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html">Library Closed Issues List</a> for issues considered closed.</p>
+ status of <a href="lwg-active.html#New">New</a>, <a href="lwg-active.html#Open">Open</a>,
+ <a href="lwg-active.html#Ready">Ready</a>, and <a href="lwg-active.html#Review">Review</a>. See
+ <a href="lwg-defects.html">Library Defect Reports List</a> for issues considered defects and
+ <a href="lwg-closed.html">Library Closed Issues List</a> for issues considered closed.</p>
<p>The issues in these lists are not necessarily formal ISO Defect
Reports (DR's). While some issues will eventually be elevated to
@@ -77,7 +78,7 @@
<p>Public information as to how to obtain a copy of the C++ Standard,
join the standards committee, submit an issue, or comment on an issue
can be found in the comp.std.c++ FAQ.
- Public discussion of C++ Standard related issues occurs on <a href="news://comp.std.c%2b%2b/">news:comp.std.c++</a>.
+ Public discussion of C++ Standard related issues occurs on <a href="news:comp.std.c++">news:comp.std.c++</a>.
</p>
<p>For committee members, files available on the committee's private
@@ -87,12 +88,25 @@
directory as the issues list files. </p>
<h2>Revision History</h2>
<ul>
+<li>R31:
+2004-07 mid-term mailing: reflects new proposed resolutions and
+new issues received after the post-Sydney mailing. Added
+new issues <a href="lwg-active.html#463">463</a>-<a href="lwg-active.html#478">478</a>.
+</li>
+<li>R30:
+Post-Sydney mailing: reflects decisions made at the Sydney meeting.
+Voted all "Ready" issues from R29 into the working paper.
+Added new issues <a href="lwg-active.html#460">460</a>-<a href="lwg-active.html#462">462</a>.
+</li>
+<li>R29:
+Pre-Sydney mailing. Added new issues <a href="lwg-active.html#441">441</a>-<a href="lwg-active.html#457">457</a>.
+</li>
<li>R28:
-Post-Kona mailing: reflects decisiosn made at the Kona meeting.
-Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#432">432</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#440">440</a>.
+Post-Kona mailing: reflects decisions made at the Kona meeting.
+Added new issues <a href="lwg-active.html#432">432</a>-<a href="lwg-closed.html#440">440</a>.
</li>
<li>R27:
-Pre-Kona mailing. Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#404">404</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#431">431</a>.
+Pre-Kona mailing. Added new issues <a href="lwg-defects.html#404">404</a>-<a href="lwg-active.html#431">431</a>.
</li>
<li>R26:
Post-Oxford mailing: reflects decisions made at the Oxford meeting.
@@ -100,139 +114,139 @@ All issues in Ready status were voted into DR status. All issues in
DR status were voted into WP status.
</li>
<li>R25:
-Pre-Oxford mailing. Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#390">390</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#402">402</a>.
+Pre-Oxford mailing. Added new issues <a href="lwg-closed.html#390">390</a>-<a href="lwg-defects.html#402">402</a>.
</li>
<li>R24:
Post-Santa Cruz mailing: reflects decisions made at the Santa Cruz
-meeting. All Ready issues from R23 with the exception of <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#253">253</a>, which has been given a new proposed resolution, were
-moved to DR status. Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#383">383</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#389">389</a>. (Issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#387">387</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#389">389</a> were discussed
-at the meeting.) Made progress on issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#225">225</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#226">226</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#229">229</a>: <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#225">225</a> and <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#229">229</a> have been moved to Ready status, and the only remaining
-concerns with <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#226">226</a> involve wording.
+meeting. All Ready issues from R23 with the exception of <a href="lwg-defects.html#253">253</a>, which has been given a new proposed resolution, were
+moved to DR status. Added new issues <a href="lwg-defects.html#383">383</a>-<a href="lwg-defects.html#389">389</a>. (Issues <a href="lwg-active.html#387">387</a>-<a href="lwg-defects.html#389">389</a> were discussed
+at the meeting.) Made progress on issues <a href="lwg-defects.html#225">225</a>, <a href="lwg-defects.html#226">226</a>, <a href="lwg-defects.html#229">229</a>: <a href="lwg-defects.html#225">225</a> and <a href="lwg-defects.html#229">229</a> have been moved to Ready status, and the only remaining
+concerns with <a href="lwg-defects.html#226">226</a> involve wording.
</li>
<li>R23:
-Pre-Santa Cruz mailing. Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#367">367</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#382">382</a>.
+Pre-Santa Cruz mailing. Added new issues <a href="lwg-closed.html#367">367</a>-<a href="lwg-active.html#382">382</a>.
Moved issues in the TC to TC status.
</li>
<li>R22:
-Post-Curaçao mailing. Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#362">362</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#366">366</a>.
+Post-Cura&ccedil;ao mailing. Added new issues <a href="lwg-active.html#362">362</a>-<a href="lwg-active.html#366">366</a>.
</li>
<li>R21:
-Pre-Curaçao mailing. Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#351">351</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#361">361</a>.
+Pre-Cura&ccedil;ao mailing. Added new issues <a href="lwg-closed.html#351">351</a>-<a href="lwg-closed.html#361">361</a>.
</li>
<li>R20:
Post-Redmond mailing; reflects actions taken in Redmond. Added
-new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#336">336</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#350">350</a>, of which issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#347">347</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#350">350</a> were added since Redmond, hence
+new issues <a href="lwg-defects.html#336">336</a>-<a href="lwg-closed.html#350">350</a>, of which issues
+<a href="lwg-defects.html#347">347</a>-<a href="lwg-closed.html#350">350</a> were added since Redmond, hence
not discussed at the meeting.
All Ready issues were moved to DR status, with the exception of issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#284">284</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#241">241</a>, and <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#267">267</a>.
+<a href="lwg-defects.html#284">284</a>, <a href="lwg-defects.html#241">241</a>, and <a href="lwg-closed.html#267">267</a>.
Noteworthy issues discussed at Redmond include
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#120">120</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#202">202</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#226">226</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#233">233</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#270">270</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#253">253</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#254">254</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#323">323</a>.
+<a href="lwg-defects.html#120">120</a> <a href="lwg-defects.html#202">202</a>, <a href="lwg-defects.html#226">226</a>, <a href="lwg-active.html#233">233</a>,
+<a href="lwg-defects.html#270">270</a>, <a href="lwg-defects.html#253">253</a>, <a href="lwg-active.html#254">254</a>, <a href="lwg-closed.html#323">323</a>.
</li>
<li>R19:
Pre-Redmond mailing. Added new issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#323">323</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#335">335</a>.
+<a href="lwg-closed.html#323">323</a>-<a href="lwg-defects.html#335">335</a>.
</li>
<li>R18:
Post-Copenhagen mailing; reflects actions taken in Copenhagen.
-Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#312">312</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#317">317</a>, and discussed
-new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#271">271</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#314">314</a>.
+Added new issues <a href="lwg-defects.html#312">312</a>-<a href="lwg-defects.html#317">317</a>, and discussed
+new issues <a href="lwg-defects.html#271">271</a>-<a href="lwg-closed.html#314">314</a>.
Changed status of issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#103">103</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#118">118</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#136">136</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#153">153</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#165">165</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#171">171</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#183">183</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#184">184</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#185">185</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#186">186</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#214">214</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#221">221</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#234">234</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#237">237</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#243">243</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#248">248</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#251">251</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#252">252</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#256">256</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#260">260</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#261">261</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#262">262</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#263">263</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#265">265</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#268">268</a>
+<a href="lwg-defects.html#103">103</a> <a href="lwg-defects.html#118">118</a> <a href="lwg-defects.html#136">136</a> <a href="lwg-defects.html#153">153</a>
+<a href="lwg-defects.html#165">165</a> <a href="lwg-defects.html#171">171</a> <a href="lwg-defects.html#183">183</a> <a href="lwg-defects.html#184">184</a>
+<a href="lwg-defects.html#185">185</a> <a href="lwg-defects.html#186">186</a> <a href="lwg-defects.html#214">214</a> <a href="lwg-defects.html#221">221</a>
+<a href="lwg-defects.html#234">234</a> <a href="lwg-defects.html#237">237</a> <a href="lwg-defects.html#243">243</a> <a href="lwg-defects.html#248">248</a>
+<a href="lwg-defects.html#251">251</a> <a href="lwg-defects.html#252">252</a> <a href="lwg-defects.html#256">256</a> <a href="lwg-defects.html#260">260</a>
+<a href="lwg-defects.html#261">261</a> <a href="lwg-defects.html#262">262</a> <a href="lwg-defects.html#263">263</a> <a href="lwg-defects.html#265">265</a>
+<a href="lwg-defects.html#268">268</a>
to DR.
Changed status of issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#49">49</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#109">109</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#117">117</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#182">182</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#228">228</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#230">230</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#232">232</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#235">235</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#238">238</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#241">241</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#242">242</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#250">250</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#259">259</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#264">264</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#266">266</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#267">267</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#271">271</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#272">272</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#273">273</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#275">275</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#281">281</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#284">284</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#285">285</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#286">286</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#288">288</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#292">292</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#295">295</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#297">297</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#298">298</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#301">301</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#303">303</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#306">306</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#307">307</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#308">308</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#312">312</a>
+<a href="lwg-defects.html#49">49</a> <a href="lwg-defects.html#109">109</a> <a href="lwg-defects.html#117">117</a> <a href="lwg-defects.html#182">182</a>
+<a href="lwg-defects.html#228">228</a> <a href="lwg-defects.html#230">230</a> <a href="lwg-defects.html#232">232</a> <a href="lwg-defects.html#235">235</a>
+<a href="lwg-defects.html#238">238</a> <a href="lwg-defects.html#241">241</a> <a href="lwg-defects.html#242">242</a> <a href="lwg-defects.html#250">250</a>
+<a href="lwg-defects.html#259">259</a> <a href="lwg-defects.html#264">264</a> <a href="lwg-defects.html#266">266</a> <a href="lwg-closed.html#267">267</a>
+<a href="lwg-defects.html#271">271</a> <a href="lwg-defects.html#272">272</a> <a href="lwg-defects.html#273">273</a> <a href="lwg-defects.html#275">275</a>
+<a href="lwg-defects.html#281">281</a> <a href="lwg-defects.html#284">284</a> <a href="lwg-defects.html#285">285</a> <a href="lwg-defects.html#286">286</a>
+<a href="lwg-defects.html#288">288</a> <a href="lwg-defects.html#292">292</a> <a href="lwg-defects.html#295">295</a> <a href="lwg-defects.html#297">297</a>
+<a href="lwg-defects.html#298">298</a> <a href="lwg-defects.html#301">301</a> <a href="lwg-defects.html#303">303</a> <a href="lwg-defects.html#306">306</a>
+<a href="lwg-defects.html#307">307</a> <a href="lwg-defects.html#308">308</a> <a href="lwg-defects.html#312">312</a>
to Ready.
Closed issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#111">111</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#277">277</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#279">279</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#287">287</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#289">289</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#293">293</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#302">302</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#313">313</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#314">314</a>
+<a href="lwg-closed.html#111">111</a> <a href="lwg-closed.html#277">277</a> <a href="lwg-closed.html#279">279</a> <a href="lwg-closed.html#287">287</a>
+<a href="lwg-closed.html#289">289</a> <a href="lwg-closed.html#293">293</a> <a href="lwg-closed.html#302">302</a> <a href="lwg-closed.html#313">313</a>
+<a href="lwg-closed.html#314">314</a>
as NAD.
</li>
<li>R17:
Pre-Copenhagen mailing. Converted issues list to XML. Added proposed
-resolutions for issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#49">49</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#76">76</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#91">91</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#235">235</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#250">250</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#267">267</a>.
-Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#278">278</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#311">311</a>.
+resolutions for issues <a href="lwg-defects.html#49">49</a>, <a href="lwg-defects.html#76">76</a>, <a href="lwg-defects.html#91">91</a>, <a href="lwg-defects.html#235">235</a>, <a href="lwg-defects.html#250">250</a>, <a href="lwg-closed.html#267">267</a>.
+Added new issues <a href="lwg-defects.html#278">278</a>-<a href="lwg-defects.html#311">311</a>.
</li>
<li>R16:
post-Toronto mailing; reflects actions taken in Toronto. Added new
-issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#265">265</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#277">277</a>. Changed status of issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#3">3</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#8">8</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#9">9</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#19">19</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#26">26</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#31">31</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#61">61</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#63">63</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#86">86</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#108">108</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#112">112</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#114">114</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#115">115</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#122">122</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#127">127</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#129">129</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#134">134</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#137">137</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#142">142</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#144">144</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#146">146</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#147">147</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#159">159</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#164">164</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#170">170</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#181">181</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#199">199</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#208">208</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#209">209</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#210">210</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#211">211</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#212">212</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#217">217</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#220">220</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#222">222</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#223">223</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#224">224</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#227">227</a> to "DR". Reopened issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#23">23</a>. Reopened
-issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#187">187</a>. Changed issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#2">2</a> and
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#4">4</a> to NAD. Fixed a typo in issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#17">17</a>. Fixed
-issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#70">70</a>: signature should be changed both places it
-appears. Fixed issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#160">160</a>: previous version didn't fix
+issues <a href="lwg-defects.html#265">265</a>-<a href="lwg-closed.html#277">277</a>. Changed status of issues
+<a href="lwg-defects.html#3">3</a>, <a href="lwg-defects.html#8">8</a>, <a href="lwg-defects.html#9">9</a>, <a href="lwg-defects.html#19">19</a>,
+<a href="lwg-defects.html#26">26</a>, <a href="lwg-defects.html#31">31</a>, <a href="lwg-defects.html#61">61</a>,
+<a href="lwg-defects.html#63">63</a>, <a href="lwg-defects.html#86">86</a>, <a href="lwg-defects.html#108">108</a>,
+<a href="lwg-defects.html#112">112</a>, <a href="lwg-defects.html#114">114</a>, <a href="lwg-defects.html#115">115</a>,
+<a href="lwg-defects.html#122">122</a>, <a href="lwg-defects.html#127">127</a>, <a href="lwg-defects.html#129">129</a>,
+<a href="lwg-defects.html#134">134</a>, <a href="lwg-defects.html#137">137</a>, <a href="lwg-defects.html#142">142</a>,
+<a href="lwg-defects.html#144">144</a>, <a href="lwg-defects.html#146">146</a>, <a href="lwg-defects.html#147">147</a>,
+<a href="lwg-defects.html#159">159</a>, <a href="lwg-defects.html#164">164</a>, <a href="lwg-defects.html#170">170</a>,
+<a href="lwg-defects.html#181">181</a>, <a href="lwg-defects.html#199">199</a>, <a href="lwg-defects.html#208">208</a>,
+<a href="lwg-defects.html#209">209</a>, <a href="lwg-defects.html#210">210</a>, <a href="lwg-defects.html#211">211</a>,
+<a href="lwg-defects.html#212">212</a>, <a href="lwg-defects.html#217">217</a>, <a href="lwg-defects.html#220">220</a>,
+<a href="lwg-defects.html#222">222</a>, <a href="lwg-defects.html#223">223</a>, <a href="lwg-defects.html#224">224</a>,
+<a href="lwg-defects.html#227">227</a> to "DR". Reopened issue <a href="lwg-active.html#23">23</a>. Reopened
+issue <a href="lwg-defects.html#187">187</a>. Changed issues <a href="lwg-closed.html#2">2</a> and
+<a href="lwg-closed.html#4">4</a> to NAD. Fixed a typo in issue <a href="lwg-defects.html#17">17</a>. Fixed
+issue <a href="lwg-defects.html#70">70</a>: signature should be changed both places it
+appears. Fixed issue <a href="lwg-defects.html#160">160</a>: previous version didn't fix
the bug in enough places.
</li>
<li>R15:
pre-Toronto mailing. Added issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#233">233</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#264">264</a>. Some small HTML formatting
+<a href="lwg-active.html#233">233</a>-<a href="lwg-defects.html#264">264</a>. Some small HTML formatting
changes so that we pass Weblint tests.
</li>
<li>R14:
post-Tokyo II mailing; reflects committee actions taken in
-Tokyo. Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#228">228</a> to <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#232">232</a>. (00-0019R1/N1242)
+Tokyo. Added issues <a href="lwg-defects.html#228">228</a> to <a href="lwg-defects.html#232">232</a>. (00-0019R1/N1242)
</li>
<li>R13:
-pre-Tokyo II updated: Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#212">212</a> to <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#227">227</a>.
+pre-Tokyo II updated: Added issues <a href="lwg-defects.html#212">212</a> to <a href="lwg-defects.html#227">227</a>.
</li>
<li>R12:
-pre-Tokyo II mailing: Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#199">199</a> to
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#211">211</a>. Added "and paragraph 5" to the proposed resolution
-of issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#29">29</a>. Add further rationale to issue
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#178">178</a>.
+pre-Tokyo II mailing: Added issues <a href="lwg-defects.html#199">199</a> to
+<a href="lwg-defects.html#211">211</a>. Added "and paragraph 5" to the proposed resolution
+of issue <a href="lwg-defects.html#29">29</a>. Add further rationale to issue
+<a href="lwg-closed.html#178">178</a>.
</li>
<li>R11:
post-Kona mailing: Updated to reflect LWG and full committee actions
in Kona (99-0048/N1224). Note changed resolution of issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#4">4</a> and <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#38">38</a>. Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#196">196</a>
-to <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#198">198</a>. Closed issues list split into "defects" and
+<a href="lwg-closed.html#4">4</a> and <a href="lwg-defects.html#38">38</a>. Added issues <a href="lwg-closed.html#196">196</a>
+to <a href="lwg-defects.html#198">198</a>. Closed issues list split into "defects" and
"closed" documents. Changed the proposed resolution of issue
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#4">4</a> to NAD, and changed the wording of proposed resolution
-of issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#38">38</a>.
+<a href="lwg-closed.html#4">4</a> to NAD, and changed the wording of proposed resolution
+of issue <a href="lwg-defects.html#38">38</a>.
</li>
<li>R10:
-pre-Kona updated. Added proposed resolutions <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#83">83</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#86">86</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#91">91</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#92">92</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#109">109</a>. Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#190">190</a> to
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#195">195</a>. (99-0033/D1209, 14 Oct 99)
+pre-Kona updated. Added proposed resolutions <a href="lwg-defects.html#83">83</a>,
+<a href="lwg-defects.html#86">86</a>, <a href="lwg-defects.html#91">91</a>, <a href="lwg-defects.html#92">92</a>,
+<a href="lwg-defects.html#109">109</a>. Added issues <a href="lwg-closed.html#190">190</a> to
+<a href="lwg-defects.html#195">195</a>. (99-0033/D1209, 14 Oct 99)
</li>
<li>R9:
-pre-Kona mailing. Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#140">140</a> to
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#189">189</a>. Issues list split into separate "active" and
+pre-Kona mailing. Added issues <a href="lwg-closed.html#140">140</a> to
+<a href="lwg-defects.html#189">189</a>. Issues list split into separate "active" and
"closed" documents. (99-0030/N1206, 25 Aug 99)
</li>
<li>R8:
@@ -240,48 +254,46 @@ post-Dublin mailing. Updated to reflect LWG and full committee actions
in Dublin. (99-0016/N1193, 21 Apr 99)
</li>
<li>R7:
-pre-Dublin updated: Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#130">130</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#131">131</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#132">132</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#133">133</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#134">134</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#135">135</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#136">136</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#137">137</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#138">138</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#139">139</a> (31 Mar 99)
+pre-Dublin updated: Added issues <a href="lwg-active.html#130">130</a>, <a href="lwg-closed.html#131">131</a>,
+<a href="lwg-defects.html#132">132</a>, <a href="lwg-defects.html#133">133</a>, <a href="lwg-defects.html#134">134</a>,
+<a href="lwg-closed.html#135">135</a>, <a href="lwg-defects.html#136">136</a>, <a href="lwg-defects.html#137">137</a>,
+<a href="lwg-closed.html#138">138</a>, <a href="lwg-defects.html#139">139</a> (31 Mar 99)
</li>
<li>R6:
-pre-Dublin mailing. Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#127">127</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#128">128</a>,
-and <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#129">129</a>. (99-0007/N1194, 22 Feb 99)
+pre-Dublin mailing. Added issues <a href="lwg-defects.html#127">127</a>, <a href="lwg-closed.html#128">128</a>,
+and <a href="lwg-defects.html#129">129</a>. (99-0007/N1194, 22 Feb 99)
</li>
<li>R5:
-update issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#103">103</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#112">112</a>; added issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#114">114</a> to <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#126">126</a>. Format revisions to prepare
+update issues <a href="lwg-defects.html#103">103</a>, <a href="lwg-defects.html#112">112</a>; added issues
+<a href="lwg-defects.html#114">114</a> to <a href="lwg-defects.html#126">126</a>. Format revisions to prepare
for making list public. (30 Dec 98)
</li>
<li>R4:
-post-Santa Cruz II updated: Issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#110">110</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#111">111</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#112">112</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#113">113</a> added, several
+post-Santa Cruz II updated: Issues <a href="lwg-defects.html#110">110</a>,
+<a href="lwg-closed.html#111">111</a>, <a href="lwg-defects.html#112">112</a>, <a href="lwg-closed.html#113">113</a> added, several
issues corrected. (22 Oct 98)
</li>
<li>R3:
-post-Santa Cruz II: Issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#94">94</a> to <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#109">109</a>
+post-Santa Cruz II: Issues <a href="lwg-closed.html#94">94</a> to <a href="lwg-defects.html#109">109</a>
added, many issues updated to reflect LWG consensus (12 Oct 98)
</li>
<li>R2:
-pre-Santa Cruz II: Issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#73">73</a> to <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#93">93</a> added,
-issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#17">17</a> updated. (29 Sep 98)
+pre-Santa Cruz II: Issues <a href="lwg-closed.html#73">73</a> to <a href="lwg-closed.html#93">93</a> added,
+issue <a href="lwg-defects.html#17">17</a> updated. (29 Sep 98)
</li>
<li>R1:
-Correction to issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#55">55</a> resolution, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#60">60</a> code
-format, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#64">64</a> title. (17 Sep 98)
+Correction to issue <a href="lwg-defects.html#55">55</a> resolution, <a href="lwg-defects.html#60">60</a> code
+format, <a href="lwg-defects.html#64">64</a> title. (17 Sep 98)
</li>
</ul>
<h2>
<a name="Status"></a>Issue Status</h2>
- <p>
-<b><a name="New">New</a></b> - The issue has not yet been
+ <p><b><a name="New">New</a></b> - The issue has not yet been
reviewed by the LWG. Any <b>Proposed Resolution</b> is purely a
suggestion from the issue submitter, and should not be construed as
the view of LWG.</p>
- <p>
-<b><a name="Open">Open</a></b> - The LWG has discussed the issue
+ <p><b><a name="Open">Open</a></b> - The LWG has discussed the issue
but is not yet ready to move the issue forward. There are several
possible reasons for open status:</p>
<ul>
@@ -300,31 +312,26 @@ format, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#64"
font. Such comments are for information only and should not be given
undue importance.</p>
- <p>
-<b><a name="Dup">Dup</a></b> - The LWG has reached consensus that
+ <p><b><a name="Dup">Dup</a></b> - The LWG has reached consensus that
the issue is a duplicate of another issue, and will not be further
dealt with. A <b>Rationale</b> identifies the duplicated issue's
issue number. </p>
- <p>
-<b><a name="NAD">NAD</a></b> - The LWG has reached consensus that
+ <p><b><a name="NAD">NAD</a></b> - The LWG has reached consensus that
the issue is not a defect in the Standard, and the issue is ready to
forward to the full committee as a proposed record of response. A
<b>Rationale</b> discusses the LWG's reasoning.</p>
- <p>
-<b><a name="Review">Review</a></b> - Exact wording of a
+ <p><b><a name="Review">Review</a></b> - Exact wording of a
<b>Proposed Resolution</b> is now available for review on an issue
for which the LWG previously reached informal consensus.</p>
- <p>
-<b><a name="Ready">Ready</a></b> - The LWG has reached consensus
+ <p><b><a name="Ready">Ready</a></b> - The LWG has reached consensus
that the issue is a defect in the Standard, the <b>Proposed
Resolution</b> is correct, and the issue is ready to forward to the
full committee for further action as a Defect Report (DR).</p>
- <p>
-<b><a name="DR">DR</a></b> - (Defect Report) - The full J16
+ <p><b><a name="DR">DR</a></b> - (Defect Report) - The full J16
committee has voted to forward the issue to the Project Editor to be
processed as a Potential Defect Report. The Project Editor reviews
the issue, and then forwards it to the WG21 Convenor, who returns it
@@ -332,48 +339,43 @@ format, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#64"
accords the status of DR to all these Defect Reports regardless of
where they are in that process.</p>
- <p>
-<b><a name="TC">TC</a></b> - (Technical Corrigenda) - The full
+ <p><b><a name="TC">TC</a></b> - (Technical Corrigenda) - The full
WG21 committee has voted to accept the Defect Report's Proposed
Resolution as a Technical Corrigenda. Action on this issue is thus
complete and no further action is possible under ISO rules.</p>
- <p>
-<b><a name="WP">WP</a></b> - (Working Paper) - The proposed
+ <p><b><a name="WP">WP</a></b> - (Working Paper) - The proposed
resolution has not been accepted as a Technical Corrigendum, but
the full WG21 committee has voted to apply the Defect Report's Proposed
Resolution to the working paper.</p>
- <p>
-<b><a name="RR">RR</a></b> - (Record of Response) - The full WG21
+ <p><b><a name="RR">RR</a></b> - (Record of Response) - The full WG21
committee has determined that this issue is not a defect in the
Standard. Action on this issue is thus complete and no further
action is possible under ISO rules.</p>
- <p>
-<b><a name="Future">Future</a></b> - In addition to the regular
+ <p><b><a name="Future">Future</a></b> - In addition to the regular
status, the LWG believes that this issue should be revisited at the
next revision of the standard. It is usually paired with NAD.</p>
- <p>Issues are always given the status of <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#New">New</a> when
+ <p>Issues are always given the status of <a href="lwg-active.html#New">New</a> when
they first appear on the issues list. They may progress to
- <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a> or <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Review">Review</a> while the LWG
+ <a href="lwg-active.html#Open">Open</a> or <a href="lwg-active.html#Review">Review</a> while the LWG
is actively working on them. When the LWG has reached consensus on
the disposition of an issue, the status will then change to
- <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Dup">Dup</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#NAD">NAD</a>, or <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a> as appropriate. Once the full J16 committee votes to
+ <a href="lwg-active.html#Dup">Dup</a>, <a href="lwg-active.html#NAD">NAD</a>, or <a href="lwg-active.html#Ready">Ready</a> as appropriate. Once the full J16 committee votes to
forward Ready issues to the Project Editor, they are given the
- status of Defect Report ( <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#DR">DR</a>). These in turn may
- become the basis for Technical Corrigenda (<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>),
+ status of Defect Report ( <a href="lwg-active.html#DR">DR</a>). These in turn may
+ become the basis for Technical Corrigenda (<a href="lwg-active.html#TC">TC</a>),
or are closed without action other than a Record of Response
- (<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#RR">RR</a> ). The intent of this LWG process is that
+ (<a href="lwg-active.html#RR">RR</a> ). The intent of this LWG process is that
only issues which are truly defects in the Standard move to the
formal ISO DR status.
</p>
<h2>Active Issues</h2>
<hr>
-<a name="23"><h3>23.&nbsp;Num_get overflow result</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="23"><h3>23.&nbsp;Num_get overflow result</h3></a><p><b>Section:</b>&nbsp;22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The current description of numeric input does not account for the
possibility of overflow. This is an implicit result of changing the
description to rely on the definition of scanf() (which fails to
@@ -398,7 +400,7 @@ and hard to trace, so I will describe it briefly:
<ul>
<li>
- According to 22.2.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>
+ According to 22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>
paragraph 11 <tt>failbit</tt> is set if <tt>scanf()</tt> would
return an input error; otherwise a value is converted to the rules
of <tt>scanf</tt>.
@@ -492,10 +494,10 @@ upon overflow. We considered three options based on this:</p>
it.</p>
<p><b>Proposed resolution:</b></p>
-<p>typo: 22.2.2.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>, para 2, bullet 3. Strike "in." from
+<p>typo: 22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>, para 2, bullet 3. Strike "in." from
the end.</p>
-<p>Change 22.2.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.nm.put"> [lib.locale.nm.put]</a>, para 11, bullet 2 from:</p>
+<p>Change 22.2.2.2 <a href="lib-locales.html#lib.locale.nm.put"> [lib.locale.nm.put]</a>, para 11, bullet 2 from:</p>
<blockquote>
The sequence of chars accumulated in stage 2 would have
caused scanf to report an input failure. ios_base::failbit is
@@ -525,377 +527,14 @@ what kind of error happened. Martin will provide wording, Howard may
help.]</i></p>
<hr>
-<a name="44"><h3>44.&nbsp;Iostreams use operator== on int_type values</h3></a><p>
-<b>Section:</b>&nbsp;27 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
-<p>Many of the specifications for iostreams specify that character
-values or their int_type equivalents are compared using operators ==
-or !=, though in other places traits::eq() or traits::eq_int_type is
-specified to be used throughout. This is an inconsistency; we should
-change uses of == and != to use the traits members instead. </p>
-<p><b>Proposed resolution:</b></p>
-
-<p><i>[Pre-Kona: Dietmar supplied wording]</i></p>
-
-<p>List of changes to clause 27:</p>
-<ol>
-<li>
- In lib.basic.ios.members paragraph 13 (postcondition clause for
- 'fill(cT)') change
-
-<blockquote>
- fillch == fill()
-</blockquote>
-
- to
-
-<blockquote>
- traits::eq(fillch, fill())
-</blockquote>
-
-
-</li>
-<li>
- In lib.istream.unformatted paragraph 7 (effects clause for
- 'get(cT,streamsize,cT)'), third bullet, change
-
-<blockquote>
- c == delim for the next available input character c
-</blockquote>
-
- to
-
-<blockquote>
- traits::eq(c, delim) for the next available input character c
- </blockquote>
-
-</li>
-<li>
- In lib.istream.unformatted paragraph 12 (effects clause for
- 'get(basic_streambuf&lt;cT,Tr&gt;&amp;,cT)'), third bullet, change
-
-<blockquote>
- c == delim for the next available input character c
-</blockquote>
-
- to
-
-<blockquote>
- traits::eq(c, delim) for the next available input character c
-</blockquote>
-
-</li>
-<li>
- In lib.istream.unformatted paragraph 17 (effects clause for
- 'getline(cT,streamsize,cT)'), second bullet, change
-
-<blockquote>
- c == delim for the next available input character c
-</blockquote>
-
- to
-
-<blockquote>
- traits::eq(c, delim) for the next available input character c
- </blockquote>
-
-</li>
-<li>
- In lib.istream.unformatted paragraph 24 (effects clause for
- 'ignore(int,int_type)'), second bullet, change
-
-<blockquote>
- c == delim for the next available input character c
-</blockquote>
-
- to
-
-<blockquote>
- traits::eq_int_type(c, delim) for the next available input
- character c
-</blockquote>
-
-</li>
-<li>
- In lib.istream.unformatted paragraph 25 (notes clause for
- 'ignore(int,int_type)'), second bullet, change
-
-<blockquote>
- The last condition will never occur if delim == traits::eof()
-</blockquote>
-
- to
-
-<blockquote>
- The last condition will never occur if
- traits::eq_int_type(delim, traits::eof()).
-</blockquote>
-
-</li>
-<li>
- In lib.istream.sentry paragraph 6 (example implementation for the
- sentry constructor) change
-
-<blockquote>
- while ((c = is.rdbuf()-&gt;snextc()) != traits::eof()) {
-</blockquote>
-
- to
-
-<blockquote>
- while (!traits::eq_int_type(c = is.rdbuf()-&gt;snextc(), traits::eof())) {
-</blockquote>
-
-</li>
-</ol>
-
-<p>List of changes to Chapter 21:</p>
-
-<ol>
-<li>
- In lib.string::find paragraph 1 (effects clause for find()),
- second bullet, change
-
-<blockquote>
- at(xpos+I) == str.at(I) for all elements ...
-</blockquote>
-
- to
-
-<blockquote>
- traits::eq(at(xpos+I), str.at(I)) for all elements ...
-</blockquote>
-
-</li>
-<li>
- In lib.string::rfind paragraph 1 (effects clause for rfind()),
- second bullet, change
-
-<blockquote>
- at(xpos+I) == str.at(I) for all elements ...
-</blockquote>
-
- to
-
-<blockquote>
- traits::eq(at(xpos+I), str.at(I)) for all elements ...
-</blockquote>
-
-</li>
-<li>
- In lib.string::find.first.of paragraph 1 (effects clause for
- find_first_of()), second bullet, change
-
-<blockquote>
- at(xpos+I) == str.at(I) for all elements ...
-</blockquote>
-
- to
-
-<blockquote>
- traits::eq(at(xpos+I), str.at(I)) for all elements ...
-</blockquote>
-
-</li>
-<li>
- In lib.string::find.last.of paragraph 1 (effects clause for
- find_last_of()), second bullet, change
-
-<blockquote>
- at(xpos+I) == str.at(I) for all elements ...
-</blockquote>
-
- to
-
-<blockquote>
- traits::eq(at(xpos+I), str.at(I)) for all elements ...
-</blockquote>
-
-</li>
-<li>
- In lib.string::find.first.not.of paragraph 1 (effects clause for
- find_first_not_of()), second bullet, change
-
-<blockquote>
- at(xpos+I) == str.at(I) for all elements ...
-</blockquote>
-
- to
-
-<blockquote>
- traits::eq(at(xpos+I), str.at(I)) for all elements ...
-</blockquote>
-</li>
-
-<li>
- In lib.string::find.last.not.of paragraph 1 (effects clause for
- find_last_not_of()), second bullet, change
-
-<blockquote>
- at(xpos+I) == str.at(I) for all elements ...
-</blockquote>
-
- to
-
-<blockquote>
- traits::eq(at(xpos+I), str.at(I)) for all elements ...
-</blockquote>
-</li>
-
-<li>
- In lib.string.ios paragraph 5 (effects clause for getline()),
- second bullet, change
-
-<blockquote>
- c == delim for the next available input character c
-</blockquote>
-
- to
-
-<blockquote>
- traits::eq(c, delim) for the next available input character c
-</blockquote>
-</li>
-
-</ol>
-
-<p>Notes:</p>
-<ul>
-<li>
- Fixing this issue highlights another sloppyness in
- lib.istream.unformatted paragraph 24: this clause mentions a "character"
- which is then compared to an 'int_type' (see item 5. in the list
- below). It is not clear whether this requires explicit words and
- if so what these words are supposed to be. A similar issue exists,
- BTW, for operator*() of istreambuf_iterator which returns the result
- of sgetc() as a character type (see lib.istreambuf.iterator::op*
- paragraph 1), and for operator++() of istreambuf_iterator which
- passes the result of sbumpc() to a constructor taking a char_type
- (see lib.istreambuf.iterator::operator++ paragraph 3). Similarily, the
- assignment operator ostreambuf_iterator passes a char_type to a function
- taking an int_type (see lib.ostreambuf.iter.ops paragraph 1).
-</li>
-<li>
- It is inconsistent to use comparisons using the traits functions in
- Chapter 27 while not using them in Chapter 21, especially as some
- of the inconsistent uses actually involve streams (eg. getline() on
- streams). To avoid leaving this issue open still longer due to this
- inconsistency (it is open since 1998), a list of changes to Chapter
- 21 is below.
-</li>
-<li>
- In Chapter 24 there are several places with statements like "the end
- of stream is reached (streambuf_type::sgetc() returns traits::eof())"
- (lib.istreambuf.iterator paragraph 1, lib.ostreambuf.iter.ops
- paragraph 5). It is unclear whether these should be clarified to use
- traits::eq_int_type() for detecting traits::eof().
-</li>
-</ul>
-
-<hr>
-<a name="92"><h3>92.&nbsp;Incomplete Algorithm Requirements</h3></a><p>
-<b>Section:</b>&nbsp;25 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
-<p>The standard does not state, how often a function object is copied,
-called, or the order of calls inside an algorithm. This may lead to
-surprising/buggy behavior. Consider the following example: </p>
-
-<pre>class Nth { // function object that returns true for the nth element
- private:
- int nth; // element to return true for
- int count; // element counter
- public:
- Nth (int n) : nth(n), count(0) {
- }
- bool operator() (int) {
- return ++count == nth;
- }
-};
-....
-// remove third element
- list&lt;int&gt;::iterator pos;
- pos = remove_if(coll.begin(),coll.end(), // range
- Nth(3)), // remove criterion
- coll.erase(pos,coll.end()); </pre>
-
-<p>This call, in fact removes the 3rd <b>AND the 6th</b> element. This
-happens because the usual implementation of the algorithm copies the
-function object internally: </p>
-
-<pre>template &lt;class ForwIter, class Predicate&gt;
-ForwIter std::remove_if(ForwIter beg, ForwIter end, Predicate op)
-{
- beg = find_if(beg, end, op);
- if (beg == end) {
- return beg;
- }
- else {
- ForwIter next = beg;
- return remove_copy_if(++next, end, beg, op);
- }
-} </pre>
-
-<p>The algorithm uses find_if() to find the first element that should
-be removed. However, it then uses a copy of the passed function object
-to process the resulting elements (if any). Here, Nth is used again
-and removes also the sixth element. This behavior compromises the
-advantage of function objects being able to have a state. Without any
-cost it could be avoided (just implement it directly instead of
-calling find_if()). </p>
-<p><b>Proposed resolution:</b></p>
-
-<p>Add a new paragraph following 25 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a> paragraph 8:</p>
-<blockquote>
-[Note: Unless otherwise specified, algorithms that take function
-objects as arguments are permitted to copy those function objects
-freely. Programmers for whom object identity is important should
-consider using a wrapper class that points to a noncopied
-implementation object, or some equivalent solution.]
-</blockquote>
-
-<p><i>[Dublin: Pete Becker felt that this may not be a defect,
-but rather something that programmers need to be educated about.
-There was discussion of adding wording to the effect that the number
-and order of calls to function objects, including predicates, not
-affect the behavior of the function object.]</i></p>
-
-<p><i>[Pre-Kona: Nico comments: It seems the problem is that we don't
-have a clear statement of "predicate" in the
-standard. People including me seemed to think "a function
-returning a Boolean value and being able to be called by an STL
-algorithm or be used as sorting criterion or ... is a
-predicate". But a predicate has more requirements: It should
-never change its behavior due to a call or being copied. IMHO we have
-to state this in the standard. If you like, see section 8.1.4 of my
-library book for a detailed discussion.]</i></p>
-
-<p><i>[Kona: Nico will provide wording to the effect that "unless
-otherwise specified, the number of copies of and calls to function
-objects by algorithms is unspecified".&nbsp; Consider placing in
-25 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a> after paragraph 9.]</i></p>
-
-<p><i>[Santa Cruz: The standard doesn't currently guarantee that
- functions object won't be copied, and what isn't forbidden is
- allowed. It is believed (especially since implementations that were
- written in concert with the standard do make copies of function
- objects) that this was intentional. Thus, no normative change is
- needed. What we should put in is a non-normative note suggesting to
- programmers that if they want to guarantee the lack of copying they
- should use something like the <tt>ref</tt> wrapper.]</i></p>
-
-<p><i>[Oxford: Matt provided wording.]</i></p>
-
-
-<hr>
-<a name="96"><h3>96.&nbsp;Vector&lt;bool&gt; is not a container</h3></a><p>
-<b>Section:</b>&nbsp;23.2.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.bool"> [lib.vector.bool]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;AFNOR&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
-<p>
-<tt>vector&lt;bool&gt;</tt> is not a container as its reference and
+<a name="96"><h3>96.&nbsp;Vector&lt;bool&gt; is not a container</h3></a><p><b>Section:</b>&nbsp;23.2.5 <a href="lib-containers.html#lib.vector.bool"> [lib.vector.bool]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;AFNOR&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
+<p><tt>vector&lt;bool&gt;</tt> is not a container as its reference and
pointer types are not references and pointers. </p>
<p>Also it forces everyone to have a space optimization instead of a
speed one.</p>
-<p>
-<b>See also:</b> 99-0008 == N1185 Vector&lt;bool&gt; is
+<p><b>See also:</b> 99-0008 == N1185 Vector&lt;bool&gt; is
Nonconforming, Forces Optimization Choice.</p>
<p><b>Proposed resolution:</b></p>
@@ -947,146 +586,7 @@ course users with specific suggestions as to how to apply the eventual
solution.]</i></p>
<hr>
-<a name="98"><h3>98.&nbsp;Input iterator requirements are badly written</h3></a><p>
-<b>Section:</b>&nbsp;24.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.input.iterators"> [lib.input.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;AFNOR&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
-<p>Table 72 in 24.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.input.iterators"> [lib.input.iterators]</a> specifies semantics for
-<tt>*r++</tt> of:</p>
-
-<p>&nbsp;&nbsp; <tt>{ T tmp = *r; ++r; return tmp; }</tt>
-</p>
-
-<p>There are two problems with this. First, the return type is
-specified to be "T", as opposed to something like "convertible to T".
-This is too specific: we want to allow *r++ to return an lvalue.</p>
-
-<p>Second, writing the semantics in terms of code misleadingly
-suggests that the effects *r++ should precisely replicate the behavior
-of this code, including side effects. (Does this mean that *r++
-should invoke the copy constructor exactly as many times as the sample
-code above would?) See issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#334">334</a> for a similar
-problem.</p>
-
-<p><b>Proposed resolution:</b></p>
-In Table 72 in 24.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.input.iterators"> [lib.input.iterators]</a>, change the return type
-for <tt>*r++</tt> from <tt>T</tt> to "convertible to T".
-<p><b>Rationale:</b></p>
-<p>This issue has two parts: the return type, and the number of times
- the copy constructor is invoked.</p>
-
-<p>The LWG believes the the first part is a real issue. It's
- inappropriate for the return type to be specified so much more
- precisely for *r++ than it is for *r. In particular, if r is of
- (say) type <tt>int*</tt>, then *r++ isn't <tt>int</tt>,
- but <tt>int&amp;</tt>.</p>
-
-<p>The LWG does not believe that the number of times the copy
- constructor is invoked is a real issue. This can vary in any case,
- because of language rules on copy constructor elision. That's too
- much to read into these semantics clauses.</p>
-<hr>
-<a name="120"><h3>120.&nbsp;Can an implementor add specializations?</h3></a><p>
-<b>Section:</b>&nbsp;17.4.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
-
-<p>The original issue asked whether a library implementor could
-specialize standard library templates for built-in types. (This was
-an issue because users are permitted to explicitly instantiate
-standard library templates.)</p>
-
-<p>Specializations are no longer a problem, because of the resolution
-to core issue 259. Under the proposed resolution, it will be legal
-for a translation unit to contain both a specialization and an
-explicit instantiation of the same template, provided that the
-specialization comes first. In such a case, the explicit
-instantiation will be ignored. Further discussion of library issue
-120 assumes that the core 259 resolution will be adopted.</p>
-
-<p>However, as noted in lib-7047, one piece of this issue still
-remains: what happens if a standard library implementor explicitly
-instantiates a standard library templates? It's illegal for a program
-to contain two different explicit instantiations of the same template
-for the same type in two different translation units (ODR violation),
-and the core working group doesn't believe it is practical to relax
-that restriction.</p>
-
-<p>The issue, then, is: are users allowed to explicitly instantiate
-standard library templates for non-user defined types? The status quo
-answer is 'yes'. Changing it to 'no' would give library implementors
-more freedom.</p>
-
-<p>This is an issue because, for performance reasons, library
-implementors often need to explicitly instantiate standard library
-templates. (for example, std::basic_string&lt;char&gt;) Does giving
-users freedom to explicitly instantiate standard library templates for
-non-user defined types make it impossible or painfully difficult for
-library implementors to do this?</p>
-
-<p>John Spicer suggests, in lib-8957, that library implementors have a
-mechanism they can use for explicit instantiations that doesn't
-prevent users from performing their own explicit instantiations: put
-each explicit instantiation in its own object file. (Different
-solutions might be necessary for Unix DSOs or MS-Windows DLLs.) On
-some platforms, library implementors might not need to do anything
-special: the "undefined behavior" that results from having two
-different explicit instantiations might be harmless.</p>
-
-<p><b>Proposed resolution:</b></p>
- <p>Append to 17.4.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a> paragraph 1: </p>
- <blockquote>
- A program may explicitly instantiate any templates in the standard
- library only if the declaration depends on the name of a user-defined
- type of external linkage and the instantiation meets the standard library
- requirements for the original template.
- </blockquote>
-
-<p><i>[Kona: changed the wording from "a user-defined name" to "the name of
- a user-defined type"]</i></p>
-
-<p><b>Rationale:</b></p>
-<p>The LWG considered another possible resolution:</p>
-<blockquote>
- <p>In light of the resolution to core issue 259, no normative changes
- in the library clauses are necessary. Add the following non-normative
- note to the end of 17.4.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a> paragraph 1:</p>
- <blockquote>
- [<i>Note:</i> A program may explicitly instantiate standard library
- templates, even when an explicit instantiation does not depend on
- a user-defined name. <i>--end note</i>]
- </blockquote>
-</blockquote>
-
-<p>The LWG rejected this because it was believed that it would make
- it unnecessarily difficult for library implementors to write
- high-quality implementations. A program may not include an
- explicit instantiation of the same template, for the same template
- arguments, in two different translation units. If users are
- allowed to provide explicit instantiations of Standard Library
- templates for built-in types, then library implementors aren't,
- at least not without nonportable tricks.</p>
-
-<p>The most serious problem is a class template that has writeable
- static member variables. Unfortunately, such class templates are
- important and, in existing Standard Library implementations, are
- often explicitly specialized by library implementors: locale facets,
- which have a writeable static member variable <tt>id</tt>. If a
- user's explicit instantiation collided with the implementations
- explicit instantiation, iostream initialization could cause locales
- to be constructed in an inconsistent state.</p>
-
-<p>One proposed implementation technique was for Standard Library
- implementors to provide explicit instantiations in separate object
- files, so that they would not be picked up by the linker when the
- user also provides an explicit instantiation. However, this
- technique only applies for Standard Library implementations that
- are packaged as static archives. Most Standard Library
- implementations nowadays are packaged as dynamic libraries, so this
- technique would not apply.</p>
-
-<p>The Committee is now considering standardization of dynamic
- linking. If there are such changes in the future, it may be
- appropriate to revisit this issue later.</p>
-<hr>
-<a name="130"><h3>130.&nbsp;Return type of container::erase(iterator) differs for associative containers</h3></a><p>
-<b>Section:</b>&nbsp;23.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>, 23.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;2 Mar 1999</p>
+<a name="130"><h3>130.&nbsp;Return type of container::erase(iterator) differs for associative containers</h3></a><p><b>Section:</b>&nbsp;23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>, 23.1.1 <a href="lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;2 Mar 1999</p>
<p>Table 67 (23.1.1) says that container::erase(iterator) returns an
iterator. Table 69 (23.1.2) says that in addition to this requirement,
associative containers also say that container::erase(iterator)
@@ -1096,99 +596,55 @@ fail to meet the requirements for containers.</p>
<p><b>Proposed resolution:</b></p>
<p>
-In 23.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>, in Table 69 Associative container
+In 23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>, in Table 69 Associative container
requirements, change the return type of <tt>a.erase(q)</tt> from
<tt>void</tt> to <tt>iterator</tt>. Change the
assertion/not/pre/post-condition from "erases the element pointed to
-by <tt>q</tt>" to "erases the element pointed to
-by <tt>q</tt> and returns the iterator immediately following
-<tt>q</tt> prior to the erasure."
+by <tt>q</tt>" to "erases the element pointed to by <tt>q</tt>.
+Returns an iterator pointing to the element immediately following q
+prior to the element being erased. If no such element exists, a.end()
+is returned."
</p>
<p>
-In 23.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.map"> [lib.map]</a>, in the <tt>map</tt> class synopsis; and
-in 23.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.multimap"> [lib.multimap]</a>, in the <tt>multimap</tt> class synopsis; and
-in 23.3.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.set"> [lib.set]</a>, in the <tt>set</tt> class synopsis; and
-in 23.3.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.multiset"> [lib.multiset]</a>, in the <tt>multiset</tt> class synopsis:
+In 23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>, in Table 69 Associative container
+requirements, change the return type of <tt>a.erase(q1, q2)</tt>
+from <tt>void</tt> to <tt>iterator</tt>. Change the
+assertion/not/pre/post-condition from "erases the elements in the
+range <tt>[q1, q2)</tt>" to "erases the elements in the range <tt>[q1,
+q2)</tt>. Returns an iterator pointing to the element immediately
+following q2 prior to any elements being erased. If no such element
+exists, a.end() is returned."
+</p>
+
+<p>
+In 23.3.1 <a href="lib-containers.html#lib.map"> [lib.map]</a>, in the <tt>map</tt> class synopsis; and
+in 23.3.2 <a href="lib-containers.html#lib.multimap"> [lib.multimap]</a>, in the <tt>multimap</tt> class synopsis; and
+in 23.3.3 <a href="lib-containers.html#lib.set"> [lib.set]</a>, in the <tt>set</tt> class synopsis; and
+in 23.3.4 <a href="lib-containers.html#lib.multiset"> [lib.multiset]</a>, in the <tt>multiset</tt> class synopsis:
change the signature of the first <tt>erase</tt> overload to
</p>
-<pre> iterator erase(iterator position);
+<pre>
+ iterator erase(iterator position);
</pre>
<p><i>[Pre-Kona: reopened at the request of Howard Hinnant]</i></p>
+
<p><i>[Post-Kona: the LWG agrees the return type should be
<tt>iterator</tt>, not <tt>void</tt>. (Alex Stepanov agrees too.)
Matt provided wording.]</i></p>
-<hr>
-<a name="167"><h3>167.&nbsp;Improper use of <tt>traits_type::length()</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;27.6.2.5.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.inserters.character"> [lib.ostream.inserters.character]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
-<p>Paragraph 4 states that the length is determined using
-<tt>traits::length(s)</tt>. Unfortunately, this function is not
-defined for example if the character type is <tt>wchar_t</tt> and the
-type of <tt>s</tt> is <tt>char const*</tt>. Similar problems exist if
-the character type is <tt>char</tt> and the type of <tt>s</tt> is
-either <tt>signed char const*</tt> or <tt>unsigned char
-const*</tt>.</p>
-<p><b>Proposed resolution:</b></p>
-<p>Change 27.6.2.5.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.inserters.character"> [lib.ostream.inserters.character]</a> paragraph 4 from:</p>
-<blockquote>
- <p>Effects: Behaves like an formatted inserter (as described in
- lib.ostream.formatted.reqmts) of out. After a sentry object is
- constructed it inserts characters. The number of characters starting
- at s to be inserted is traits::length(s). Padding is determined as
- described in lib.facet.num.put.virtuals. The traits::length(s)
- characters starting at s are widened using out.widen
- (lib.basic.ios.members). The widened characters and any required
- padding are inserted into out. Calls width(0).</p>
-</blockquote>
-<p>to:</p>
-<blockquote>
- <p>Effects: Behaves like a formatted inserter (as described in
- lib.ostream.formatted.reqmts) of out. After a sentry object is
- constructed it inserts <i>n</i> characters starting at <i>s</i>,
- where <i>n</i> is the number that would be computed as if by:</p>
- <ul>
- <li>traits::length(s) for the overload where the first argument is of
- type basic_ostream&lt;charT, traits&gt;&amp; and the second is
- of type const charT*, and also for the overload where the first
- argument is of type basic_ostream&lt;char, traits&gt;&amp; and
- the second is of type const char*.</li>
- <li>std::char_traits&lt;char&gt;::length(s)
- for the overload where the first argument is of type
- basic_ostream&lt;charT, traits&gt;&amp; and the second is of type
- const char*.</li>
- <li>traits::length(reinterpret_cast&lt;const char*&gt;(s))
- for the other two overloads.</li>
- </ul>
- <p>Padding is determined as described in
- lib.facet.num.put.virtuals. The <i>n</i> characters starting at
- <i>s</i> are widened using out.widen (lib.basic.ios.members). The
- widened characters and any required padding are inserted into
- out. Calls width(0).</p>
-</blockquote>
-
-<p><i>[Santa Cruz: Matt supplied new wording]</i></p>
-
-<p><i>[Kona: changed "where <i>n</i> is" to " where <i>n</i> is the
- number that would be computed as if by"]</i></p>
+<p><i>[
+ Sydney: the proposed wording went in the right direction, but it
+ wasn't good enough. We want to return an iterator from the range form
+ of erase as well as the single-iterator form. Also, the wording is
+ slightly different from the wording we have for sequences; there's no
+ good reason for having a difference. Matt provided new wording,
+ which we will review at the next meeting.
+]</i></p>
-<p><b>Rationale:</b></p>
-<p>We have five separate cases. In two of them we can use the
-user-supplied traits class without any fuss. In the other three we
-try to use something as close to that user-supplied class as possible.
-In two cases we've got a traits class that's appropriate for
-char and what we've got is a const signed char* or a const
-unsigned char*; that's close enough so we can just use a reinterpret
-cast, and continue to use the user-supplied traits class. Finally,
-there's one case where we just have to give up: where we've got a
-traits class for some arbitrary charT type, and we somehow have to
-deal with a const char*. There's nothing better to do but fall back
-to char_traits&lt;char&gt;</p>
<hr>
-<a name="197"><h3>197.&nbsp;max_size() underspecified</h3></a><p>
-<b>Section:</b>&nbsp;20.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>, 23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Andy Sawyer&nbsp; <b>Date:</b>&nbsp;21 Oct 1999</p>
+<a name="197"><h3>197.&nbsp;max_size() underspecified</h3></a><p><b>Section:</b>&nbsp;20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>, 23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Andy Sawyer&nbsp; <b>Date:</b>&nbsp;21 Oct 1999</p>
<p>Must the value returned by max_size() be unchanged from call to call? </p>
<p>Must the value returned from max_size() be meaningful? </p>
@@ -1220,21 +676,21 @@ into account the actual currently available resources). This,
obviously, has to be determined dynamically each time max_size() is
called. </p>
<p><b>Proposed resolution:</b></p>
-<p>Change 20.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a> table 32 max_size() wording from:<br>
+<p>Change 20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a> table 32 max_size() wording from:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the largest value that can meaningfully be
passed to X::allocate<br>
to:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the value of the largest constant expression
-(5.19 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/expr.html#expr.const"> [expr.const]</a>) that could ever meaningfully be passed to X::allocate</p>
+(5.19 <a href="expr.html#expr.const"> [expr.const]</a>) that could ever meaningfully be passed to X::allocate</p>
<p>
-Change 23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> table 65 max_size() wording from:<br>
+Change 23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> table 65 max_size() wording from:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; size() of the largest possible container.<br>
to:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the value of the largest constant expression
-(5.19 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/expr.html#expr.const"> [expr.const]</a>) that could ever meaningfully be returned by X::size().
+(5.19 <a href="expr.html#expr.const"> [expr.const]</a>) that could ever meaningfully be returned by X::size().
</p>
<p><i>[Kona: The LWG informally discussed this and asked Andy Sawyer to submit
@@ -1243,7 +699,7 @@ an issue.]</i></p>
<p><i>[Tokyo: The LWG believes (1) above is the intended meaning.]</i></p>
<p><i>[Post-Tokyo: Beman Dawes supplied the above resolution at the
-request of the LWG. 21.3.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.capacity"> [lib.string.capacity]</a> was not changed because it
+request of the LWG. 21.3.3 <a href="lib-strings.html#lib.string.capacity"> [lib.string.capacity]</a> was not changed because it
references max_size() in 23.1. The term "compile-time" was
avoided because it is not defined anywhere in the standard (even
though it is used several places in the library clauses).]</i></p>
@@ -1254,8 +710,7 @@ function than as an allocator member function. For the latter,
it is probably best thought of as an architectural limit.
Nathan will provide new wording.]</i></p>
<hr>
-<a name="201"><h3>201.&nbsp;Numeric limits terminology wrong</h3></a><p>
-<b>Section:</b>&nbsp;18.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.limits"> [lib.limits]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Stephen Cleary&nbsp; <b>Date:</b>&nbsp;21 Dec 1999</p>
+<a name="201"><h3>201.&nbsp;Numeric limits terminology wrong</h3></a><p><b>Section:</b>&nbsp;18.2.1 <a href="lib-support.html#lib.limits"> [lib.limits]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Stephen Cleary&nbsp; <b>Date:</b>&nbsp;21 Dec 1999</p>
<p>
In some places in this section, the terms "fundamental types" and
"scalar types" are used when the term "arithmetic types" is intended.
@@ -1267,34 +722,26 @@ specializations of numeric_limits.
<p>Change 18.2 [lib.support.limits] para 1 from:</p>
<blockquote>
-<p> The headers &lt;limits&gt;, &lt;climits&gt;, and &lt;cfloat&gt;
-supply characteristics of implementation-dependent fundamental types
-(3.9.1).</p>
+<p> The headers &lt;limits&gt;, &lt;climits&gt;, and &lt;cfloat&gt; supply characteristics of implementation-dependent fundamental types (3.9.1).</p>
</blockquote>
<p>to:</p>
<blockquote>
-<p> The headers &lt;limits&gt;, &lt;climits&gt;, and &lt;cfloat&gt;
-supply characteristics of implementation-dependent arithmetic types
-(3.9.1).</p>
+<p> The headers &lt;limits&gt;, &lt;climits&gt;, and &lt;cfloat&gt; supply characteristics of implementation-dependent arithmetic types (3.9.1).</p>
</blockquote>
<p>Change 18.2.1 [lib.limits] para 1 from:</p>
<blockquote>
-<p> The numeric_limits component provides a C++ program with
-information about various properties of the implementation's
-representation of the fundamental
+<p> The numeric_limits component provides a C++ program with information about various properties of the implementation's representation of the fundamental
types.</p>
</blockquote>
<p>to:</p>
<blockquote>
-<p> The numeric_limits component provides a C++ program with
-information about various properties of the implementation's
-representation of the arithmetic
+<p> The numeric_limits component provides a C++ program with information about various properties of the implementation's representation of the arithmetic
types.</p>
</blockquote>
@@ -1325,17 +772,14 @@ types.</p>
<p>Change 18.2.1.1 [lib.numeric.limits] para 1 from:</p>
<blockquote>
-<p> The member is_specialized makes it possible to distinguish between
-fundamental types, which have specializations, and non-scalar types,
-which
+<p> The member is_specialized makes it possible to distinguish between fundamental types, which have specializations, and non-scalar types, which
do not.</p>
</blockquote>
<p>to:</p>
<blockquote>
-<p> The member is_specialized makes it possible to distinguish between
-arithmetic types, which have specializations, and non-arithmetic types,
+<p> The member is_specialized makes it possible to distinguish between arithmetic types, which have specializations, and non-arithmetic types,
which do not.</p>
</blockquote>
@@ -1350,178 +794,7 @@ types and for user-defined types, and the standard doesn't make it
clear how numeric_limits applies to each of those cases. A wholesale
review of numeric_limits is needed. A paper would be welcome.]</i></p>
<hr>
-<a name="226"><h3>226.&nbsp;User supplied specializations or overloads of namespace std function templates</h3></a><p>
-<b>Section:</b>&nbsp;17.4.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;01 Apr 2000</p>
-<p>The issues are:&nbsp;</p>
-<p>1. How can a 3rd party library implementor (lib1) write a version of a standard
-algorithm which is specialized to work with his own class template?&nbsp;</p>
-<p>2. How can another library implementor (lib2) write a generic algorithm which
-will take advantage of the specialized algorithm in lib1?</p>
-<p>This appears to be the only viable answer under current language rules:</p>
-<blockquote>
- <pre>namespace lib1
-{
- // arbitrary-precision numbers using T as a basic unit
- template &lt;class T&gt;
- class big_num { //...
- };
- </pre>
- <pre> // defining this in namespace std is illegal (it would be an
- // overload), so we hope users will rely on Koenig lookup
- template &lt;class T&gt;
- void swap(big_int&lt;T&gt;&amp;, big_int&lt;T&gt;&amp;);
-}</pre>
- <pre>#include &lt;algorithm&gt;
-namespace lib2
-{
- template &lt;class T&gt;
- void generic_sort(T* start, T* end)
- {
- ...
- // using-declaration required so we can work on built-in types
- using std::swap;
- // use Koenig lookup to find specialized algorithm if available
- swap(*x, *y);
- }
-}</pre>
-</blockquote>
-<p>This answer has some drawbacks. First of all, it makes writing lib2 difficult
-and somewhat slippery. The implementor needs to remember to write the
-using-declaration, or generic_sort will fail to compile when T is a built-in
-type. The second drawback is that the use of this style in lib2 effectively
-"reserves" names in any namespace which defines types which may
-eventually be used with lib2. This may seem innocuous at first when applied to
-names like swap, but consider more ambiguous names like unique_copy() instead.
-It is easy to imagine the user wanting to define these names differently in his
-own namespace. A definition with semantics incompatible with the standard
-library could cause serious problems (see issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#225">225</a>).</p>
-<p>Why, you may ask, can't we just partially specialize std::swap()? It's
-because the language doesn't allow for partial specialization of function
-templates. If you write:</p>
-<blockquote>
- <pre>namespace std
-{
- template &lt;class T&gt;
- void swap(lib1::big_int&lt;T&gt;&amp;, lib1::big_int&lt;T&gt;&amp;);
-}</pre>
-</blockquote>
-<p>You have just overloaded std::swap, which is illegal under the current
-language rules. On the other hand, the following full specialization is legal:</p>
-<blockquote>
- <pre>namespace std
-{
- template &lt;&gt;
- void swap(lib1::other_type&amp;, lib1::other_type&amp;);
-}</pre>
-</blockquote>
-
-<p>This issue reflects concerns raised by the "Namespace issue
-with specialized swap" thread on comp.lang.c++.moderated. A
-similar set of concerns was earlier raised on the boost.org mailing
-list and the ACCU-general mailing list. Also see library reflector
-message c++std-lib-7354.</p>
-
-<p>
-J. C. van Winkel points out (in c++std-lib-9565) another unexpected
-fact: it's impossible to output a container of std::pair's using copy
-and an ostream_iterator, as long as both pair-members are built-in or
-std:: types. That's because a user-defined operator&lt;&lt; for (for
-example) std::pair&lt;const std::string, int&gt; will not be found:
-lookup for operator&lt;&lt; will be performed only in namespace std.
-Opinions differed on whether or not this was a defect, and, if so,
-whether the defect is that something is wrong with user-defined
-functionality and std, or whether it's that the standard library does
-not provide an operator&lt;&lt; for std::pair&lt;&gt;.
-</p>
-
-<p><b>Proposed resolution:</b></p>
-
-<p>Adopt the wording proposed in Howard Hinnant's paper
- N1523=03-0106, "Proposed Resolution To LWG issues 225, 226, 229".</p>
-
-
-<p><i>[Tokyo: Summary, "There is no conforming way to extend
-std::swap for user defined templates."&nbsp; The LWG agrees that
-there is a problem. Would like more information before
-proceeding. This may be a core issue. Core issue 229 has been opened
-to discuss the core aspects of this problem. It was also noted that
-submissions regarding this issue have been received from several
-sources, but too late to be integrated into the issues list.
-]</i></p>
-
-<p><i>[Post-Tokyo: A paper with several proposed resolutions,
-J16/00-0029==WG21/N1252, "Shades of namespace std functions
-" by Alan Griffiths, is in the Post-Tokyo mailing. It
-should be considered a part of this issue.]</i></p>
-
-<p><i>[Toronto: Dave Abrahams and Peter Dimov have proposed a
-resolution that involves core changes: it would add partial
-specialization of function template. The Core Working Group is
-reluctant to add partial specialization of function templates. It is
-viewed as a large change, CWG believes that proposal presented leaves
-some syntactic issues unanswered; if the CWG does add partial
-specialization of function templates, it wishes to develop its own
-proposal. The LWG continues to believe that there is a serious
-problem: there is no good way for users to force the library to use
-user specializations of generic standard library functions, and in
-certain cases (e.g. transcendental functions called by
-<tt>valarray</tt> and <tt>complex</tt>) this is important. Koenig
-lookup isn't adequate, since names within the library must be
-qualified with <tt>std</tt> (see issue 225), specialization doesn't
-work (we don't have partial specialization of function templates), and
-users aren't permitted to add overloads within namespace std.
-]</i></p>
-
-<p><i>[Copenhagen: Discussed at length, with no consensus. Relevant
-papers in the pre-Copenhagen mailing: N1289, N1295, N1296. Discussion
-focused on four options. (1) Relax restrictions on overloads within
-namespace std. (2) Mandate that the standard library use unqualified
-calls for <tt>swap</tt> and possibly other functions. (3) Introduce
-helper class templates for <tt>swap</tt> and possibly other functions.
-(4) Introduce partial specialization of function templates. Every
-option had both support and opposition. Straw poll (first number is
-support, second is strongly opposed): (1) 6, 4; (2) 6, 7; (3) 3, 8;
-(4) 4, 4.]</i></p>
-
-<p><i>[Redmond: Discussed, again no consensus. Herb presented an
-argument that a user who is defining a type <tt>T</tt> with an
-associated <tt>swap</tt> should not be expected to put that
-<tt>swap</tt> in namespace std, either by overloading or by partial
-specialization. The argument is that <tt>swap</tt> is part of
-<tt>T</tt>'s interface, and thus should to in the same namespace as
-<tt>T</tt> and only in that namespace. If we accept this argument,
-the consequence is that standard library functions should use
-unqualified call of <tt>swap</tt>. (And which other functions? Any?)
-A small group (Nathan, Howard, Jeremy, Dave, Matt, Walter, Marc) will
-try to put together a proposal before the next meeting.]</i></p>
-
-<p><i>[Curaçao: An LWG-subgroup spent an afternoon working on issues
-225, 226, and 229. Their conclusion was that the issues should be
-separated into an LWG portion (Howard's paper, N1387=02-0045), and a
-EWG portion (Dave will write a proposal). The LWG and EWG had
-(separate) discussions of this plan the next day. The proposed
-resolution is the one proposed by Howard.]</i></p>
-
-<p><i>[Santa Cruz: the LWG agreed with the general direction of
- Howard's paper, N1387. (Roughly: Koenig lookup is disabled unless
- we say otherwise; this issue is about when we do say otherwise.)
- However, there were concerns about wording. Howard will provide new
- wording. Bill and Jeremy will review it.]</i></p>
-
-<p><i>[Kona: Howard proposed the new wording. The LWG accepted his
- proposed resolution.]</i></p>
-
-<p><b>Rationale:</b></p>
-<p>Informally: introduce a Swappable concept, and specify that the
- value types of the iterators passed to certain standard algorithms
- (such as iter_swap, swap_ranges, reverse, rotate, and sort) conform
- to that concept. The Swappable concept will make it clear that
- these algorithms use unqualified lookup for the calls
- to <tt>swap</tt>. Also, in 26.3.3.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.valarray.transcend"> [lib.valarray.transcend]</a> paragraph 1,
- state that the valarray transcendentals use unqualified lookup.</p>
-<hr>
-<a name="233"><h3>233.&nbsp;Insertion hints in associative containers</h3></a><p>
-<b>Section:</b>&nbsp;23.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;30 Apr 2000</p>
+<a name="233"><h3>233.&nbsp;Insertion hints in associative containers</h3></a><p><b>Section:</b>&nbsp;23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;30 Apr 2000</p>
<p>
If <tt>mm</tt> is a multimap and <tt>p</tt> is an iterator
into the multimap, then <tt>mm.insert(p, x)</tt> inserts
@@ -1543,8 +816,7 @@ can supply <tt>p</tt>, and the implementation is allowed to
disregard it entirely.
</p>
-<p>
-<b>Additional comments from Nathan:</b><br>
+<p><b>Additional comments from Nathan:</b><br>
The vote [in Redmond] was on whether to elaborately specify the use of
the hint, or to require behavior only if the value could be inserted
@@ -1557,7 +829,7 @@ proposed "before or after, if possible, otherwise [...]".
<p><b>Proposed resolution:</b></p>
-<p>In table 69 "Associative Container Requirements" in 23.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>, in the row for <tt>a.insert(p, t)</tt>,
+<p>In table 69 "Associative Container Requirements" in 23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>, in the row for <tt>a.insert(p, t)</tt>,
change</p>
<blockquote>
@@ -1614,12 +886,11 @@ you can do it efficiently enough with a red-black tree, but there are
other (perhaps better) balanced tree techniques that might differ
enough to make the detailed semantics hard to satisfy."]</i></p>
-<p><i>[Curaçao: Nathan should give us the alternative wording he
+<p><i>[Cura&ccedil;ao: Nathan should give us the alternative wording he
suggests so the LWG can decide between the two options.]</i></p>
<hr>
-<a name="247"><h3>247.&nbsp;<tt>vector</tt>, <tt>deque::insert</tt> complexity</h3></a><p>
-<b>Section:</b>&nbsp;23.2.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.modifiers"> [lib.vector.modifiers]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Lisa Lippincott&nbsp; <b>Date:</b>&nbsp;06 June 2000</p>
+<a name="247"><h3>247.&nbsp;<tt>vector</tt>, <tt>deque::insert</tt> complexity</h3></a><p><b>Section:</b>&nbsp;23.2.4.3 <a href="lib-containers.html#lib.vector.modifiers"> [lib.vector.modifiers]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Lisa Lippincott&nbsp; <b>Date:</b>&nbsp;06 June 2000</p>
<p>Paragraph 2 of 23.2.4.3 [lib.vector.modifiers] describes the complexity
of <tt>vector::insert</tt>:</p>
@@ -1652,7 +923,7 @@ inserting at the end of the <tt>vector</tt>, and then using
<p>I looked to see if <tt>deque</tt> had a similar problem, and was
surprised to find that <tt>deque</tt> places no requirement on the
-complexity of inserting multiple elements (23.2.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.deque.modifiers"> [lib.deque.modifiers]</a>,
+complexity of inserting multiple elements (23.2.1.3 <a href="lib-containers.html#lib.deque.modifiers"> [lib.deque.modifiers]</a>,
paragraph 3):</p>
<blockquote>
@@ -1688,160 +959,150 @@ requirements that would imply any implementation technique more
complicated than a while loop whose body is a single-element
insert.]</i></p>
<hr>
-<a name="253"><h3>253.&nbsp;valarray helper functions are almost entirely useless</h3></a><p>
-<b>Section:</b>&nbsp;26.3.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.valarray.cons"> [lib.valarray.cons]</a>, 26.3.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.valarray.assign"> [lib.valarray.assign]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Robert Klarer&nbsp; <b>Date:</b>&nbsp;31 Jul 2000</p>
-<p>This discussion is adapted from message c++std-lib-7056 posted
-November 11, 1999. I don't think that anyone can reasonably claim
-that the problem described below is NAD.</p>
-
-<p>These valarray constructors can never be called:</p>
-
-<pre> template &lt;class T&gt;
- valarray&lt;T&gt;::valarray(const slice_array&lt;T&gt; &amp;);
- template &lt;class T&gt;
- valarray&lt;T&gt;::valarray(const gslice_array&lt;T&gt; &amp;);
- template &lt;class T&gt;
- valarray&lt;T&gt;::valarray(const mask_array&lt;T&gt; &amp;);
- template &lt;class T&gt;
- valarray&lt;T&gt;::valarray(const indirect_array&lt;T&gt; &amp;);
-</pre>
+<a name="254"><h3>254.&nbsp;Exception types in clause 19 are constructed from <tt>std::string</tt>
+</h3></a><p><b>Section:</b>&nbsp;19.1 <a href="lib-diagnostics.html#lib.std.exceptions"> [lib.std.exceptions]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;01 Aug 2000</p>
+<p>
+Many of the standard exception types which implementations are
+required to throw are constructed with a const std::string&amp;
+parameter. For example:
+</p>
-<p>Similarly, these valarray assignment operators cannot be
-called:</p>
-
-<pre> template &lt;class T&gt;
- valarray&lt;T&gt; valarray&lt;T&gt;::operator=(const slice_array&lt;T&gt; &amp;);
- template &lt;class T&gt;
- valarray&lt;T&gt; valarray&lt;T&gt;::operator=(const gslice_array&lt;T&gt; &amp;);
- template &lt;class T&gt;
- valarray&lt;T&gt; valarray&lt;T&gt;::operator=(const mask_array&lt;T&gt; &amp;);
- template &lt;class T&gt;
- valarray&lt;T&gt; valarray&lt;T&gt;::operator=(const indirect_array&lt;T&gt; &amp;);
+<pre>
+ 19.1.5 Class out_of_range [lib.out.of.range]
+ namespace std {
+ class out_of_range : public logic_error {
+ public:
+ explicit out_of_range(const string&amp; what_arg);
+ };
+ }
+
+ 1 The class out_of_range defines the type of objects thrown as excep-
+ tions to report an argument value not in its expected range.
+
+ out_of_range(const string&amp; what_arg);
+
+ Effects:
+ Constructs an object of class out_of_range.
+ Postcondition:
+ strcmp(what(), what_arg.c_str()) == 0.
</pre>
-<p>Please consider the following example:</p>
+<p>
+There are at least two problems with this:
+</p>
+<ol>
+<li>A program which is low on memory may end up throwing
+std::bad_alloc instead of out_of_range because memory runs out while
+constructing the exception object.</li>
+<li>An obvious implementation which stores a std::string data member
+may end up invoking terminate() during exception unwinding because the
+exception object allocates memory (or rather fails to) as it is being
+copied.</li>
+</ol>
-<pre> #include &lt;valarray&gt;
- using namespace std;
+<p>
+There may be no cure for (1) other than changing the interface to
+out_of_range, though one could reasonably argue that (1) is not a
+defect. Personally I don't care that much if out-of-memory is reported
+when I only have 20 bytes left, in the case when out_of_range would
+have been reported. People who use exception-specifications might care
+a lot, though.
+</p>
- int main()
- {
- valarray&lt;double&gt; va1(12);
- valarray&lt;double&gt; va2(va1[slice(1,4,3)]); // line 1
- }
-</pre>
+<p>
+There is a cure for (2), but it isn't completely obvious. I think a
+note for implementors should be made in the standard. Avoiding
+possible termination in this case shouldn't be left up to chance. The
+cure is to use a reference-counted "string" implementation
+in the exception object. I am not necessarily referring to a
+std::string here; any simple reference-counting scheme for a NTBS
+would do.
+</p>
+<p><b>Further discussion, in email:</b></p>
-<p>Since the valarray va1 is non-const, the result of the sub-expression
-va1[slice(1,4,3)] at line 1 is an rvalue of type const
-std::slice_array&lt;double&gt;. This slice_array rvalue is then used to
-construct va2. The constructor that is used to construct va2 is
-declared like this:</p>
+<p>
+...I'm not so concerned about (1). After all, a library implementation
+can add const char* constructors as an extension, and users don't
+<i>need</i> to avail themselves of the standard exceptions, though this is
+a lame position to be forced into. FWIW, std::exception and
+std::bad_alloc don't require a temporary basic_string.
+</p>
-<pre> template &lt;class T&gt;
- valarray&lt;T&gt;::valarray(const slice_array&lt;T&gt; &amp;);
-</pre>
+<p>
+...I don't think the fixed-size buffer is a solution to the problem,
+strictly speaking, because you can't satisfy the postcondition
+<br>
+ <tt>&nbsp;&nbsp;strcmp(what(), what_arg.c_str()) == 0</tt>
+<br>
+For all values of what_arg (i.e. very long values). That means that
+the only truly conforming solution requires a dynamic allocation.
+</p>
-<p>Notice the constructor's const reference parameter. When the
-constructor is called, a slice_array must be bound to this reference.
-The rules for binding an rvalue to a const reference are in 8.5.3,
-paragraph 5 (see also 13.3.3.1.4). Specifically, paragraph 5
-indicates that a second slice_array rvalue is constructed (in this
-case copy-constructed) from the first one; it is this second rvalue
-that is bound to the reference parameter. Paragraph 5 also requires
-that the constructor that is used for this purpose be callable,
-regardless of whether the second rvalue is elided. The
-copy-constructor in this case is not callable, however, because it is
-private. Therefore, the compiler should report an error.</p>
-
-<p>Since slice_arrays are always rvalues, the valarray constructor that has a
-parameter of type const slice_array&lt;T&gt; &amp; can never be called. The
-same reasoning applies to the three other constructors and the four
-assignment operators that are listed at the beginning of this post.
-Furthermore, since these functions cannot be called, the valarray helper
-classes are almost entirely useless.</p>
-<p><b>Proposed resolution:</b></p>
-<p>slice_array:</p>
-<ul>
-<li> Make the copy constructor and copy-assignment operator declarations
- public in the slice_array class template definition in 26.3.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.slice.array"> [lib.template.slice.array]</a> </li>
-<li> remove paragraph 3 of 26.3.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.slice.array"> [lib.template.slice.array]</a>
-</li>
-<li> remove the copy constructor declaration from 26.3.5.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.cons.slice.arr"> [lib.cons.slice.arr]</a>
-</li>
-<li> change paragraph 1 of 26.3.5.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.cons.slice.arr"> [lib.cons.slice.arr]</a> to read "This constructor is declared
- to be private. This constructor need not be defined."</li>
-<li> remove the first sentence of paragraph 1 of 26.3.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.slice.arr.assign"> [lib.slice.arr.assign]</a>
-</li>
-<li> Change the first three words of the second sentence of paragraph 1 of
- 26.3.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.slice.arr.assign"> [lib.slice.arr.assign]</a> to "These assignment operators have"</li>
-</ul>
+<p><b>Further discussion, from Redmond:</b></p>
-<p>gslice_array:</p>
-<ul>
-<li> Make the copy constructor and copy-assignment operator declarations
- public in the gslice_array class template definition in 26.3.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.gslice.array"> [lib.template.gslice.array]</a> </li>
-<li> remove the note in paragraph 3 of 26.3.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.gslice.array"> [lib.template.gslice.array]</a>
-</li>
-<li> remove the copy constructor declaration from 26.3.7.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.gslice.array.cons"> [lib.gslice.array.cons]</a>
-</li>
-<li> change paragraph 1 of 26.3.7.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.gslice.array.cons"> [lib.gslice.array.cons]</a> to read "This constructor is declared
- to be private. This constructor need not be defined."</li>
-<li> remove the first sentence of paragraph 1 of 26.3.7.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.gslice.array.assign"> [lib.gslice.array.assign]</a>
-</li>
-<li> Change the first three words of the second sentence of paragraph 1 of
- 26.3.7.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.gslice.array.assign"> [lib.gslice.array.assign]</a> to "These assignment operators have"</li>
-</ul>
+<p>The most important progress we made at the Redmond meeting was
+realizing that there are two separable issues here: the const
+string&amp; constructor, and the copy constructor. If a user writes
+something like <tt>throw std::out_of_range("foo")</tt>, the const
+string&amp; constructor is invoked before anything gets thrown. The
+copy constructor is potentially invoked during stack unwinding.</p>
-<p>mask_array:</p>
-<ul>
-<li> Make the copy constructor and copy-assignment operator declarations
- public in the mask_array class template definition in 26.3.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.mask.array"> [lib.template.mask.array]</a> </li>
-<li> remove the note in paragraph 2 of 26.3.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.mask.array"> [lib.template.mask.array]</a>
-</li>
-<li> remove the copy constructor declaration from 26.3.8.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.mask.array.cons"> [lib.mask.array.cons]</a>
-</li>
-<li> change paragraph 1 of 26.3.8.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.mask.array.cons"> [lib.mask.array.cons]</a> to read "This constructor is declared
- to be private. This constructor need not be defined."</li>
-<li> remove the first sentence of paragraph 1 of 26.3.8.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.mask.array.assign"> [lib.mask.array.assign]</a>
-</li>
-<li> Change the first three words of the second sentence of paragraph 1 of
- 26.3.8.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.mask.array.assign"> [lib.mask.array.assign]</a> to "These assignment operators have"</li>
-</ul>
+<p>The copy constructor is a more serious problem, becuase failure
+during stack unwinding invokes <tt>terminate</tt>. The copy
+constructor must be nothrow. <i>Cura&ccedil;ao: Howard thinks this
+requirement is already present.</i></p>
+
+<p>The fundamental problem is that it's difficult to get the nothrow
+requirement to work well with the requirement that the exception
+objects store a string of unbounded size, particularly if you also try
+to make the const string&amp; constructor nothrow. Options discussed
+include:</p>
-<p>indirect_array:</p>
<ul>
-<li>Make the copy constructor and copy-assignment operator declarations
- public in the indirect_array class definition in 26.3.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.indirect.array"> [lib.template.indirect.array]</a>
-</li>
-<li> remove the note in paragraph 2 of 26.3.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.indirect.array"> [lib.template.indirect.array]</a>
-</li>
-<li> remove the copy constructor declaration from 26.3.9.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.indirect.array.cons"> [lib.indirect.array.cons]</a>
-</li>
-<li> change the descriptive text in 26.3.9.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.indirect.array.cons"> [lib.indirect.array.cons]</a> to read "This constructor is
- declared to be private. This constructor need not be defined."</li>
-<li> remove the first sentence of paragraph 1 of 26.3.9.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.indirect.array.assign"> [lib.indirect.array.assign]</a>
-</li>
-<li> Change the first three words of the second sentence of paragraph 1 of
- 26.3.9.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.indirect.array.assign"> [lib.indirect.array.assign]</a> to "These assignment operators have"</li>
+<li>Limit the size of a string that exception objects are required to
+throw: change the postconditions of 19.1.2 <a href="lib-diagnostics.html#lib.domain.error"> [lib.domain.error]</a> paragraph 3
+and 19.1.6 <a href="lib-diagnostics.html#lib.runtime.error"> [lib.runtime.error]</a> paragraph 3 to something like this:
+"strncmp(what(), what_arg._str(), N) == 0, where N is an
+implementation defined constant no smaller than 256".</li>
+<li>Allow the const string&amp; constructor to throw, but not the
+copy constructor. It's the implementor's responsibility to get it
+right. (An implementor might use a simple refcount class.)</li>
+<li>Compromise between the two: an implementation is not allowed to
+throw if the string's length is less than some N, but, if it doesn't
+throw, the string must compare equal to the argument.</li>
+<li>Add a new constructor that takes a const char*</li>
</ul>
-<p><i>[Proposed resolution was modified in Santa Cruz: explicitly make
-copy constructor and copy assignment operators public, instead of
-removing them.]</i></p>
+
+<p>(Not all of these options are mutually exclusive.)</p>
+
+<p><b>Proposed resolution:</b></p>
<p><b>Rationale:</b></p>
-<p>Keeping the valarray constructors private is untenable. Merely
-making valarray a friend of the helper classes isn't good enough,
-because access to the copy constructor is checked in the user's
-environment.</p>
-
-<p>Making the assignment operator public is not strictly necessary to
-solve this problem. A majority of the LWG <i>(straw poll: 13-4)</i>
-believed we should make the assignment operators public, in addition
-to the copy constructors, for reasons of symmetry and user
-expectation.</p>
+
+<p>Throwing a bad_alloc while trying to construct a message for another
+exception-derived class is not necessarily a bad thing. And the
+bad_alloc constructor already has a no throw spec on it (18.4.2.1).</p>
+
+<p>
+The copy constructors of all exception-derived classes already have a
+no throw spec. Reference 18.6.1, 19.1 and 15.4/13.
+</p>
+
+<p><b>Future:</b></p>
+
+<p>All involved would like to see const char* constructors added, but
+this should probably be done for C++0X as opposed to a DR.</p>
+
+<p>I believe the no throw specs currently decorating these functions
+could be improved by some kind of static no throw spec checking
+mechanism (in a future C++ language). As they stand, the copy
+constructors might fail via a call to unexpected. I think what is
+intended here is that the copy constructors can't fail.</p>
+
+<p><i>[Pre-Sydney: reopened at the request of Howard Hinnant.]</i></p>
+
<hr>
-<a name="258"><h3>258.&nbsp;Missing allocator requirement</h3></a><p>
-<b>Section:</b>&nbsp;20.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;22 Aug 2000</p>
+<a name="258"><h3>258.&nbsp;Missing allocator requirement</h3></a><p><b>Section:</b>&nbsp;20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;22 Aug 2000</p>
<p>
From lib-7752:
</p>
@@ -1910,11 +1171,10 @@ the second line from the bottom in table 32 already implies the
desired property. This issue should be considered in light of
other issues related to allocator instances.]</i></p>
<hr>
-<a name="280"><h3>280.&nbsp;Comparison of reverse_iterator to const reverse_iterator</h3></a><p>
-<b>Section:</b>&nbsp;24.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.reverse.iterators"> [lib.reverse.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Cleary&nbsp; <b>Date:</b>&nbsp;27 Nov 2000</p>
+<a name="280"><h3>280.&nbsp;Comparison of reverse_iterator to const reverse_iterator</h3></a><p><b>Section:</b>&nbsp;24.4.1 <a href="lib-iterators.html#lib.reverse.iterators"> [lib.reverse.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Cleary&nbsp; <b>Date:</b>&nbsp;27 Nov 2000</p>
<p>
This came from an email from Steve Cleary to Fergus in reference to
-issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#179">179</a>. The library working group briefly discussed
+issue <a href="lwg-defects.html#179">179</a>. The library working group briefly discussed
this in Toronto and believed it should be a separate issue. There was
also some reservations about whether this was a worthwhile problem to
fix.
@@ -1935,9 +1195,10 @@ that, I don't see how <i>any</i> user code could break."
</p>
<p><b>Proposed resolution:</b></p>
<p>
-<b>Section:</b> 24.4.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.reverse.iterator"> [lib.reverse.iterator]</a>
+<b>Section:</b> 24.4.1.1 <a href="lib-iterators.html#lib.reverse.iterator"> [lib.reverse.iterator]</a>
add/change the following declarations:</p>
-<pre> A) Add a templated assignment operator, after the same manner
+<pre>
+ A) Add a templated assignment operator, after the same manner
as the templated copy constructor, i.e.:
template &lt; class U &gt;
@@ -1961,7 +1222,7 @@ add/change the following declarations:</p>
</pre>
<p>
Also make the addition/changes for these signatures in
-24.4.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.reverse.iter.ops"> [lib.reverse.iter.ops]</a>.
+24.4.1.3 <a href="lib-iterators.html#lib.reverse.iter.ops"> [lib.reverse.iter.ops]</a>.
</p>
<p><i>[
@@ -1973,156 +1234,7 @@ desirable to provide this feature in a different way.
]</i></p>
<hr>
-<a name="283"><h3>283.&nbsp;std::replace() requirement incorrect/insufficient</h3></a><p>
-<b>Section:</b>&nbsp;25.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.replace"> [lib.alg.replace]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;15 Dec 2000</p>
-<p>
-(revision of the further discussion)
-There are a number of problems with the requires clauses for the
-algorithms in 25.1 and 25.2. The requires clause of each algorithm
-should describe the necessary and sufficient requirements on the inputs
-to the algorithm such that the algorithm compiles and runs properly.
-Many of the requires clauses fail to do this. Here is a summary of the kinds
-of mistakes:
-</p>
-
-<ol>
-<li>
-Use of EqualityComparable, which only puts requirements on a single
-type, when in fact an equality operator is required between two
-different types, typically either T and the iterator's value type
-or between the value types of two different iterators.
-</li>
-<li>
-Use of Assignable for T when in fact what was needed is Assignable
-for the value_type of the iterator, and convertability from T to the
-value_type of the iterator. Or for output iterators, the requirement
-should be that T is writable to the iterator (output iterators do
-not have value types).
-</li>
-</ol>
-
-<p>
-Here is the list of algorithms that contain mistakes:
-</p>
-
-<ul>
-<li>25.1.2 std::find</li>
-<li>25.1.6 std::count</li>
-<li>25.1.8 std::equal</li>
-<li>25.1.9 std::search, std::search_n</li>
-<li>25.2.4 std::replace, std::replace_copy</li>
-<li>25.2.5 std::fill</li>
-<li>25.2.7 std::remove, std::remove_copy</li>
-</ul>
-
-<p>
-Also, in the requirements for EqualityComparable, the requirement that
-the operator be defined for const objects is lacking.
-</p>
-
-<p><b>Proposed resolution:</b></p>
-
-<p>20.1.1 Change p1 from</p>
-
-<p>In Table 28, <tt>T</tt> is a type to be supplied by a C++ program
-instantiating a template, <tt>a</tt>, <tt>b</tt>, and <tt>c</tt> are
-values of type <tt>T</tt>.
-</p>
-
-<p>to</p>
-
-<p>
-In Table 28, <tt>T</tt> is a type to be supplied by a C++ program
-instantiating a template, <tt>a</tt>, <tt>b</tt>, and <tt>c</tt> are
-values of type <tt>const T</tt>.
-</p>
-
-<p>25 Between p8 and p9</p>
-
-<p>Add the following sentence:</p>
-
-<p>When the description of an algorithm gives an expression such as
-<tt>*first == value</tt> for a condition, it is required that the expression
-evaluate to either true or false in boolean contexts.</p>
-
-<p>25.1.2 Change p1 by deleting the requires clause.</p>
-
-<p>25.1.6 Change p1 by deleting the requires clause.</p>
-
-<p>25.1.9</p>
-
-<p>Change p4 from</p>
-
-<p>-4- Requires: Type <tt>T</tt> is <tt>EqualityComparable</tt>
-(20.1.1), type Size is convertible to integral type (4.7.12.3).
-</p>
-
-<p>to</p>
-
-<p>-4- Requires: The type <tt>Size</tt> is convertible to integral
-type (4.7.12.3).</p>
-
-<p>25.2.4 Change p1 from</p>
-
-<p>-1- Requires: Type <tt>T</tt> is <tt>Assignable</tt> (23.1 ) (and, for <tt>replace()</tt>, <tt>EqualityComparable</tt> (20.1.1 )).</p>
-
-<p>to</p>
-
-<p>-1- Requires: The expression <tt>*first = new_value</tt> must be valid.</p>
-
-<p>and change p4 from</p>
-
-<p>-4- Requires: Type <tt>T</tt> is <tt>Assignable</tt> (23.1) (and,
-for <tt>replace_copy()</tt>, <tt>EqualityComparable</tt>
-(20.1.1)). The ranges <tt>[first, last)</tt> and <tt>[result, result +
-(last - first))</tt> shall not overlap.</p>
-
-<p>to</p>
-
-<p>-4- Requires: The results of the expressions <tt>*first</tt> and
-<tt>new_value</tt> must be writable to the result output iterator. The
-ranges <tt>[first, last)</tt> and <tt>[result, result + (last -
-first))</tt> shall not overlap.</p>
-
-
-<p>25.2.5 Change p1 from</p>
-
-<p>-1- Requires: Type <tt>T</tt> is <tt>Assignable</tt> (23.1). The
-type <tt>Size</tt> is convertible to an integral type (4.7.12.3).</p>
-
-<p>to</p>
-
-<p>-1- Requires: The expression <tt>value</tt> must be is writable to
-the output iterator. The type <tt>Size</tt> is convertible to an
-integral type (4.7.12.3).</p>
-
-<p>25.2.7 Change p1 from</p>
-
-<p>-1- Requires: Type <tt>T</tt> is <tt>EqualityComparable</tt> (20.1.1).</p>
-
-<p>to</p>
-
-<p>
--1- Requires: The value type of the iterator must be
-<tt>Assignable</tt> (23.1).
-</p>
-
-<p><b>Rationale:</b></p>
-<p>
-The general idea of the proposed solution is to remove the faulty
-requires clauses and let the returns and effects clauses speak for
-themselves. That is, the returns clauses contain expressions that must
-be valid, and therefore already imply the correct requirements. In
-addition, a sentence is added at the beginning of chapter 25 saying
-that expressions given as conditions must evaluate to true or false in
-a boolean context. An alternative would be to say that the type of
-these condition expressions must be literally bool, but that would be
-imposing a greater restriction that what the standard currently says
-(which is convertible to bool).
-</p>
-<hr>
-<a name="290"><h3>290.&nbsp;Requirements to for_each and its function object</h3></a><p>
-<b>Section:</b>&nbsp;25.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.foreach"> [lib.alg.foreach]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;03 Jan 2001</p>
+<a name="290"><h3>290.&nbsp;Requirements to for_each and its function object</h3></a><p><b>Section:</b>&nbsp;25.1.1 <a href="lib-algorithms.html#lib.alg.foreach"> [lib.alg.foreach]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;03 Jan 2001</p>
<p>The specification of the for_each algorithm does not have a
"Requires" section, which means that there are no
restrictions imposed on the function object whatsoever. In essence it
@@ -2150,7 +1262,7 @@ algorithm does not say so.
<p><b>Proposed resolution:</b></p>
<p>Add a "Requires" section to section 25.1.1 similar to those
proposed for transform and the numeric algorithms (see issue
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#242">242</a>):
+<a href="lwg-defects.html#242">242</a>):
</p>
<blockquote>
@@ -2166,116 +1278,14 @@ blanket statement in Clause 25, not just a special requirement for
]</i></p>
<hr>
-<a name="291"><h3>291.&nbsp;Underspecification of set algorithms</h3></a><p>
-<b>Section:</b>&nbsp;25.3.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.set.operations"> [lib.alg.set.operations]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;03 Jan 2001</p>
-<p>
-The standard library contains four algorithms that compute set
-operations on sorted ranges: <tt>set_union</tt>, <tt>set_intersection</tt>,
-<tt>set_difference</tt>, and <tt>set_symmetric_difference</tt>. Each
-of these algorithms takes two sorted ranges as inputs, and writes the
-output of the appropriate set operation to an output range. The elements
-in the output range are sorted.
-</p>
-
-<p>
-The ordinary mathematical definitions are generalized so that they
-apply to ranges containing multiple copies of a given element. Two
-elements are considered to be "the same" if, according to an
-ordering relation provided by the user, neither one is less than the
-other. So, for example, if one input range contains five copies of an
-element and another contains three, the output range of <tt>set_union</tt>
-will contain five copies, the output range of
-<tt>set_intersection</tt> will contain three, the output range of
-<tt>set_difference</tt> will contain two, and the output range of
-<tt>set_symmetric_difference</tt> will contain two.
-</p>
-
-<p>
-Because two elements can be "the same" for the purposes
-of these set algorithms, without being identical in other respects
-(consider, for example, strings under case-insensitive comparison),
-this raises a number of unanswered questions:
-</p>
-
-<ul>
-<li>If we're copying an element that's present in both of the
-input ranges, which one do we copy it from?</li>
-<li>If there are <i>n</i> copies of an element in the relevant
-input range, and the output range will contain fewer copies (say
-<i>m</i>) which ones do we choose? The first <i>m</i>, or the last
-<i>m</i>, or something else?</li>
-<li>Are these operations stable? That is, does a run of equivalent
-elements appear in the output range in the same order as as it
-appeared in the input range(s)?</li>
-</ul>
-
-<p>
-The standard should either answer these questions, or explicitly
-say that the answers are unspecified. I prefer the former option,
-since, as far as I know, all existing implementations behave the
-same way.
-</p>
-
-<p><b>Proposed resolution:</b></p>
-
-<p>Add the following to the end of 25.3.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.set.union"> [lib.set.union]</a> paragraph 5:</p>
-<blockquote>
-If [first1, last1) contains <i>m</i> elements that are equivalent to
-each other and [first2, last2) contains <i>n</i> elements that are
-equivalent to them, then max(<i>m</i>, <i>n</i>) of these elements
-will be copied to the output range: all <i>m</i> of these elements
-from [first1, last1), and the last max(<i>n-m</i>, 0) of them from
-[first2, last2), in that order.
-</blockquote>
-
-<p>Add the following to the end of 25.3.5.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.set.intersection"> [lib.set.intersection]</a> paragraph 5:</p>
-<blockquote>
-If [first1, last1) contains <i>m</i> elements that are equivalent to each
-other and [first2, last2) contains <i>n</i> elements that are
-equivalent to them, the first min(<i>m</i>, <i>n</i>) of those
-elements from [first1, last1) are copied to the output range.
-</blockquote>
-
-<p>Add a new paragraph, <b>Notes</b>, after 25.3.5.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.set.difference"> [lib.set.difference]</a>
-paragraph 4:</p>
-<blockquote>
-If [first1, last1) contains <i>m</i> elements that are equivalent to each
-other and [first2, last2) contains <i>n</i> elements that are
-equivalent to them, the last max(<i>m-n</i>, 0) elements from
-[first1, last1) are copied to the output range.
-</blockquote>
-
-<p>Add a new paragraph, <b>Notes</b>, after 25.3.5.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.set.symmetric.difference"> [lib.set.symmetric.difference]</a>
-paragraph 4:</p>
-<blockquote>
-If [first1, last1) contains <i>m</i> elements that are equivalent to
-each other and [first2, last2) contains <i>n</i> elements that are
-equivalent to them, then |<i>m - n</i>| of those elements will be
-copied to the output range: the last <i>m - n</i> of these elements
-from [first1, last1) if <i>m</i> &gt; <i>n</i>, and the last <i>n -
-m</i> of these elements from [first2, last2) if <i>m</i> &lt; <i>n</i>.
-</blockquote>
-
-<p><i>[Santa Cruz: it's believed that this language is clearer than
- what's in the Standard. However, it's also believed that the
- Standard may already make these guarantees (although not quite in
- these words). Bill and Howard will check and see whether they think
- that some or all of these changes may be redundant. If so, we may
- close this issue as NAD.]</i></p>
-
-<p><b>Rationale:</b></p>
-<p>For simple cases, these descriptions are equivalent to what's
- already in the Standard. For more complicated cases, they describe
- the behavior of existing implementations.</p>
-<hr>
-<a name="294"><h3>294.&nbsp;User defined macros and standard headers</h3></a><p>
-<b>Section:</b>&nbsp;17.4.3.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.macro.names"> [lib.macro.names]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;James Kanze&nbsp; <b>Date:</b>&nbsp;11 Jan 2001</p>
-<p>Paragraph 2 of 17.4.3.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.macro.names"> [lib.macro.names]</a> reads: "A
+<a name="294"><h3>294.&nbsp;User defined macros and standard headers</h3></a><p><b>Section:</b>&nbsp;17.4.3.1.1 <a href="lib-intro.html#lib.macro.names"> [lib.macro.names]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;James Kanze&nbsp; <b>Date:</b>&nbsp;11 Jan 2001</p>
+<p>Paragraph 2 of 17.4.3.1.1 <a href="lib-intro.html#lib.macro.names"> [lib.macro.names]</a> reads: "A
translation unit that includes a header shall not contain any macros
that define names declared in that header." As I read this, it
would mean that the following program is legal:</p>
-<pre> #define npos 3.14
+<pre>
+ #define npos 3.14
#include &lt;sstream&gt;
</pre>
@@ -2286,31 +1296,30 @@ which &lt;sstream&gt; didn't include &lt;string&gt;.</p>
<p>I think that this phrase was probably formulated before it was
decided that a standard header may freely include other standard
headers. The phrase would be perfectly appropriate for C, for
-example. In light of 17.4.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.res.on.headers"> [lib.res.on.headers]</a> paragraph 1, however,
+example. In light of 17.4.4.1 <a href="lib-intro.html#lib.res.on.headers"> [lib.res.on.headers]</a> paragraph 1, however,
it isn't stringent enough.</p>
<p><b>Proposed resolution:</b></p>
-<p>In paragraph 2 of 17.4.3.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.macro.names"> [lib.macro.names]</a>, change "A
+<p>In paragraph 2 of 17.4.3.1.1 <a href="lib-intro.html#lib.macro.names"> [lib.macro.names]</a>, change "A
translation unit that includes a header shall not contain any macros
that define names declared in that header." to "A
translation unit that includes a header shall not contain any macros
that define names declared in any standard header."</p>
<p><i>[Copenhagen: the general idea is clearly correct, but there is
-concern about making sure that the two paragraphs in 17.4.3.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.macro.names"> [lib.macro.names]</a> remain consistent. Nathan will provide new
+concern about making sure that the two paragraphs in 17.4.3.1.1 <a href="lib-intro.html#lib.macro.names"> [lib.macro.names]</a> remain consistent. Nathan will provide new
wording.]</i></p>
<hr>
-<a name="299"><h3>299.&nbsp;Incorrect return types for iterator dereference</h3></a><p>
-<b>Section:</b>&nbsp;24.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.bidirectional.iterators"> [lib.bidirectional.iterators]</a>, 24.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.random.access.iterators"> [lib.random.access.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;John Potter&nbsp; <b>Date:</b>&nbsp;22 Jan 2001</p>
+<a name="299"><h3>299.&nbsp;Incorrect return types for iterator dereference</h3></a><p><b>Section:</b>&nbsp;24.1.4 <a href="lib-iterators.html#lib.bidirectional.iterators"> [lib.bidirectional.iterators]</a>, 24.1.5 <a href="lib-iterators.html#lib.random.access.iterators"> [lib.random.access.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;John Potter&nbsp; <b>Date:</b>&nbsp;22 Jan 2001</p>
<p>
-In section 24.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.bidirectional.iterators"> [lib.bidirectional.iterators]</a>,
+In section 24.1.4 <a href="lib-iterators.html#lib.bidirectional.iterators"> [lib.bidirectional.iterators]</a>,
Table 75 gives the return type of *r-- as convertible to T. This is
not consistent with Table 74 which gives the return type of *r++ as
T&amp;. *r++ = t is valid while *r-- = t is invalid.
</p>
<p>
-In section 24.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.random.access.iterators"> [lib.random.access.iterators]</a>,
+In section 24.1.5 <a href="lib-iterators.html#lib.random.access.iterators"> [lib.random.access.iterators]</a>,
Table 76 gives the return type of a[n] as convertible to T. This is
not consistent with the semantics of *(a + n) which returns T&amp; by
Table 74. *(a + n) = t is valid while a[n] = t is invalid.
@@ -2401,12 +1410,11 @@ with a return type of convertible to <tt>T</tt> and operational semantics of
</p>
<hr>
-<a name="309"><h3>309.&nbsp;Does sentry catch exceptions?</h3></a><p>
-<b>Section:</b>&nbsp;27.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.iostream.format"> [lib.iostream.format]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;19 Mar 2001</p>
+<a name="309"><h3>309.&nbsp;Does sentry catch exceptions?</h3></a><p><b>Section:</b>&nbsp;27.6 <a href="lib-iostreams.html#lib.iostream.format"> [lib.iostream.format]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;19 Mar 2001</p>
<p>
The descriptions of the constructors of basic_istream&lt;&gt;::sentry
-(27.6.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>) and basic_ostream&lt;&gt;::sentry
-(27.6.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream::sentry"> [lib.ostream::sentry]</a>) do not explain what the functions do in
+(27.6.1.1.2 <a href="lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>) and basic_ostream&lt;&gt;::sentry
+(27.6.2.3 <a href="lib-iostreams.html#lib.ostream::sentry"> [lib.ostream::sentry]</a>) do not explain what the functions do in
case an exception is thrown while they execute. Some current
implementations allow all exceptions to propagate, others catch them
and set ios_base::badbit instead, still others catch some but let
@@ -2417,16 +1425,16 @@ others propagate.
The text also mentions that the functions may call setstate(failbit)
(without actually saying on what object, but presumably the stream
argument is meant). That may have been fine for
-basic_istream&lt;&gt;::sentry prior to issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#195">195</a>, since
+basic_istream&lt;&gt;::sentry prior to issue <a href="lwg-defects.html#195">195</a>, since
the function performs an input operation which may fail. However,
-issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#195">195</a> amends 27.6.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>, p2 to
+issue <a href="lwg-defects.html#195">195</a> amends 27.6.1.1.2 <a href="lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>, p2 to
clarify that the function should actually call setstate(failbit |
eofbit), so the sentence in p3 is redundant or even somewhat
contradictory.
</p>
<p>
-The same sentence that appears in 27.6.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream::sentry"> [lib.ostream::sentry]</a>, p3
+The same sentence that appears in 27.6.2.3 <a href="lib-iostreams.html#lib.ostream::sentry"> [lib.ostream::sentry]</a>, p3
doesn't seem to be very meaningful for basic_istream&lt;&gt;::sentry
which performs no input. It is actually rather misleading since it
would appear to guide library implementers to calling
@@ -2435,8 +1443,7 @@ throws an exception (typically, it's badbit that's set in response to
such an event).
</p>
-<p>
-<b>Additional comments from Martin, who isn't comfortable with the
+<p><b>Additional comments from Martin, who isn't comfortable with the
current proposed resolution</b> (see c++std-lib-11530)</p>
<p>
@@ -2519,7 +1526,8 @@ badbit is also set in exceptions().
<p>[1] Extractor that catches exceptions thrown from sentry:</p>
<blockquote>
-<pre>struct S { long i; };
+<pre>
+struct S { long i; };
istream&amp; operator&gt;&gt; (istream &amp;strm, S &amp;s)
{
@@ -2555,7 +1563,8 @@ istream&amp; operator&gt;&gt; (istream &amp;strm, S &amp;s)
<p>[2] Extractor that propagates exceptions thrown from sentry:</p>
<blockquote>
-<pre>istream&amp; operator&gt;&gt; (istream &amp;strm, S &amp;s)
+<pre>
+istream&amp; operator&gt;&gt; (istream &amp;strm, S &amp;s)
{
istream::sentry guard (strm, false);
if (guard) {
@@ -2593,7 +1602,8 @@ result of a call to strm.clear().
</p>
<blockquote>
-<pre>istream&amp; operator&gt;&gt; (istream &amp;strm, S &amp;s)
+<pre>
+istream&amp; operator&gt;&gt; (istream &amp;strm, S &amp;s)
{
const ios::iostate state = strm.rdstate ();
const ios::iostate except = strm.exceptions ();
@@ -2632,9 +1642,9 @@ result of a call to strm.clear().
<p><b>Proposed resolution:</b></p>
-<p>Remove the last sentence of 27.6.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a> p5 (but not
+<p>Remove the last sentence of 27.6.1.1.2 <a href="lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a> p5 (but not
the footnote, which should be moved to the preceding sentence).</p>
-<p>Remove the last sentence of 27.6.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream::sentry"> [lib.ostream::sentry]</a> p3 (but not
+<p>Remove the last sentence of 27.6.2.3 <a href="lib-iostreams.html#lib.ostream::sentry"> [lib.ostream::sentry]</a> p3 (but not
the footnote, which should be moved to the preceding sentence).</p>
<p><b>Rationale:</b></p>
<p>The LWG feels that no clarification of EH policy is necessary: the
@@ -2642,12 +1652,11 @@ result of a call to strm.clear().
performs, and about which of those operations can throw. However, the
sentence at the end should be removed because it's redundant.</p>
<hr>
-<a name="342"><h3>342.&nbsp;seek and eofbit</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;09 Oct 201</p>
+<a name="342"><h3>342.&nbsp;seek and eofbit</h3></a><p><b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;09 Oct 201</p>
<p>I think we have a defect.</p>
-<p>According to lwg issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#60">60</a> which is now a dr, the
-description of seekg in 27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a> paragraph 38 now looks
+<p>According to lwg issue <a href="lwg-defects.html#60">60</a> which is now a dr, the
+description of seekg in 27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a> paragraph 38 now looks
like:</p>
<blockquote>
@@ -2655,10 +1664,10 @@ Behaves as an unformatted input function (as described in 27.6.1.3,
paragraph 1), except that it does not count the number of characters
extracted and does not affect the value returned by subsequent calls to
gcount(). After constructing a sentry object, if fail() != true,
-executes rdbuf()­&gt;pubseekpos( pos).
+executes rdbuf()&shy;&gt;pubseekpos( pos).
</blockquote>
-<p>And according to lwg issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#243">243</a> which is also now a dr,
+<p>And according to lwg issue <a href="lwg-defects.html#243">243</a> which is also now a dr,
27.6.1.3, paragraph 1 looks like:</p>
<blockquote>
@@ -2723,216 +1732,12 @@ examined by the user to determine why something failed.</p>
and propose a resolution.]</i></p>
<hr>
-<a name="347"><h3>347.&nbsp;locale::category and bitmask requirements</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.category"> [lib.locale.category]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;P.J. Plauger, Nathan Myers&nbsp; <b>Date:</b>&nbsp;23 Oct 2001</p>
-<p>
-In 22.1.1.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.category"> [lib.locale.category]</a> paragraph 1, the category members
-are described as bitmask elements. In fact, the bitmask requirements
-in 17.3.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.bitmask.types"> [lib.bitmask.types]</a> don't seem quite right: <tt>none</tt>
-and <tt>all</tt> are bitmask constants, not bitmask elements.</p>
-
-<p>In particular, the requirements for <tt>none</tt> interact poorly
-with the requirement that the LC_* constants from the C library must
-be recognizable as C++ locale category constants. LC_* values should
-not be mixed with these values to make category values.</p>
-
-<p>We have two options for the proposed resolution. Informally:
-option 1 removes the requirement that LC_* values be recognized as
-category arguments. Option 2 changes the category type so that this
-requirement is implementable, by allowing <tt>none</tt> to be some
-value such as 0x1000 instead of 0.</p>
-
-<p>Nathan writes: "I believe my proposed resolution [Option 2] merely
-re-expresses the status quo more clearly, without introducing any
-changes beyond resolving the DR.</p>
-
-<p><b>Proposed resolution:</b></p>
-<p>Replace the first two paragraphs of 22.1.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.types"> [lib.locale.types]</a> with:</p>
-<blockquote>
-<pre> typedef int category;
-</pre>
-
-<p>Valid category values include the <tt>locale</tt> member bitmask
-elements <tt>collate</tt>, <tt>ctype</tt>, <tt>monetary</tt>,
-<tt>numeric</tt>, <tt>time</tt>, and <tt>messages</tt>, each of which
-represents a single locale category. In addition, <tt>locale</tt> member
-bitmask constant <tt>none</tt> is defined as zero and represents no
-category. And locale member bitmask constant <tt>all</tt> is defined such that
-the expression</p>
-<pre> (collate | ctype | monetary | numeric | time | messages | all) == all
-</pre>
-<p>
-is <tt>true</tt>, and represents the union of all categories. Further
-the expression <tt>(X | Y)</tt>, where <tt>X</tt> and <tt>Y</tt> each
-represent a single category, represents the union of the two
-categories.
-</p>
-
-<p>
-<tt>locale</tt> member functions expecting a <tt>category</tt>
-argument require one of the <tt>category</tt> values defined above, or
-the union of two or more such values. Such a <tt>category</tt>
-argument identifies a set of locale categories. Each locale category,
-in turn, identifies a set of locale facets, including at least those
-shown in Table 51:
-</p>
-</blockquote>
-<p><i>[Curaçao: need input from locale experts.]</i></p>
-
-<p><b>Rationale:</b></p>
-
-<p>The LWG considered, and rejected, an alternate proposal (described
- as "Option 2" in the discussion). The main reason for rejecting it
- was that library implementors were concerened about implementation
- difficult, given that getting a C++ library to work smoothly with a
- separately written C library is already a delicate business. Some
- library implementers were also concerned about the issue of adding
- extra locale categories.</p>
-
-<blockquote>
-<p>
-<b>Option 2:</b> <br>
-Replace the first paragraph of 22.1.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.types"> [lib.locale.types]</a> with:</p>
-<blockquote>
-<p>
-Valid category values include the enumerated values. In addition, the
-result of applying commutative operators | and &amp; to any two valid
-values is valid, and results in the setwise union and intersection,
-respectively, of the argument categories. The values <tt>all</tt> and
-<tt>none</tt> are defined such that for any valid value <tt>cat</tt>, the
-expressions <tt>(cat | all == all)</tt>, <tt>(cat &amp; all == cat)</tt>,
-<tt>(cat | none == cat)</tt> and <tt>(cat &amp; none == none)</tt> are
-true. For non-equal values <tt>cat1</tt> and <tt>cat2</tt> of the
-remaining enumerated values, <tt>(cat1 &amp; cat2 == none)</tt> is true.
-For any valid categories <tt>cat1</tt> and <tt>cat2</tt>, the result
-of <tt>(cat1 &amp; ~cat2)</tt> is valid, and equals the setwise union of
-those categories found in <tt>cat1</tt> but not found in <tt>cat2</tt>.
-[Footnote: it is not required that <tt>all</tt> equal the setwise union
-of the other enumerated values; implementations may add extra categories.]
-</p>
-</blockquote>
-</blockquote>
-<hr>
-<a name="352"><h3>352.&nbsp;missing fpos requirements</h3></a><p>
-<b>Section:</b>&nbsp;21.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.char.traits.typedefs"> [lib.char.traits.typedefs]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;2 Dec 2001</p>
-<p>
-<i>(1)</i>
-There are no requirements on the <tt>stateT</tt> template parameter of
-<tt>fpos</tt> listed in 27.4.3. The interface appears to require that
-the type be at least Assignable and CopyConstructible (27.4.3.1, p1),
-and I think also DefaultConstructible (to implement the operations in
-Table 88).
-</p>
-<p>
-21.1.2, p3, however, only requires that
-<tt>char_traits&lt;charT&gt;::state_type</tt> meet the requirements of
-CopyConstructible types.
-</p>
-<p>
-<i>(2)</i>
-Additionally, the <tt>stateT</tt> template argument has no
-corresponding typedef in fpos which might make it difficult to use in
-generic code.
-</p>
-<p><b>Proposed resolution:</b></p>
-<p>
-Modify 21.1.2, p4 from
-</p>
-<p>
- Requires: <tt>state_type</tt> shall meet the requirements of
- CopyConstructible types (20.1.3).
-</p>
-<p>
- Requires: state_type shall meet the requirements of Assignable
- (23.1, p4), CopyConstructible (20.1.3), and
- DefaultConstructible (20.1.4) types.
-</p>
-
-<p><b>Rationale:</b></p>
-<p>The LWG feels this is two issues, as indicated above. The first is
-a defect---std::basic_fstream is unimplementable without these
-additional requirements---and the proposed resolution fixes it. The
-second is questionable; who would use that typedef? The class
-template fpos is used only in a very few places, all of which know the
-state type already. Unless motivation is provided, the second should
-be considered NAD.</p>
-<hr>
-<a name="355"><h3>355.&nbsp;Operational semantics for a.back()</h3></a><p>
-<b>Section:</b>&nbsp;23.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Yaroslav Mironov&nbsp; <b>Date:</b>&nbsp;23 Jan 2002</p>
-
-<p>Table 68 "Optional Sequence Operations" in 23.1.1/12
-specifies operational semantics for "a.back()" as
-"*--a.end()", which may be ill-formed <i>[because calling
-operator-- on a temporary (the return) of a built-in type is
-ill-formed]</i>, provided a.end() returns a simple pointer rvalue
-(this is almost always the case for std::vector::end(), for
-example). Thus, the specification is not only incorrect, it
-demonstrates a dangerous construct: "--a.end()" may
-successfully compile and run as intended, but after changing the type
-of the container or the mode of compilation it may produce
-compile-time error. </p>
-
-<p><b>Proposed resolution:</b></p>
-<p>Change the specification in table 68 "Optional Sequence
-Operations" in 23.1.1/12 for "a.back()" from</p>
-
-
-<blockquote>
-*--a.end()
-</blockquote>
-
-<p>to</p>
-
-<blockquote>
- { iterator tmp = a.end(); --tmp; return *tmp; }
-</blockquote>
-
-<p>and the specification for "a.pop_back()" from</p>
-
-<blockquote>
-a.erase(--a.end())
-</blockquote>
-
-<p>to</p>
-
-<blockquote>
- { iterator tmp = a.end(); --tmp; a.erase(tmp); }
-</blockquote>
-
-<p><i>[Curaçao: LWG changed PR from "{ X::iterator tmp =
-a.end(); return *--tmp; }" to "*a.rbegin()", and from
-"{ X::iterator tmp = a.end(); a.erase(--tmp); }" to
-"a.erase(rbegin())".]</i></p>
-
-<p><i>[There is a second possible defect; table 68 "Optional
-Sequence Operations" in the "Operational Semantics"
-column uses operations present only in the "Reversible
-Container" requirements, yet there is no stated dependency
-between these separate requirements tables. Ask in Santa Cruz if the
-LWG would like a new issue opened.]</i></p>
-
-<p><i>[Santa Cruz: the proposed resolution is even worse than what's in
- the current standard: erase is undefined for reverse iterator. If
- we're going to make the change, we need to define a temporary and
- use operator--. Additionally, we don't know how prevalent this is:
- do we need to make this change in more than one place? Martin has
- volunteered to review the standard and see if this problem occurs
- elsewhere.]</i></p>
-
-<p><i>[Oxford: Matt provided new wording to address the concerns raised
- in Santa Cruz. It does not appear that this problem appears
- anywhere else in clauses 23 or 24.]</i></p>
-
-<p><i>[Kona: In definition of operational semantics of back(), change
-"*tmp" to "return *tmp;"]</i></p>
-
-<hr>
-<a name="356"><h3>356.&nbsp;Meaning of ctype_base::mask enumerators</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.category.ctype"> [lib.category.ctype]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;23 Jan 2002</p>
+<a name="356"><h3>356.&nbsp;Meaning of ctype_base::mask enumerators</h3></a><p><b>Section:</b>&nbsp;22.2.1 <a href="lib-locales.html#lib.category.ctype"> [lib.category.ctype]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;23 Jan 2002</p>
<p>What should the following program print?</p>
-<pre> #include &lt;locale&gt;
+<pre>
+ #include &lt;locale&gt;
#include &lt;iostream&gt;
class my_ctype : public std::ctype&lt;char&gt;
@@ -2972,7 +1777,7 @@ The above program assumes that ctype_base::mask enumerators like
<tt>space</tt> and <tt>print</tt> are disjoint, and that the way to
say that a character is both a space and a printing character is to or
those two enumerators together. This is suggested by the "exposition
-only" values in 22.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.category.ctype"> [lib.category.ctype]</a>, but it is nowhere specified in
+only" values in 22.2.1 <a href="lib-locales.html#lib.category.ctype"> [lib.category.ctype]</a>, but it is nowhere specified in
normative text. An alternative interpretation is that the more
specific categories subsume the less specific. The above program
gives the results it does on the Microsoft compiler because, on that
@@ -2997,8 +1802,8 @@ lib-9224, lib-9226, lib-9229, lib-9270, lib-9272, lib-9273, lib-9274,
lib-9277, lib-9279.
</p>
-<p>Issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#339">339</a> is related, but not identical. The
-proposed resolution if issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#339">339</a> says that
+<p>Issue <a href="lwg-defects.html#339">339</a> is related, but not identical. The
+proposed resolution if issue <a href="lwg-defects.html#339">339</a> says that
ctype_base::mask must be a bitmask type. It does not say that the
ctype_base::mask elements are bitmask elements, so it doesn't
directly affect this issue.</p>
@@ -3008,7 +1813,8 @@ that C99 compatibility essentially requires what we're
calling option 1 below.</p>
<blockquote>
-<pre>I think the C99 standard is clear, that isspace -&gt; !isalpha.
+<pre>
+I think the C99 standard is clear, that isspace -&gt; !isalpha.
--------
#include &lt;locale&gt;
@@ -3070,102 +1876,16 @@ option 1 is required for C99 compatibility.
]</i></p>
<hr>
-<a name="359"><h3>359.&nbsp;num_put&lt;&gt;::do_put (..., bool) undocumented</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.put.members"> [lib.facet.num.put.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;12 Mar 2002</p>
-<p>22.2.2.2.1, p1:</p>
-
- <pre> iter_type put (iter_type out, ios_base&amp; str, char_type fill,
- bool val) const;
- ...
-
- 1 Returns: do_put (out, str, fill, val).
- </pre>
-
-<p>AFAICS, the behavior of do_put (..., bool) is not documented anywhere,
-however, 22.2.2.2.2, p23:</p>
-
-<blockquote>
-<pre>iter_type put (iter_type out, ios_base&amp; str, char_type fill,
- bool val) const;
-</pre>
-
-
- Effects: If (str.flags() &amp; ios_base::boolalpha) == 0 then do
- out = do_put(out, str, fill, (int)val)
- Otherwise do
-<pre> string_type s =
- val ? use_facet&lt;ctype&lt;charT&gt; &gt;(loc).truename()
- : use_facet&lt;ctype&lt;charT&gt; &gt;(loc).falsename();
-</pre>
- and then insert the characters of s into out. <i>out</i>.
-</blockquote>
-
-<p>
-This means that the bool overload of <tt>do_put()</tt> will never be called,
-which contradicts the first paragraph. Perhaps the declaration
-should read <tt>do_put()</tt>, and not <tt>put()</tt>?
-</p>
-
-<p>
-Note also that there is no <b>Returns</b> clause for this function, which
-should probably be corrected, just as should the second occurrence
-of <i>"out."</i> in the text.
-</p>
-
-<p>
-I think the least invasive change to fix it would be something like
-the following:
-</p>
-<p><b>Proposed resolution:</b></p>
-<p>In 22.2.2.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>, just above paragraph 1, remove
- the <tt>bool</tt> overload.</p>
-
-<p>
-In 22.2.2.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>, p23, make the following changes
-</p>
-
-<blockquote>
- Replace <tt>put()</tt> with <tt>do_put()</tt> in the declaration
- of the member function.
-</blockquote>
-
-<blockquote>
- Change the <b>Effects</b> clause to a <b>Returns</b> clause (to
- avoid the requirement to call <tt>do_put(..., int)</tt> from <tt>
- do_put (..., bool))</tt>
- like so:
-</blockquote>
-
-<blockquote>
- 23 <b>Returns</b>: If <tt>(str.flags() &amp;
- ios_base::boolalpha) == 0</tt> then
- <tt>do_put (out, str, fill, (long)val)</tt>
- Otherwise the function obtains a string <tt>s</tt> as if by
-<pre> string_type s =
- val ? use_facet&lt;ctype&lt;charT&gt; &gt;(loc).truename()
- : use_facet&lt;ctype&lt;charT&gt; &gt;(loc).falsename();
-</pre>
- and then inserts each character <tt>c</tt> of s into out via
- <tt>*out++ = c</tt>
- and returns <tt>out</tt>.
-</blockquote>
-
-<p><b>Rationale:</b></p>
-<p>
-This fixes a couple of obvious typos, and also fixes what appears to
-be a requirement of gratuitous inefficiency.
-</p>
-<hr>
-<a name="362"><h3>362.&nbsp;bind1st/bind2nd type safety</h3></a><p>
-<b>Section:</b>&nbsp;20.3.6.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.bind.1st"> [lib.bind.1st]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Demkin&nbsp; <b>Date:</b>&nbsp;26 Apr 2002</p>
+<a name="362"><h3>362.&nbsp;bind1st/bind2nd type safety</h3></a><p><b>Section:</b>&nbsp;20.3.6.2 <a href="lib-utilities.html#lib.bind.1st"> [lib.bind.1st]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Demkin&nbsp; <b>Date:</b>&nbsp;26 Apr 2002</p>
<p>
-The definition of bind1st() (20.3.6.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.bind.1st"> [lib.bind.1st]</a>) can result in
+The definition of bind1st() (20.3.6.2 <a href="lib-utilities.html#lib.bind.1st"> [lib.bind.1st]</a>) can result in
the construction of an unsafe binding between incompatible pointer
types. For example, given a function whose first parameter type is
'pointer to T', it's possible without error to bind an argument of
type 'pointer to U' when U does not derive from T:
</p>
-<pre> foo(T*, int);
+<pre>
+ foo(T*, int);
struct T {};
struct U {};
@@ -3183,23 +1903,25 @@ The definition of bind1st() includes a functional-style conversion to
map its argument to the expected argument type of the bound function
(see below):
</p>
-<pre> typename Operation::first_argument_type(x)
+<pre>
+ typename Operation::first_argument_type(x)
</pre>
<p>
-A functional-style conversion (5.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/expr.html#expr.type.conv"> [expr.type.conv]</a>) is defined to be
-semantically equivalent to an explicit cast expression (5.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/expr.html#expr.cast"> [expr.cast]</a>), which may (according to 5.4, paragraph 5) be interpreted
+A functional-style conversion (5.2.3 <a href="expr.html#expr.type.conv"> [expr.type.conv]</a>) is defined to be
+semantically equivalent to an explicit cast expression (5.4 <a href="expr.html#expr.cast"> [expr.cast]</a>), which may (according to 5.4, paragraph 5) be interpreted
as a reinterpret_cast, thus masking the error.
</p>
-<p>The problem and proposed change also apply to 20.3.6.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.bind.2nd"> [lib.bind.2nd]</a>.</p>
+<p>The problem and proposed change also apply to 20.3.6.4 <a href="lib-utilities.html#lib.bind.2nd"> [lib.bind.2nd]</a>.</p>
<p><b>Proposed resolution:</b></p>
<p>
The simplest and most localized change to prevent such errors is to
require bind1st() use a static_cast expression rather than the
functional-style conversion; that is, have bind1st() return:
</p>
-<pre> binder1st&lt;Operation&gt;( op,
+<pre>
+ binder1st&lt;Operation&gt;( op,
static_cast&lt;typename Operation::first_argument_type&gt;(x)).
</pre>
@@ -3223,49 +1945,7 @@ programming.
all. Jeremy will check with the original author of this part
of the Standard and will see what the original intent was.]</i></p>
<hr>
-<a name="365"><h3>365.&nbsp;Lack of const-qualification in clause 27</h3></a><p>
-<b>Section:</b>&nbsp;27 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Walter Brown, Marc Paterno&nbsp; <b>Date:</b>&nbsp;10 May 2002</p>
-<p>
-Some stream and streambuf member functions are declared non-const,
-even thought they appear only to report information rather than to
-change an object's logical state. They should be declared const. See
-document N1360 for details and rationale.
-</p>
-
-<p>The list of member functions under discussion: <tt>in_avail</tt>,
-<tt>showmanyc</tt>, <tt>tellg</tt>, <tt>tellp</tt>, <tt>is_open</tt>.</p>
-
-<p>Related issue: <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#73">73</a>
-</p>
-
-<p><b>Proposed resolution:</b></p>
-<p>In 27.8.1.5, 27.8.1.7, 27.8.1.8, 27.8.1.10, 27.8.1.11, and 27.8.1.13</p>
-<p>Replace</p>
-<pre> bool is_open();
-</pre>
-<p>with</p>
-<pre> bool is_open() const;
-</pre>
-<p><b>Rationale:</b></p>
-<p>Of the changes proposed in N1360, the only one that is safe is
-changing the filestreams' is_open to const. The LWG believed that
-this was NAD the first time it considered this issue (issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#73">73</a>), but now thinks otherwise. The corresponding streambuf
-member function, after all,is already const.</p>
-
-<p>The other proposed changes are less safe, because some streambuf
-functions that appear merely to report a value do actually perform
-mutating operations. It's not even clear that they should be
-considered "logically const", because streambuf has two interfaces, a
-public one and a protected one. These functions may, and often do,
-change the state as exposed by the protected interface, even if the
-state exposed by the public interface is unchanged.</p>
-
-<p>Note that implementers can make this change in a binary compatible
-way by providing both overloads; this would be a conforming extension.</p>
-
-<hr>
-<a name="366"><h3>366.&nbsp;Excessive const-qualification</h3></a><p>
-<b>Section:</b>&nbsp;27 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Walter Brown, Marc Paterno&nbsp; <b>Date:</b>&nbsp;10 May 2002</p>
+<a name="366"><h3>366.&nbsp;Excessive const-qualification</h3></a><p><b>Section:</b>&nbsp;27 <a href="lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Walter Brown, Marc Paterno&nbsp; <b>Date:</b>&nbsp;10 May 2002</p>
<p>
The following member functions are declared const, yet return non-const
pointers. We believe they are should be changed, because they allow code
@@ -3284,93 +1964,112 @@ those terms, does not appear in the standard.]</i></p>
<p><b>Proposed resolution:</b></p>
<p>In 27.4.4 and 27.4.4.2</p>
<p>Replace</p>
-<pre> basic_ostream&lt;charT,traits&gt;* tie() const;
+<pre>
+ basic_ostream&lt;charT,traits&gt;* tie() const;
</pre>
<p>with</p>
-<pre> basic_ostream&lt;charT,traits&gt;* tie();
+<pre>
+ basic_ostream&lt;charT,traits&gt;* tie();
const basic_ostream&lt;charT,traits&gt;* tie() const;
</pre>
<p>and replace</p>
-<pre> basic_streambuf&lt;charT,traits&gt;* rdbuf() const;
+<pre>
+ basic_streambuf&lt;charT,traits&gt;* rdbuf() const;
</pre>
<p>with</p>
-<pre> basic_streambuf&lt;charT,traits&gt;* rdbuf();
+<pre>
+ basic_streambuf&lt;charT,traits&gt;* rdbuf();
const basic_streambuf&lt;charT,traits&gt;* rdbuf() const;
</pre>
<p>In 27.5.2 and 27.5.2.3.1</p>
<p>Replace</p>
-<pre> char_type* eback() const;
+<pre>
+ char_type* eback() const;
</pre>
<p>with</p>
-<pre> char_type* eback();
+<pre>
+ char_type* eback();
const char_type* eback() const;
</pre>
<p>Replace</p>
-<pre> char_type gptr() const;
+<pre>
+ char_type gptr() const;
</pre>
<p>with</p>
-<pre> char_type* gptr();
+<pre>
+ char_type* gptr();
const char_type* gptr() const;
</pre>
<p>Replace</p>
-<pre> char_type* egptr() const;
+<pre>
+ char_type* egptr() const;
</pre>
<p>with</p>
-<pre> char_type* egptr();
+<pre>
+ char_type* egptr();
const char_type* egptr() const;
</pre>
<p>In 27.5.2 and 27.5.2.3.2</p>
<p>Replace</p>
-<pre> char_type* pbase() const;
+<pre>
+ char_type* pbase() const;
</pre>
<p>with</p>
-<pre> char_type* pbase();
+<pre>
+ char_type* pbase();
const char_type* pbase() const;
</pre>
<p>Replace</p>
-<pre> char_type* pptr() const;
+<pre>
+ char_type* pptr() const;
</pre>
<p>with</p>
-<pre> char_type* pptr();
+<pre>
+ char_type* pptr();
const char_type* pptr() const;
</pre>
<p>Replace</p>
-<pre> char_type* epptr() const;
+<pre>
+ char_type* epptr() const;
</pre>
<p>with</p>
-<pre> char_type* epptr();
+<pre>
+ char_type* epptr();
const char_type* epptr() const;
</pre>
<p>In 27.7.2, 27.7.2.2, 27.7.3 27.7.3.2, 27.7.4, and 27.7.6</p>
<p>Replace</p>
-<pre> basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf() const;
+<pre>
+ basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf() const;
</pre>
<p>with</p>
-<pre> basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf();
+<pre>
+ basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf();
const basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf() const;
</pre>
<p>In 27.8.1.5, 27.8.1.7, 27.8.1.8, 27.8.1.10, 27.8.1.11, and 27.8.1.13</p>
<p>Replace</p>
-<pre> basic_filebuf&lt;charT,traits&gt;* rdbuf() const;
+<pre>
+ basic_filebuf&lt;charT,traits&gt;* rdbuf() const;
</pre>
<p>with</p>
-<pre> basic_filebuf&lt;charT,traits&gt;* rdbuf();
+<pre>
+ basic_filebuf&lt;charT,traits&gt;* rdbuf();
const basic_filebuf&lt;charT,traits&gt;* rdbuf() const;
</pre>
<hr>
-<a name="368"><h3>368.&nbsp;basic_string::replace has two "Throws" paragraphs</h3></a><p>
-<b>Section:</b>&nbsp;21.3.5.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string::replace"> [lib.string::replace]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;3 Jun 2002</p>
+<a name="368"><h3>368.&nbsp;basic_string::replace has two "Throws" paragraphs</h3></a><p><b>Section:</b>&nbsp;21.3.5.6 <a href="lib-strings.html#lib.string::replace"> [lib.string::replace]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;3 Jun 2002</p>
<p>
-21.3.5.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string::replace"> [lib.string::replace]</a> basic_string::replace, second
+21.3.5.6 <a href="lib-strings.html#lib.string::replace"> [lib.string::replace]</a> basic_string::replace, second
signature, given in paragraph 1, has two "Throws" paragraphs (3 and
5).
</p>
@@ -3386,8 +2085,7 @@ part of the "Effects" paragraph.
Someone who understands string replace well needs to work on
this.]</i></p>
<hr>
-<a name="369"><h3>369.&nbsp;io stream objects and static ctors</h3></a><p>
-<b>Section:</b>&nbsp;27.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.iostream.objects"> [lib.iostream.objects]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Ruslan Abdikeev&nbsp; <b>Date:</b>&nbsp;8 Jul 2002</p>
+<a name="369"><h3>369.&nbsp;io stream objects and static ctors</h3></a><p><b>Section:</b>&nbsp;27.3 <a href="lib-iostreams.html#lib.iostream.objects"> [lib.iostream.objects]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Ruslan Abdikeev&nbsp; <b>Date:</b>&nbsp;8 Jul 2002</p>
<p>
Is it safe to use standard iostream objects from constructors of
static objects? Are standard iostream objects constructed and are
@@ -3452,23 +2150,14 @@ an appropriate class for doing the trick, I failed to found a
mention of an _instance_ of ios_base::Init in Standard.
</p>
<p><b>Proposed resolution:</b></p>
-<p>
-At the end of header &lt;iostream&gt; synopsis in 27.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.iostream.objects"> [lib.iostream.objects]</a>
-</p>
-
-<pre> namespace std
- {
- ... extern istream cin; ...
-</pre>
-
-<p>add the following lines</p>
-
-<pre> namespace
- {
- ios_base::Init &lt;some_implementation_defined_name&gt;;
- }
- }
-</pre>
+<p>Add to [lib.iostream.objects], p2, immediately before the last sentence
+of the paragraph, the following two sentences:</p>
+<blockquote>
+It is implementation-defined whether the header &lt;iostream&gt; defines
+an ios_base::Init object or not. If it does not, an implementation
+must specify the means of achieving safe access to the standard
+objects for input and output during program startup.
+</blockquote>
<p><i>[Santa Cruz: The LWG is leaning toward NAD. There isn't any
normative wording saying that the Init scheme will be used, but that
@@ -3476,13 +2165,50 @@ is probably intentional. Implementers use dirty tricks for iostream
initialization, and doing it portably is somewhere between difficult
and impossible. Too much constraint in this area is dangerous, and if
we are to make any changes it would probably be more appropriate
-forthem to be nonnormative. Martin will try to come up with clearer
-wording that expreses this intent.]</i></p>
-
-
+for them to be nonnormative. Summer '04 mid-meeting mailing: Martin
+provided wording for resolution and rationale.]</i></p>
+<p><b>Rationale:</b></p>
+<p>
+The original proposed resolution unconditionally required
+implementations to define an ios_base::Init object of some
+implementation-defined name in the header &lt;iostream&gt;. That's an
+overspecification. First, defining the object may be unnecessary
+and even detrimental to performance if an implementation can
+guarantee that the 8 standard iostream objects will be initialized
+before any other user-defined object in a program. Second, there
+is no need to require implementations to document the name of the
+object.</p>
+
+<p>
+The new proposed resolution specifies that implementations may
+(but need not) define an ios_base::Init object, while requiring
+them to document whether they do or not, and if not, to document
+how portable programs achieve safe access to the 8 standard iostream
+objects during program startup (3.6)(*). The intent is that if an
+implementation documents that &lt;iostream&gt; defines an ios_base::Init
+object, it implies that the header must be #included before any
+references to the standard iostream objects. Otherwise, if an
+implementation does not define an ios_base::Init object in
+&lt;iostream&gt; it must either assure and document that the standard
+iostream objects are safely accessible at startup, or specify what
+a portable program must do to safely access them (e.g., it may
+require that a program define an ios_base::Init object before
+doing so, or that it call ios::sync_with_stdio(), etc.).
+</p>
+
+<p>
+(*) Note that the term startup is broader than the term "Constructors
+and destructors for static objects" used in Footnote 265 since the
+former includes other functions besides constructors and destructors,
+including the following example:
+</p>
+<pre>
+ int foo () { return (std::cout &lt;&lt; "foo()\n").rdstate (); }
+ int i = foo ();
+ int main () { return i; }
+</pre>
<hr>
-<a name="371"><h3>371.&nbsp;Stability of multiset and multimap member functions</h3></a><p>
-<b>Section:</b>&nbsp;23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Frank Compagner&nbsp; <b>Date:</b>&nbsp;20 Jul 2002</p>
+<a name="371"><h3>371.&nbsp;Stability of multiset and multimap member functions</h3></a><p><b>Section:</b>&nbsp;23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Frank Compagner&nbsp; <b>Date:</b>&nbsp;20 Jul 2002</p>
<p>
The requirements for multiset and multimap containers (23.1
[lib.containers.requirements], 23.1.2 [lib.associative.reqmnts],
@@ -3499,7 +2225,8 @@ following 'idiom' that removes elements based on a certain predicate
function.
</p>
-<pre> multimap&lt;int, int&gt; m;
+<pre>
+ multimap&lt;int, int&gt; m;
multimap&lt;int, int&gt;::iterator i = m.begin();
while (i != m.end()) {
if (pred(i))
@@ -3534,7 +2261,7 @@ be hard to track down by users. This would also make the need for an
erase_if() member function that much greater.
</p>
-<p>This issue is somewhat related to LWG issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#130">130</a>.</p>
+<p>This issue is somewhat related to LWG issue <a href="lwg-active.html#130">130</a>.</p>
<p><i>[Santa Cruz: More people need to look at this. Much user code
may assume stability. On the other hand, it seems drastic to add a
@@ -3542,10 +2269,9 @@ erase_if() member function that much greater.
<p><b>Proposed resolution:</b></p>
<hr>
-<a name="376"><h3>376.&nbsp;basic_streambuf semantics</h3></a><p>
-<b>Section:</b>&nbsp;27.7.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Ray Lischner&nbsp; <b>Date:</b>&nbsp;14 Aug 2002</p>
+<a name="376"><h3>376.&nbsp;basic_streambuf semantics</h3></a><p><b>Section:</b>&nbsp;27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Ray Lischner&nbsp; <b>Date:</b>&nbsp;14 Aug 2002</p>
<p>
-In Section 27.7.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>, Table 90, the implication is that
+In Section 27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>, Table 90, the implication is that
the four conditions should be mutually exclusive, but they are not.
The first two cases, as written, are subcases of the third. I think it
would be clearer if the conditions were rewritten as follows:
@@ -3583,19 +2309,20 @@ implementations before we decide on a solution.]</i></p>
<p><b>Proposed resolution:</b></p>
<hr>
-<a name="378"><h3>378.&nbsp;locale immutability and locale::operator=()</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;6 Sep 2002</p>
+<a name="378"><h3>378.&nbsp;locale immutability and locale::operator=()</h3></a><p><b>Section:</b>&nbsp;22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;6 Sep 2002</p>
<p>
I think there is a problem with 22.1.1, p6 which says that
</p>
-<pre> -6- An instance of locale is immutable; once a facet reference
+<pre>
+ -6- An instance of locale is immutable; once a facet reference
is obtained from it, that reference remains usable as long
as the locale value itself exists.
</pre>
<p>
and 22.1.1.2, p4:
</p>
-<pre> const locale&amp; operator=(const locale&amp; other) throw();
+<pre>
+ const locale&amp; operator=(const locale&amp; other) throw();
-4- Effects: Creates a copy of other, replacing the current value.
</pre>
@@ -3604,7 +2331,8 @@ How can a reference to a facet obtained from a locale object remain
valid after an assignment that clearly must replace all the facets
in the locale object? Imagine a program such as this
</p>
-<pre> std::locale loc ("de_DE");
+<pre>
+ std::locale loc ("de_DE");
const std::ctype&lt;char&gt; &amp;r0 = std::use_facet&lt;std::ctype&lt;char&gt; &gt;(loc);
loc = std::locale ("en_US");
const std::ctype&lt;char&gt; &amp;r1 = std::use_facet&lt;std::ctype&lt;char&gt; &gt;(loc);
@@ -3614,65 +2342,13 @@ Is r0 really supposed to be preserved and destroyed only when loc goes
out of scope?
</p>
<p><b>Proposed resolution:</b></p>
-<p>
-Suggest to replace 22.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale"> [lib.locale]</a>, p6 with
-</p>
-<pre> -6- Unless assigned a new value, locale objects are immutable;
- once a facet reference is obtained from it, that reference
- remains usable as long as the locale object itself exists
- or until the locale object is assigned the value of another,
- distinct locale object.
-</pre>
-
-<p><i>[Santa Cruz: Dietmar agrees with this general direction, but is
-uncomfortable about the proposed wording. He and Martin will try to
-come up with better wording.]</i></p>
-
-<hr>
-<a name="379"><h3>379.&nbsp;nonsensical ctype::do_widen() requirement</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;6 Sep 2002</p>
-<p>
-The last sentence in 22.2.1.1.2, p11 below doesn't seem to make sense.
-</p>
-<pre> charT do_widen (char c) const;
-
- -11- Effects: Applies the simplest reasonable transformation from
- a char value or sequence of char values to the corresponding
- charT value or values. The only characters for which unique
- transformations are required are those in the basic source
- character set (2.2). For any named ctype category with a
- ctype&lt;charT&gt; facet ctw and valid ctype_base::mask value
- M (is(M, c) || !ctw.is(M, do_widen(c))) is true.
-</pre>
-<p>
-Shouldn't the last sentence instead read
-</p>
-<pre> For any named ctype category with a ctype&lt;char&gt; facet ctc
- and valid ctype_base::mask value M
- (ctc.is(M, c) || !is(M, do_widen(c))) is true.
-</pre>
-<p>
-I.e., if the narrow character c is not a member of a class of
-characters then neither is the widened form of c. (To paraphrase
-footnote 224.)
-</p>
-<p><b>Proposed resolution:</b></p>
-<p>
-Replace the last sentence of 22.2.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>, p11 with the
-following text:
-</p>
-<pre> For any named ctype category with a ctype&lt;char&gt; facet ctc
- and valid ctype_base::mask value M,
- (ctc.is(M, c) || !is(M, do_widen(c))) is true.
-</pre>
-
-<p><i>[Kona: Minor edit. Added a comma after the <i>M</i> for clarity.]</i></p>
+<p><i>[Summer '04 mid-meeting mailing: Martin and Dietmar believe this
+ is a duplicate of issue <a href="lwg-defects.html#31">31</a> and recommend that it be
+ closed.
+]</i></p>
-<p><b>Rationale:</b></p>
-<p>The LWG believes this is just a typo, and that this is the correct fix.</p>
<hr>
-<a name="382"><h3>382.&nbsp;codecvt do_in/out result</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt"> [lib.locale.codecvt]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;30 Aug 2002</p>
+<a name="382"><h3>382.&nbsp;codecvt do_in/out result</h3></a><p><b>Section:</b>&nbsp;22.2.1.5 <a href="lib-locales.html#lib.locale.codecvt"> [lib.locale.codecvt]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;30 Aug 2002</p>
<p>
It seems that the descriptions of codecvt do_in() and do_out() leave
sufficient room for interpretation so that two implementations of
@@ -3697,7 +2373,7 @@ the following seems less than adequately specified:
<ol>
<li>
- 22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>, p2 says this about the effects of the
+ 22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>, p2 says this about the effects of the
function: ...Stops if it encounters a character it cannot
convert... This assumes that there *is* a character to
convert. What happens when there is a sequence that doesn't form a
@@ -3730,7 +2406,7 @@ the following seems less than adequately specified:
</li>
</ol>
<p>
-Finally, the conditions described at the end of 22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>, p4 don't seem to be possible:
+Finally, the conditions described at the end of 22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>, p4 don't seem to be possible:
</p>
<blockquote>
"A return value of partial, if (from_next == from_end),
@@ -3744,7 +2420,7 @@ If the value is partial, it's not clear to me that (from_next
==from_end) could ever hold if there isn't enough room
in the destination buffer. In order for (from_next==from_end) to
hold, all characters in that range must have been successfully
-converted (according to 22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>, p2) and since there are no
+converted (according to 22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>, p2) and since there are no
further source characters to convert, no more room in the
destination buffer can be needed.
</p>
@@ -3774,10 +2450,11 @@ To address these issues, I propose that paragraphs 2, 3, and 4
be rewritten as follows. The proposal incorporates the accepted
resolution of lwg issue 19.
</p>
-<pre>-2- Effects: Converts characters in the range of source elements
+<pre>
+-2- Effects: Converts characters in the range of source elements
[from, from_end), placing the results in sequential positions
- starting at destination to. Converts no more than (from_end ­ from)
- source elements, and stores no more than (to_limit ­ to)
+ starting at destination to. Converts no more than (from_end &shy; from)
+ source elements, and stores no more than (to_limit &shy; to)
destination elements.
Stops if it encounters a sequence of source elements it cannot
@@ -3841,10 +2518,9 @@ written with the assumption of 1-&gt;N conversion in mind, not M-&gt;N.
Bill, Howard, and Martin will provide new wording.
]</i></p>
<hr>
-<a name="384"><h3>384.&nbsp;equal_range has unimplementable runtime complexity</h3></a><p>
-<b>Section:</b>&nbsp;25.3.3.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.equal.range"> [lib.equal.range]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Hans Bos&nbsp; <b>Date:</b>&nbsp;18 Oct 2002</p>
+<a name="384"><h3>384.&nbsp;equal_range has unimplementable runtime complexity</h3></a><p><b>Section:</b>&nbsp;25.3.3.3 <a href="lib-algorithms.html#lib.equal.range"> [lib.equal.range]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Hans Bos&nbsp; <b>Date:</b>&nbsp;18 Oct 2002</p>
<p>
-Section 25.3.3.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.equal.range"> [lib.equal.range]</a>
+Section 25.3.3.3 <a href="lib-algorithms.html#lib.equal.range"> [lib.equal.range]</a>
states that at most 2 * log(last - first) + 1
comparisons are allowed for equal_range.
</p>
@@ -3852,7 +2528,8 @@ comparisons are allowed for equal_range.
<p>It is not possible to implement equal_range with these constraints.</p>
<p>In a range of one element as in:</p>
-<pre> int x = 1;
+<pre>
+ int x = 1;
equal_range(&amp;x, &amp;x + 1, 1)
</pre>
@@ -3862,7 +2539,8 @@ comparisons are allowed for equal_range.
<p>I have checked a few libraries and they all use the same (nonconforming)
algorithm for equal_range that has a complexity of</p>
-<pre> 2* log(distance(first, last)) + 2.
+<pre>
+ 2* log(distance(first, last)) + 2.
</pre>
<p>I guess this is the algorithm that the standard assumes for equal_range.</p>
@@ -3889,12 +2567,11 @@ other questions matter.)]</i></p>
<p><b>Proposed resolution:</b></p>
<hr>
-<a name="385"><h3>385.&nbsp;Does call by value imply the CopyConstructible requirement?</h3></a><p>
-<b>Section:</b>&nbsp;17 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.library"> [lib.library]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;23 Oct 2002</p>
+<a name="385"><h3>385.&nbsp;Does call by value imply the CopyConstructible requirement?</h3></a><p><b>Section:</b>&nbsp;17 <a href="lib-intro.html#lib.library"> [lib.library]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;23 Oct 2002</p>
<p>
Many function templates have parameters that are passed by value;
a typical example is <tt>find_if</tt>'s <i>pred</i> parameter in
-25.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.find"> [lib.alg.find]</a>. Are the corresponding template parameters
+25.1.2 <a href="lib-algorithms.html#lib.alg.find"> [lib.alg.find]</a>. Are the corresponding template parameters
(<tt>Predicate</tt> in this case) implicitly required to be
CopyConstructible, or does that need to be spelled out explicitly?
</p>
@@ -3913,8 +2590,8 @@ my_predicate&amp; is not CopyConstructible.
<p>
The scope of this problem, if it is a problem, is unknown. Function
-object arguments to generic algorithms in clauses 25 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a>
-and 26 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.numerics"> [lib.numerics]</a> are obvious examples. A review of the whole
+object arguments to generic algorithms in clauses 25 <a href="lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a>
+and 26 <a href="lib-numerics.html#lib.numerics"> [lib.numerics]</a> are obvious examples. A review of the whole
library is necessary.
</p>
<p><b>Proposed resolution:</b></p>
@@ -3926,9 +2603,8 @@ into references? References aren't copy constructible, so this should
not be allowed.
]</i></p>
<hr>
-<a name="386"><h3>386.&nbsp;Reverse iterator's operator[] has impossible return type</h3></a><p>
-<b>Section:</b>&nbsp;24.4.1.3.11 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.reverse.iter.opindex"> [lib.reverse.iter.opindex]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;23 Oct 2002</p>
-<p>In 24.4.1.3.11 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.reverse.iter.opindex"> [lib.reverse.iter.opindex]</a>, <tt>reverse_iterator&lt;&gt;::operator[]</tt>
+<a name="386"><h3>386.&nbsp;Reverse iterator's operator[] has impossible return type</h3></a><p><b>Section:</b>&nbsp;24.4.1.3.11 <a href="lib-iterators.html#lib.reverse.iter.opindex"> [lib.reverse.iter.opindex]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;23 Oct 2002</p>
+<p>In 24.4.1.3.11 <a href="lib-iterators.html#lib.reverse.iter.opindex"> [lib.reverse.iter.opindex]</a>, <tt>reverse_iterator&lt;&gt;::operator[]</tt>
is specified as having a return type of <tt>reverse_iterator::reference</tt>,
which is the same as <tt>iterator_traits&lt;Iterator&gt;::reference</tt>.
(Where <tt>Iterator</tt> is the underlying iterator type.)</p>
@@ -3940,8 +2616,37 @@ which is the same as <tt>iterator_traits&lt;Iterator&gt;::reference</tt>.
to <tt>Iterator</tt>'s value type. The return type specified for
reverse_iterator's operator[] would thus appear to be impossible.</p>
-<p>Related issue: <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#299">299</a>. Jeremy will work on this.</p>
+<p>With the resolution of issue <a href="lwg-active.html#299">299</a>, the type of
+ <tt>a[n]</tt> will continue to be required (for random access
+ iterators) to be convertible to the value type, and also <tt>a[n] =
+ t</tt> will be a valid expression. Implementations of
+ <tt>reverse_iterator</tt> will likely need to return a proxy from
+ <tt>operator[]</tt> to meet these requirements. As mentioned in the
+ comment from Dave Abrahams, the simplest way to specify that
+ <tt>reverse_iterator</tt> meet this requirement to just mandate
+ it and leave the return type of <tt>operator[]</tt> unspecified.</p>
+
<p><b>Proposed resolution:</b></p>
+
+<p>In 24.4.1.2 <a href="lib-iterators.html#lib.reverse.iter.requirements"> [lib.reverse.iter.requirements]</a> change:</p>
+
+<blockquote>
+<pre>
+reference operator[](difference_type n) const;
+</pre>
+</blockquote>
+
+<p>to:</p>
+
+<blockquote>
+<pre>
+<b><i>implementation defined</i></b> operator[](difference_type n) const; // see <font color="red">lib.random.access.iterators</font>
+</pre>
+</blockquote>
+
+
+
+
<p><i>[
Comments from Dave Abrahams: IMO we should resolve 386 by just saying
that the return type of reverse_iterator's operator[] is
@@ -3951,8 +2656,7 @@ Comments from Dave Abrahams: IMO we should resolve 386 by just saying
readable and writable, which is about as good as we can do.
]</i></p>
<hr>
-<a name="387"><h3>387.&nbsp;std::complex over-encapsulated</h3></a><p>
-<b>Section:</b>&nbsp;26.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex.numbers"> [lib.complex.numbers]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Gabriel Dos Reis&nbsp; <b>Date:</b>&nbsp;8 Nov 2002</p>
+<a name="387"><h3>387.&nbsp;std::complex over-encapsulated</h3></a><p><b>Section:</b>&nbsp;26.2 <a href="lib-numerics.html#lib.complex.numbers"> [lib.complex.numbers]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Gabriel Dos Reis&nbsp; <b>Date:</b>&nbsp;8 Nov 2002</p>
<p>
The absence of explicit description of std::complex&lt;T&gt; layout
makes it imposible to reuse existing software developed in traditional
@@ -3965,7 +2669,8 @@ severe pessimizations. For example, the only way to change,
independently, the real and imaginary parts is to write something like
</p>
-<pre>complex&lt;T&gt; z;
+<pre>
+complex&lt;T&gt; z;
// ...
// set the real part to r
z = complex&lt;T&gt;(r, z.imag());
@@ -3984,7 +2689,7 @@ of std::complex&lt;&gt; is not justified.
</p>
<p><b>Proposed resolution:</b></p>
-<p>Add the following requirements to 26.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex.numbers"> [lib.complex.numbers]</a> as 26.2/4:</p>
+<p>Add the following requirements to 26.2 <a href="lib-numerics.html#lib.complex.numbers"> [lib.complex.numbers]</a> as 26.2/4:</p>
<blockquote>
<p>If z is an lvalue expression of type cv std::complex&lt;T&gt; then</p>
@@ -4011,40 +2716,44 @@ imaginary part of a[i].</li>
</ul>
</blockquote>
-<p>In the header synopsis in 26.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a>, replace</p>
-<pre> template&lt;class T&gt; T real(const complex&lt;T&gt;&amp;);
+<p>In the header synopsis in 26.2.1 <a href="lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a>, replace</p>
+<pre>
+ template&lt;class T&gt; T real(const complex&lt;T&gt;&amp;);
template&lt;class T&gt; T imag(const complex&lt;T&gt;&amp;);
</pre>
<p>with</p>
-<pre> template&lt;class T&gt; const T&amp; real(const complex&lt;T&gt;&amp;);
+<pre>
+ template&lt;class T&gt; const T&amp; real(const complex&lt;T&gt;&amp;);
template&lt;class T&gt; T&amp; real( complex&lt;T&gt;&amp;);
template&lt;class T&gt; const T&amp; imag(const complex&lt;T&gt;&amp;);
template&lt;class T&gt; T&amp; imag( complex&lt;T&gt;&amp;);
</pre>
-<p>In 26.2.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex.value.ops"> [lib.complex.value.ops]</a> paragraph 1, change</p>
-<pre> template&lt;class T&gt; T real(const complex&lt;T&gt;&amp;);
+<p>In 26.2.7 <a href="lib-numerics.html#lib.complex.value.ops"> [lib.complex.value.ops]</a> paragraph 1, change</p>
+<pre>
+ template&lt;class T&gt; T real(const complex&lt;T&gt;&amp;);
</pre>
<p>to</p>
-<pre> template&lt;class T&gt; const T&amp; real(const complex&lt;T&gt;&amp;);
+<pre>
+ template&lt;class T&gt; const T&amp; real(const complex&lt;T&gt;&amp;);
template&lt;class T&gt; T&amp; real( complex&lt;T&gt;&amp;);
</pre>
<p>and change the <b>Returns</b> clause to "<b>Returns:</b> The real
-part of <i>x</i>
-</p>.
+part of <i>x</i></p>.
-<p>In 26.2.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex.value.ops"> [lib.complex.value.ops]</a> paragraph 2, change</p>
-<pre> template&lt;class T&gt; T imag(const complex&lt;T&gt;&amp;);
+<p>In 26.2.7 <a href="lib-numerics.html#lib.complex.value.ops"> [lib.complex.value.ops]</a> paragraph 2, change</p>
+<pre>
+ template&lt;class T&gt; T imag(const complex&lt;T&gt;&amp;);
</pre>
<p>to</p>
-<pre> template&lt;class T&gt; const T&amp; imag(const complex&lt;T&gt;&amp;);
+<pre>
+ template&lt;class T&gt; const T&amp; imag(const complex&lt;T&gt;&amp;);
template&lt;class T&gt; T&amp; imag( complex&lt;T&gt;&amp;);
</pre>
<p>and change the <b>Returns</b> clause to "<b>Returns:</b> The imaginary
-part of <i>x</i>
-</p>.
+part of <i>x</i></p>.
<p><i>[Kona: The layout guarantee is absolutely necessary for C
compatibility. However, there was disagreement about the other part
@@ -4057,85 +2766,14 @@ part of <i>x</i>
doing it? Howard will try to resolve this issue for the next
meeting.]</i></p>
+<p><i>[pre-Sydney: Howard summarized the options in n1589.]</i></p>
+
<p><b>Rationale:</b></p>
<p>The LWG believes that C99 compatibility would be enough
justification for this change even without other considerations. All
existing implementations already have the layout proposed here.</p>
<hr>
-<a name="389"><h3>389.&nbsp;Const overload of valarray::operator[] returns by value</h3></a><p>
-<b>Section:</b>&nbsp;26.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.valarray"> [lib.template.valarray]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Gabriel Dos Reis&nbsp; <b>Date:</b>&nbsp;8 Nov 2002</p>
-<p>Consider the following program:</p>
-<pre> #include &lt;iostream&gt;
- #include &lt;ostream&gt;
- #include &lt;vector&gt;
- #include &lt;valarray&gt;
- #include &lt;algorithm&gt;
- #include &lt;iterator&gt;
- template&lt;typename Array&gt;
- void print(const Array&amp; a)
- {
- using namespace std;
- typedef typename Array::value_type T;
- copy(&amp;a[0], &amp;a[0] + a.size(),
- ostream_iterator&lt;T&gt;(std::cout, " "));
- }
- template&lt;typename T, unsigned N&gt;
- unsigned size(T(&amp;)[N]) { return N; }
- int main()
- {
- double array[] = { 0.89, 9.3, 7, 6.23 };
- std::vector&lt;double&gt; v(array, array + size(array));
- std::valarray&lt;double&gt; w(array, size(array));
- print(v); // #1
- std::cout &lt;&lt; std::endl;
- print(w); // #2
- std::cout &lt;&lt; std::endl;
- }
-</pre>
-
-<p>While the call numbered #1 succeeds, the call numbered #2 fails
-because the const version of the member function
-valarray&lt;T&gt;::operator[](size_t) returns a value instead of a
-const-reference. That seems to be so for no apparent reason, no
-benefit. Not only does that defeats users' expectation but it also
-does hinder existing software (written either in C or Fortran)
-integration within programs written in C++. There is no reason why
-subscripting an expression of type valarray&lt;T&gt; that is const-qualified
-should not return a const T&amp;.</p>
-<p><b>Proposed resolution:</b></p>
-<p>In the class synopsis in 26.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.valarray"> [lib.template.valarray]</a>, and in
-26.3.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.valarray.access"> [lib.valarray.access]</a> just above paragraph 1, change</p>
-<pre> T operator[](size_t const);
-</pre>
-<p>to</p>
-<pre> const T&amp; operator[](size_t const);
-</pre>
-
-<p><i>[Kona: fixed a minor typo: put semicolon at the end of the line
- wehre it belongs.]</i></p>
-
-<p><b>Rationale:</b></p>
-<p>Return by value seems to serve no purpose. Valaray was explicitly
-designed to have a specified layout so that it could easily be
-integrated with libraries in other languages, and return by value
-defeats that purpose. It is believed that this change will have no
-impact on allowable optimizations.</p>
-<hr>
-<a name="391"><h3>391.&nbsp;non-member functions specified as const</h3></a><p>
-<b>Section:</b>&nbsp;22.1.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.conversions"> [lib.conversions]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;James Kanze&nbsp; <b>Date:</b>&nbsp;10 Dec 2002</p>
-<p>
-The specifications of toupper and tolower both specify the functions as
-const, althought they are not member functions, and are not specified as
-const in the header file synopsis in section 22.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locales"> [lib.locales]</a>.
-</p>
-<p><b>Proposed resolution:</b></p>
-<p>In 22.1.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.conversions"> [lib.conversions]</a>, remove <tt>const</tt> from the function
- declarations of std::toupper and std::tolower</p>
-<p><b>Rationale:</b></p>
-<p>Fixes an obvious typo</p>
-<hr>
-<a name="394"><h3>394.&nbsp;behavior of formatted output on failure</h3></a><p>
-<b>Section:</b>&nbsp;27.6.2.5.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.formatted.reqmts"> [lib.ostream.formatted.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;27 Dec 2002</p>
+<a name="394"><h3>394.&nbsp;behavior of formatted output on failure</h3></a><p><b>Section:</b>&nbsp;27.6.2.5.1 <a href="lib-iostreams.html#lib.ostream.formatted.reqmts"> [lib.ostream.formatted.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;27 Dec 2002</p>
<p>
There is a contradiction in Formatted output about what bit is
supposed to be set if the formatting fails. On sentence says it's
@@ -4144,10 +2782,11 @@ badbit and another that it's failbit.
<p>
27.6.2.5.1, p1 says in the Common Requirements on Formatted output
functions:
-</p><pre> ... If the generation fails, then the formatted output function
+<pre>
+ ... If the generation fails, then the formatted output function
does setstate(ios::failbit), which might throw an exception.
</pre>
-<p></p>
+</p>
<p>
27.6.2.5.2, p1 goes on to say this about Arithmetic Inserters:
</p>
@@ -4156,14 +2795,15 @@ functions:
following code fragment:
</p>
<p>
-</p><pre> bool failed =
+<pre>
+ bool failed =
use_facet&lt;num_put&lt;charT,ostreambuf_iterator&lt;charT,traits&gt;
&gt; &gt;
(getloc()).put(*this, *this, fill(), val). failed();
... If failed is true then does setstate(badbit) ...
</pre>
-<p></p>
+</p>
<p>
The original intent of the text, according to Jerry Schwarz (see
c++std-lib-10500), is captured in the following paragraph:
@@ -4230,49 +2870,7 @@ functions should be changed as proposed below.
<p><b>Rationale:</b></p>
<hr>
-<a name="395"><h3>395.&nbsp;inconsistencies in the definitions of rand() and random_shuffle()</h3></a><p>
-<b>Section:</b>&nbsp;26.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.c.math"> [lib.c.math]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;James Kanze&nbsp; <b>Date:</b>&nbsp;3 Jan 2003</p>
-<p>
-In 26.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.c.math"> [lib.c.math]</a>, the C++ standard refers to the C standard for the
-definition of rand(); in the C standard, it is written that "The
-implementation shall behave as if no library function calls the rand
-function."
-</p>
-
-<p>
-In 25.2.11 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.random.shuffle"> [lib.alg.random.shuffle]</a>, there is no specification as to
-how the two parameter version of the function generates its random
-value. I believe that all current implementations in fact call rand()
-(in contradiction with the requirement avove); if an implementation does
-not call rand(), there is the question of how whatever random generator
-it does use is seeded. Something is missing.
-</p>
-
-<p><b>Proposed resolution:</b></p>
-<p>
-In [lib.c.math], add a paragraph specifying that the C definition of
-rand shal be modified to say that "Unless otherwise specified, the
-implementation shall behave as if no library function calls the rand
-function."
-</p>
-
-<p>
-In [lib.alg.random.shuffle], add a sentence to the effect that "In
-the two argument form of the function, the underlying source of
-random numbers is implementation defined. [Note: in particular, an
-implementation is permitted to use <tt>rand</tt>.]
-</p>
-<p><b>Rationale:</b></p>
-<p>The original proposed resolution proposed requiring the
- two-argument from of <tt>random_shuffle</tt> to
- use <tt>rand</tt>. We don't want to do that, because some existing
- implementations already use something else: gcc
- uses <tt>lrand48</tt>, for example. Using <tt>rand</tt> presents a
- problem if the number of elements in the sequence is greater than
- RAND_MAX.</p>
-<hr>
-<a name="396"><h3>396.&nbsp;what are characters zero and one</h3></a><p>
-<b>Section:</b>&nbsp;23.3.5.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.bitset.cons"> [lib.bitset.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;5 Jan 2003</p>
+<a name="396"><h3>396.&nbsp;what are characters zero and one</h3></a><p><b>Section:</b>&nbsp;23.3.5.1 <a href="lib-containers.html#lib.bitset.cons"> [lib.bitset.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;5 Jan 2003</p>
<p>
23.3.5.1, p6 [lib.bitset.cons] talks about a generic character
having the value of 0 or 1 but there is no definition of what
@@ -4285,12 +2883,14 @@ p33, looks like a defect remotely related to DR 303.
<p>
http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#303
</p>
- <pre>23.3.5.1:
+ <pre>
+23.3.5.1:
-6- An element of the constructed string has value zero if the
corresponding character in str, beginning at position pos,
is 0. Otherwise, the element has the value one.
</pre>
- <pre>23.3.5.2:
+ <pre>
+23.3.5.2:
-33- Effects: Constructs a string object of the appropriate
type and initializes it to a string of length N characters.
Each character is determined by the value of its
@@ -4306,8 +2906,9 @@ is a bitset, not a string.
</p>
<p><b>Proposed resolution:</b></p>
<p>Change the constructor's function declaration immediately before
-23.3.5.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.bitset.cons"> [lib.bitset.cons]</a> p3 to:</p>
-<pre> template &lt;class charT, class traits, class Allocator&gt;
+23.3.5.1 <a href="lib-containers.html#lib.bitset.cons"> [lib.bitset.cons]</a> p3 to:</p>
+<pre>
+ template &lt;class charT, class traits, class Allocator&gt;
explicit
bitset(const basic_string&lt;charT, traits, Allocator&gt;&amp; str,
typename basic_string&lt;charT, traits, Allocator&gt;::size_type pos = 0,
@@ -4315,7 +2916,7 @@ is a bitset, not a string.
basic_string&lt;charT, traits, Allocator&gt;::npos,
charT zero = charT('0'), charT one = charT('1'))
</pre>
-<p>Change the first two sentences of 23.3.5.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.bitset.cons"> [lib.bitset.cons]</a> p6 to: "An
+<p>Change the first two sentences of 23.3.5.1 <a href="lib-containers.html#lib.bitset.cons"> [lib.bitset.cons]</a> p6 to: "An
element of the constructed string has value 0 if the corresponding
character in <i>str</i>, beginning at position <i>pos</i>,
is <i>zero</i>. Otherwise, the element has the value 1.</p>
@@ -4328,18 +2929,19 @@ is <i>zero</i>. Otherwise, the element has the value 1.</p>
</p>
<p>Change the declaration of the <tt>to_string</tt> member function
- immediately before 23.3.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.bitset.members"> [lib.bitset.members]</a> p33 to:</p>
-<pre> template &lt;class charT, class traits, class Allocator&gt;
+ immediately before 23.3.5.2 <a href="lib-containers.html#lib.bitset.members"> [lib.bitset.members]</a> p33 to:</p>
+<pre>
+ template &lt;class charT, class traits, class Allocator&gt;
basic_string&lt;charT, traits, Allocator&gt;
to_string(charT zero = charT('0'), charT one = charT('1')) const;
</pre>
-<p>Change the last sentence of 23.3.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.bitset.members"> [lib.bitset.members]</a> p33 to: "Bit
+<p>Change the last sentence of 23.3.5.2 <a href="lib-containers.html#lib.bitset.members"> [lib.bitset.members]</a> p33 to: "Bit
value 0 becomes the character <tt><i>zero</i></tt>, bit value 1 becomes the
character <tt><i>one</i></tt>.</p>
-<p>Change 23.3.5.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.bitset.operators"> [lib.bitset.operators]</a> p8 to:</p>
-<p>
-<b>Returns</b>:</p>
-<pre> os &lt;&lt; x.template to_string&lt;charT,traits,allocator&lt;charT&gt; &gt;(
+<p>Change 23.3.5.3 <a href="lib-containers.html#lib.bitset.operators"> [lib.bitset.operators]</a> p8 to:</p>
+<p><b>Returns</b>:</p>
+<pre>
+ os &lt;&lt; x.template to_string&lt;charT,traits,allocator&lt;charT&gt; &gt;(
use_facet&lt;ctype&lt;charT&gt; &gt;(<i>os</i>.getloc()).widen('0'),
use_facet&lt;ctype&lt;charT&gt; &gt;(<i>os</i>.getloc()).widen('1'));
</pre>
@@ -4353,24 +2955,25 @@ is <i>zero</i>. Otherwise, the element has the value 1.</p>
resolution allows those users who care about this issue to get it
right.</p>
<p>We fix the inserter to use the new arguments. Note that we already
- fixed the analogous problem with the extractor in issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#303">303</a>.</p>
+ fixed the analogous problem with the extractor in issue <a href="lwg-defects.html#303">303</a>.</p>
<hr>
-<a name="397"><h3>397.&nbsp;ostream::sentry dtor throws exceptions</h3></a><p>
-<b>Section:</b>&nbsp;27.6.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream::sentry"> [lib.ostream::sentry]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;5 Jan 2003</p>
+<a name="397"><h3>397.&nbsp;ostream::sentry dtor throws exceptions</h3></a><p><b>Section:</b>&nbsp;27.6.2.3 <a href="lib-iostreams.html#lib.ostream::sentry"> [lib.ostream::sentry]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;5 Jan 2003</p>
<p>
17.4.4.8, p3 prohibits library dtors from throwing exceptions.
</p>
<p>
27.6.2.3, p4 says this about the ostream::sentry dtor:
</p>
- <pre> -4- If ((os.flags() &amp; ios_base::unitbuf) &amp;&amp; !uncaught_exception())
+ <pre>
+ -4- If ((os.flags() &amp; ios_base::unitbuf) &amp;&amp; !uncaught_exception())
is true, calls os.flush().
</pre>
<p>
27.6.2.6, p7 that describes ostream::flush() says:
</p>
- <pre> -7- If rdbuf() is not a null pointer, calls rdbuf()-&gt;pubsync().
+ <pre>
+ -7- If rdbuf() is not a null pointer, calls rdbuf()-&gt;pubsync().
If that function returns ?-1 calls setstate(badbit) (which
may throw ios_base::failure (27.4.4.3)).
</pre>
@@ -4389,8 +2992,7 @@ is the only one that can throw. PJP suggests specifying that
sentry::~sentry() should internally catch any exceptions it might cause.
]</i></p>
<hr>
-<a name="398"><h3>398.&nbsp;effects of end-of-file on unformatted input functions</h3></a><p>
-<b>Section:</b>&nbsp;27.6.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream::sentry"> [lib.ostream::sentry]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;5 Jan 2003</p>
+<a name="398"><h3>398.&nbsp;effects of end-of-file on unformatted input functions</h3></a><p><b>Section:</b>&nbsp;27.6.2.3 <a href="lib-iostreams.html#lib.ostream::sentry"> [lib.ostream::sentry]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;5 Jan 2003</p>
<p>
While reviewing unformatted input member functions of istream
for their behavior when they encounter end-of-file during input
@@ -4405,54 +3007,61 @@ encounter an end-of-file (this is the expected behavior, and also
the behavior of all major implementations):
</p>
<p>
- </p><pre> basic_istream&lt;charT, traits&gt;&amp;
+ <pre>
+ basic_istream&lt;charT, traits&gt;&amp;
get (char_type*, streamsize, char_type);
</pre>
- <p></p>
+ </p>
<p>
Also sets failbit if it fails to extract any characters.
</p>
<p>
- </p><pre> basic_istream&lt;charT, traits&gt;&amp;
+ <pre>
+ basic_istream&lt;charT, traits&gt;&amp;
get (char_type*, streamsize);
</pre>
- <p></p>
+ </p>
<p>
Also sets failbit if it fails to extract any characters.
</p>
<p>
- </p><pre> basic_istream&lt;charT, traits&gt;&amp;
+ <pre>
+ basic_istream&lt;charT, traits&gt;&amp;
getline (char_type*, streamsize, char_type);
</pre>
- <p></p>
+ </p>
<p>
Also sets failbit if it fails to extract any characters.
</p>
<p>
- </p><pre> basic_istream&lt;charT, traits&gt;&amp;
+ <pre>
+ basic_istream&lt;charT, traits&gt;&amp;
getline (char_type*, streamsize);
</pre>
- <p></p>
+ </p>
<p>
Also sets failbit if it fails to extract any characters.
</p>
<p>
- </p><pre> basic_istream&lt;charT, traits&gt;&amp;
+ <pre>
+ basic_istream&lt;charT, traits&gt;&amp;
ignore (int, int_type);
</pre>
- <p></p>
+ </p>
<p>
- </p><pre> basic_istream&lt;charT, traits&gt;&amp;
+ <pre>
+ basic_istream&lt;charT, traits&gt;&amp;
read (char_type*, streamsize);
</pre>
- <p></p>
+ </p>
<p>
Also sets failbit if it encounters end-of-file.
</p>
<p>
- </p><pre> streamsize readsome (char_type*, streamsize);
+ <pre>
+ streamsize readsome (char_type*, streamsize);
</pre>
- <p></p>
+ </p>
<p>
The following unformated input member functions set failbit but
@@ -4463,14 +3072,16 @@ also in conflict with all major implementation which set both
eofbit and failbit):
</p>
<p>
- </p><pre> int_type get();
+ <pre>
+ int_type get();
</pre>
- <p></p>
+ </p>
<p>
- </p><pre> basic_istream&lt;charT, traits&gt;&amp;
+ <pre>
+ basic_istream&lt;charT, traits&gt;&amp;
get (char_type&amp;);
</pre>
- <p></p>
+ </p>
<p>
These functions only set failbit of they extract no characters,
otherwise they don't set any bits, even on failure (I find this
@@ -4479,24 +3090,27 @@ conflict with all major implementations which set eofbit
whenever they encounter end-of-file):
</p>
<p>
- </p><pre> basic_istream&lt;charT, traits&gt;&amp;
+ <pre>
+ basic_istream&lt;charT, traits&gt;&amp;
get (basic_streambuf&lt;charT, traits&gt;&amp;, char_type);
</pre>
- <p></p>
+ </p>
<p>
- </p><pre> basic_istream&lt;charT, traits&gt;&amp;
+ <pre>
+ basic_istream&lt;charT, traits&gt;&amp;
get (basic_streambuf&lt;charT, traits&gt;&amp;);
</pre>
- <p></p>
+ </p>
<p>
This function sets no bits (all implementations except for
STLport and Classic Iostreams set eofbit when they encounter
end-of-file):
</p>
<p>
- </p><pre> int_type peek ();
+ <pre>
+ int_type peek ();
</pre>
- <p></p>
+ </p>
<p><b>Proposed resolution:</b></p>
<p>Informally, what we want is a global statement of intent saying
that eofbit gets set if we trip across EOF, and then we can take
@@ -4505,14 +3119,14 @@ end-of-file):
and changing it on an individual basis wouldn't make things better.
Dietmar will do this work.</p>
<hr>
-<a name="401"><h3>401.&nbsp; incorrect type casts in table 32 in lib.allocator.requirements</h3></a><p>
-<b>Section:</b>&nbsp;20.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Markus Mauhart&nbsp; <b>Date:</b>&nbsp;27 Feb 2003</p>
+<a name="401"><h3>401.&nbsp; incorrect type casts in table 32 in lib.allocator.requirements</h3></a><p><b>Section:</b>&nbsp;20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Markus Mauhart&nbsp; <b>Date:</b>&nbsp;27 Feb 2003</p>
<p>
-I think that in par2 of 20.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a> the last two
+I think that in par2 of 20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a> the last two
lines of table 32 contain two incorrect type casts. The lines are ...
</p>
-<pre> a.construct(p,t) Effect: new((void*)p) T(t)
+<pre>
+ a.construct(p,t) Effect: new((void*)p) T(t)
a.destroy(p) Effect: ((T*)p)?-&gt;~T()
</pre>
@@ -4521,7 +3135,8 @@ lines of table 32 contain two incorrect type casts. The lines are ...
from table 31:
</p>
-<pre> alloc&lt;T&gt; a ;// an allocator for T
+<pre>
+ alloc&lt;T&gt; a ;// an allocator for T
alloc&lt;T&gt;::pointer p ;// random access iterator
// (may be different from T*)
alloc&lt;T&gt;::reference r = *p;// T&amp;
@@ -4545,7 +3160,7 @@ current requirement (being a random access iterator).
<p>
Note: Actually I would prefer to replace "((T*)p)?-&gt;dtor_name" with
"p?-&gt;dtor_name", but AFAICS this is not possible cause of an omission
-in 13.5.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/over.html#over.ref"> [over.ref]</a> (for which I have filed another DR on 29.11.2002).
+in 13.5.6 <a href="over.html#over.ref"> [over.ref]</a> (for which I have filed another DR on 29.11.2002).
</p>
<p><i>[Kona: The LWG thinks this is somewhere on the border between
@@ -4557,171 +3172,16 @@ in 13.5.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/over.html#over.ref
non-default pointer types.]</i></p>
<hr>
-<a name="402"><h3>402.&nbsp;wrong new expression in [some_]allocator::construct</h3></a><p>
-<b>Section:</b>&nbsp;20.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>, 20.4.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.members"> [lib.allocator.members]</a>, &nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Markus Mauhart&nbsp; <b>Date:</b>&nbsp;27 Feb 2003</p>
-<p>
-This applies to the new expression that is contained in both par12 of
-20.4.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.members"> [lib.allocator.members]</a> and in par2 (table 32) of 20.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>.
-I think this new expression is wrong, involving unintended side
-effects.
-</p>
-
-
-<p>20.4.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.members"> [lib.allocator.members]</a> contains the following 3 lines:</p>
-
-<pre> 11 Returns: the largest value N for which the call allocate(N,0) might succeed.
- void construct(pointer p, const_reference val);
- 12 Returns: new((void *) p) T( val)
-</pre>
-
-
-<p>20.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a> in table 32 has the following line:</p>
-<pre> a.construct(p,t) Effect: new((void*)p) T(t)
-</pre>
-
-<p>
-.... with the prerequisits coming from the preceding two paragraphs,
-especially from table 31:
-</p>
-
-<pre> alloc&lt;T&gt; a ;// an allocator for T
- alloc&lt;T&gt;::pointer p ;// random access iterator
- // (may be different from T*)
- alloc&lt;T&gt;::reference r = *p;// T&amp;
- T const&amp; t ;
-</pre>
-
-<p>
-Cause of using "new" but not "::new", any existing "T::operator new"
-function will hide the global placement new function. When there is no
-"T::operator new" with adequate signature,
-every_alloc&lt;T&gt;::construct(..) is ill-formed, and most
-std::container&lt;T,every_alloc&lt;T&gt;&gt; use it; a workaround
-would be adding placement new and delete functions with adequate
-signature and semantic to class T, but class T might come from another
-party. Maybe even worse is the case when T has placement new and
-delete functions with adequate signature but with "unknown" semantic:
-I dont like to speculate about it, but whoever implements
-any_container&lt;T,any_alloc&gt; and wants to use construct(..)
-probably must think about it.
-</p>
-<p><b>Proposed resolution:</b></p>
-<p>
-Replace "new" with "::new" in both cases.
-</p>
-<hr>
-<a name="403"><h3>403.&nbsp;basic_string::swap should not throw exceptions</h3></a><p>
-<b>Section:</b>&nbsp;21.3.5.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string::swap"> [lib.string::swap]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;25 Mar 2003</p>
-
-<p>
-std::basic_string, 21.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.basic.string"> [lib.basic.string]</a> paragraph 2 says that
-basic_string "conforms to the requirements of a Sequence, as specified
-in (23.1.1)." The sequence requirements specified in (23.1.1) to not
-include any prohibition on swap members throwing exceptions.
-</p>
-
-<p>
-Section 23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> paragraph 10 does limit conditions under
-which exceptions may be thrown, but applies only to "all container
-types defined in this clause" and so excludes basic_string::swap
-because it is defined elsewhere.
-</p>
-
+<a name="405"><h3>405.&nbsp;qsort and POD</h3></a><p><b>Section:</b>&nbsp;25.4 <a href="lib-algorithms.html#lib.alg.c.library"> [lib.alg.c.library]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Ray Lischner&nbsp; <b>Date:</b>&nbsp;08 Apr 2003</p>
<p>
-Eric Niebler points out that 21.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.basic.string"> [lib.basic.string]</a> paragraph 5 explicitly
-permits basic_string::swap to invalidates iterators, which is
-disallowed by 23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> paragraph 10. Thus the standard would
-be contradictory if it were read or extended to read as having
-basic_string meet 23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> paragraph 10 requirements.
-</p>
-
-<p>
-Yet several LWG members have expressed the belief that the original
-intent was that basic_string::swap should not throw exceptions as
-specified by 23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> paragraph 10, and that the standard is
-unclear on this issue. The complexity of basic_string::swap is
-specified as "constant time", indicating the intent was to avoid
-copying (which could cause a bad_alloc or other exception). An
-important use of swap is to ensure that exceptions are not thrown in
-exception-safe code.
-</p>
-
-<p>
-Note: There remains long standing concern over whether or not it is
-possible to reasonably meet the 23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> paragraph 10 swap
-requirements when allocators are unequal. The specification of
-basic_string::swap exception requirements is in no way intended to
-address, prejudice, or otherwise impact that concern.
-</p>
-
-
-
-
-
-<p><b>Proposed resolution:</b></p>
-<p>
-In 21.3.5.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string::swap"> [lib.string::swap]</a>, add a throws clause:
-</p>
-
-<p>
-Throws: Shall not throw exceptions.
-</p>
-<hr>
-<a name="404"><h3>404.&nbsp;May a replacement allocation function be declared inline?</h3></a><p>
-<b>Section:</b>&nbsp;17.4.3.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.replacement.functions"> [lib.replacement.functions]</a>, 18.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.new.delete"> [lib.new.delete]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;24 Apr 2003</p>
-<p>
-The eight basic dynamic memory allocation functions (single-object
-and array versions of ::operator new and ::operator delete, in the
-ordinary and nothrow forms) are replaceable. A C++ program may
-provide an alternative definition for any of them, which will be used
-in preference to the implementation's definition.
-</p>
-
-<p>
-Three different parts of the standard mention requirements on
-replacement functions: 17.4.3.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.replacement.functions"> [lib.replacement.functions]</a>, 18.4.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.new.delete.single"> [lib.new.delete.single]</a>
-and 18.4.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.new.delete.array"> [lib.new.delete.array]</a>, and 3.7.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/basic.html#basic.stc.dynamic"> [basic.stc.dynamic]</a>.
-</p>
-
-<p>None of these three places say whether a replacement function may
- be declared inline. 18.4.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.new.delete.single"> [lib.new.delete.single]</a> paragraph 2 specifies a
- signature for the replacement function, but that's not enough:
- the <tt>inline</tt> specifier is not part of a function's signature.
- One might also reason from 7.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/dcl.html#dcl.fct.spec"> [dcl.fct.spec]</a> paragraph 2, which
- requires that "an inline function shall be defined in every
- translation unit in which it is used," but this may not be quite
- specific enough either. We should either explicitly allow or
- explicitly forbid inline replacement memory allocation
- functions.</p>
-<p><b>Proposed resolution:</b></p>
-<p>
-Add a new sentence to the end of 17.4.3.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.replacement.functions"> [lib.replacement.functions]</a> paragraph 3:
-"The program's definitions shall not be specified as <tt>inline</tt>.
-No diagnostic is required."
-</p>
-
-<p><i>[Kona: added "no diagnostic is required"]</i></p>
-
-<p><b>Rationale:</b></p>
-<p>
-The fact that <tt>inline</tt> isn't mentioned appears to have been
-nothing more than an oversight. Existing implementations do not
-permit inline functions as replacement memory allocation functions.
-Providing this functionality would be difficult in some cases, and is
-believed to be of limited value.
-</p>
-<hr>
-<a name="405"><h3>405.&nbsp;qsort and POD</h3></a><p>
-<b>Section:</b>&nbsp;25.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.c.library"> [lib.alg.c.library]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Ray Lischner&nbsp; <b>Date:</b>&nbsp;08 Apr 2003</p>
-<p>
-Section 25.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.c.library"> [lib.alg.c.library]</a> describes bsearch and qsort, from the C
+Section 25.4 <a href="lib-algorithms.html#lib.alg.c.library"> [lib.alg.c.library]</a> describes bsearch and qsort, from the C
standard library. Paragraph 4 does not list any restrictions on qsort,
but it should limit the base parameter to point to POD. Presumably,
qsort sorts the array by copying bytes, which requires POD.
</p>
<p><b>Proposed resolution:</b></p>
<p>
-In 25.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.c.library"> [lib.alg.c.library]</a> paragraph 4, just after the declarations and
+In 25.4 <a href="lib-algorithms.html#lib.alg.c.library"> [lib.alg.c.library]</a> paragraph 4, just after the declarations and
before the nonnormative note, add these words: "both of which have the
same behavior as the original declaration. The behavior is undefined
unless the objects in the array pointed to by <i>base</i> are of POD
@@ -4731,8 +3191,7 @@ type."
<p><i>[Something along these lines is clearly necessary. Matt
provided wording.]</i></p>
<hr>
-<a name="406"><h3>406.&nbsp;vector::insert(s) exception safety</h3></a><p>
-<b>Section:</b>&nbsp;23.2.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.modifiers"> [lib.vector.modifiers]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;27 Apr 2003</p>
+<a name="406"><h3>406.&nbsp;vector::insert(s) exception safety</h3></a><p><b>Section:</b>&nbsp;23.2.4.3 <a href="lib-containers.html#lib.vector.modifiers"> [lib.vector.modifiers]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;27 Apr 2003</p>
<p>
There is a possible defect in the standard: the standard text was
never intended to prevent arbitrary ForwardIterators, whose operations
@@ -4743,7 +3202,7 @@ standard appears to impose requirements that aren't met by any
existing implementation.
</p>
<p><b>Proposed resolution:</b></p>
-<p>Replace 23.2.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.capacity"> [lib.vector.capacity]</a> paragraph 1 with:</p>
+<p>Replace 23.2.4.2 <a href="lib-containers.html#lib.vector.capacity"> [lib.vector.capacity]</a> paragraph 1 with:</p>
<blockquote>
1 Notes: Causes reallocation if the new size is greater than the
old capacity. If no reallocation happens, all the iterators and
@@ -4758,32 +3217,14 @@ existing implementation.
Forward Iterators.]</i></p>
<hr>
-<a name="407"><h3>407.&nbsp;Can singular iterators be destroyed?</h3></a><p>
-<b>Section:</b>&nbsp;24.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;3 June 2003</p>
-<p>
-Clause 24.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>, paragraph 5, says that the only expression
-that is defined for a singular iterator is "an assignment of a
-non-singular value to an iterator that holds a singular value". This
-means that destroying a singular iterator (e.g. letting an automatic
-variable go out of scope) is technically undefined behavior. This
-seems overly strict, and probably unintentional.
-</p>
-<p><b>Proposed resolution:</b></p>
-<p>
-Change the sentence in question to "... the only exceptions are
-destroying an iterator that holds a singular value, or the assignment
-of a non-singular value to an iterator that holds a singular value."
-</p>
-<hr>
-<a name="408"><h3>408.&nbsp;Is vector&lt;reverse_iterator&lt;char*&gt; &gt; forbidden?</h3></a><p>
-<b>Section:</b>&nbsp;24.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;3 June 2003</p>
+<a name="408"><h3>408.&nbsp;Is vector&lt;reverse_iterator&lt;char*&gt; &gt; forbidden?</h3></a><p><b>Section:</b>&nbsp;24.1 <a href="lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;3 June 2003</p>
<p>
I've been discussing iterator semantics with Dave Abrahams, and a
surprise has popped up. I don't think this has been discussed before.
</p>
<p>
-24.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a> says that the only operation that can be performed on "singular"
+24.1 <a href="lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a> says that the only operation that can be performed on "singular"
iterator values is to assign a non-singular value to them. (It
doesn't say they can be destroyed, and that's probably a defect.)
Some implementations have taken this to imply that there is no need
@@ -4833,7 +3274,7 @@ T(), and so copying is defined if the result of T() is copyable.
</p>
<p>
-Issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#235">235</a>, which defines reverse_iterator's default
+Issue <a href="lwg-defects.html#235">235</a>, which defines reverse_iterator's default
constructor more precisely, has some relevance to this issue.
However, it is not the whole story.
</p>
@@ -4859,7 +3300,7 @@ uninitialized, and possibly equal to an existing pointer value, or
<p>
8.5 paragraph 5 seems to make clear that the second is required to
-satisfy DR <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#235">235</a>, at least for non-class Iterator argument
+satisfy DR <a href="lwg-defects.html#235">235</a>, at least for non-class Iterator argument
types.
</p>
@@ -4886,8 +3327,7 @@ are default-initialized, and it should explicitly allow destroying any
iterator value, singular or not, default-initialized or not.
</p>
-<p>Related issue: <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#407">407</a>
-</p>
+<p>Related issue: <a href="lwg-defects.html#407">407</a></p>
<p><b>Proposed resolution:</b></p>
<p><i>[
@@ -4901,10 +3341,9 @@ wrong to impose so strict a requirement for iterators.
]</i></p>
<hr>
-<a name="409"><h3>409.&nbsp;Closing an fstream should clear error state</h3></a><p>
-<b>Section:</b>&nbsp;27.8.1.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ifstream.members"> [lib.ifstream.members]</a>, 27.8.1.10 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ofstream.members"> [lib.ofstream.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;3 June 2003</p>
+<a name="409"><h3>409.&nbsp;Closing an fstream should clear error state</h3></a><p><b>Section:</b>&nbsp;27.8.1.7 <a href="lib-iostreams.html#lib.ifstream.members"> [lib.ifstream.members]</a>, 27.8.1.10 <a href="lib-iostreams.html#lib.ofstream.members"> [lib.ofstream.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;3 June 2003</p>
<p>
-A strict reading of 27.8.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.fstreams"> [lib.fstreams]</a> shows that opening or
+A strict reading of 27.8.1 <a href="lib-iostreams.html#lib.fstreams"> [lib.fstreams]</a> shows that opening or
closing a basic_[io]fstream does not affect the error bits. This
means, for example, that if you read through a file up to EOF, and
then close the stream and reopen it at the beginning of the file,
@@ -4912,7 +3351,7 @@ the EOF bit in the stream's error state is still set. This is
counterintuitive.
</p>
<p>
-The LWG considered this issue once before, as issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#22">22</a>,
+The LWG considered this issue once before, as issue <a href="lwg-defects.html#22">22</a>,
and put in a footnote to clarify that the strict reading was indeed
correct. We did that because we believed the standard was
unambiguous and consistent, and that we should not make architectural
@@ -4921,94 +3360,124 @@ language, those considerations no longer apply.
</p>
<p><b>Proposed resolution:</b></p>
-<p>Change 27.8.1.4, para. 3 from:</p>
+<p>Change 27.8.1.7 <a href="lib-iostreams.html#lib.ifstream.members"> [lib.ifstream.members]</a>, para. 3 from:</p>
+
+<blockquote>
+Calls rdbuf()-&gt;open(s,mode|in). If that function returns a null pointer, calls setstate(failbit) (which may throw ios_base::failure [Footnote: (lib.iostate.flags)).
+</blockquote>
+
+<p>to:</p>
+
+<blockquote>
+Calls rdbuf()-&gt;open(s,mode|in). If that function returns a null pointer, calls setstate(failbit) (which may throw ios_base::failure [Footnote: (lib.iostate.flags)), else calls clear().
+</blockquote>
+
+<p>Change 27.8.1.10 <a href="lib-iostreams.html#lib.ofstream.members"> [lib.ofstream.members]</a>, para. 3 from:</p>
+
<blockquote>
-If the open operation succeeds and ( mode &amp; ios_base::ate) != 0,
-positions the file to the end (``as if'' by calling
-std::fseek(file,0,SEEK_END)).
+Calls rdbuf()-&gt;open(s,mode|out). If that function returns a null pointer, calls setstate(failbit) (which may throw ios_base::failure [Footnote: (lib.iostate.flags)).
</blockquote>
+
<p>to:</p>
+
<blockquote>
-If the open operation succeeds, calls clear(0). Then if
-( mode &amp; ios_base::ate) != 0, positions the file to the end
-(``as if'' by calling std::fseek(file,0,SEEK_END)).
+Calls rdbuf()-&gt;open(s,mode|out). If that function returns a null pointer, calls setstate(failbit) (which may throw ios_base::failure [Footnote: (lib.iostate.flags)), else calls clear().
</blockquote>
+<p>Change 27.8.1.13 <a href="lib-iostreams.html#lib.fstream.members"> [lib.fstream.members]</a>, para. 3 from:</p>
+
+<blockquote>
+Calls rdbuf()-&gt;open(s,mode), If that function returns a null pointer, calls setstate(failbit), (which may throw ios_base::failure). (lib.iostate.flags) )
+</blockquote>
+
+<p>to:</p>
+
+<blockquote>
+Calls rdbuf()-&gt;open(s,mode), If that function returns a null pointer, calls setstate(failbit), (which may throw ios_base::failure). (lib.iostate.flags) ), else calls clear().
+</blockquote>
+
+
+
<p><i>[Kona: the LWG agrees this is a good idea. Post-Kona: Bill
provided wording. He suggests having open, not close, clear the error
flags.]</i></p>
+<p><i>[Post-Sydney: Howard provided a new proposed resolution. The
+ old one didn't make sense because it proposed to fix this at the
+ level of basic_filebuf, which doesn't have access to the stream's
+ error state. Howard's proposed resolution fixes this at the level
+ of the three fstream class template instead.]</i></p>
+
<hr>
-<a name="410"><h3>410.&nbsp;Missing semantics for stack and queue comparison operators</h3></a><p>
-<b>Section:</b>&nbsp;23.2.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.queue"> [lib.queue]</a>, 23.2.3.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.stack"> [lib.stack]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Hans Bos&nbsp; <b>Date:</b>&nbsp;7 Jun 2003</p>
+<a name="410"><h3>410.&nbsp;Missing semantics for stack and queue comparison operators</h3></a><p><b>Section:</b>&nbsp;23.2.3.1 <a href="lib-containers.html#lib.queue"> [lib.queue]</a>, 23.2.3.3 <a href="lib-containers.html#lib.stack"> [lib.stack]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Hans Bos&nbsp; <b>Date:</b>&nbsp;7 Jun 2003</p>
<p>
-Sections 23.2.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.queue"> [lib.queue]</a> and 23.2.3.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.stack"> [lib.stack]</a> list
+Sections 23.2.3.1 <a href="lib-containers.html#lib.queue"> [lib.queue]</a> and 23.2.3.3 <a href="lib-containers.html#lib.stack"> [lib.stack]</a> list
comparison operators (==, !=, &lt;, &lt;=, &gt;, =&gt;) for queue and
-stack. Only the semantics for queue::operator== (23.2.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.queue"> [lib.queue]</a> par2) and queue::operator&lt; (23.2.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.queue"> [lib.queue]</a>
+stack. Only the semantics for queue::operator== (23.2.3.1 <a href="lib-containers.html#lib.queue"> [lib.queue]</a> par2) and queue::operator&lt; (23.2.3.1 <a href="lib-containers.html#lib.queue"> [lib.queue]</a>
par3) are defined.
</p>
<p><b>Proposed resolution:</b></p>
-<p>Add the following new paragraphs after 23.2.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.queue"> [lib.queue]</a>
+<p>Add the following new paragraphs after 23.2.3.1 <a href="lib-containers.html#lib.queue"> [lib.queue]</a>
paragraph 3:</p>
<blockquote>
-<pre> operator!=
+<pre>
+ operator!=
</pre>
-<p>Returns: <tt>x.c != y.c</tt>
-</p>
+<p>Returns: <tt>x.c != y.c</tt></p>
-<pre> operator&gt;
+<pre>
+ operator&gt;
</pre>
-<p>Returns: <tt>x.c &gt; y.c</tt>
-</p>
+<p>Returns: <tt>x.c &gt; y.c</tt></p>
-<pre> operator&lt;=
+<pre>
+ operator&lt;=
</pre>
-<p>Returns: <tt>x.c &lt;= y.c</tt>
-</p>
+<p>Returns: <tt>x.c &lt;= y.c</tt></p>
-<pre> operator&gt;=
+<pre>
+ operator&gt;=
</pre>
-<p>Returns: <tt>x.c &gt;= y.c</tt>
-</p>
+<p>Returns: <tt>x.c &gt;= y.c</tt></p>
</blockquote>
-<p>Add the following paragraphs at the end of 23.2.3.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.stack"> [lib.stack]</a>:</p>
+<p>Add the following paragraphs at the end of 23.2.3.3 <a href="lib-containers.html#lib.stack"> [lib.stack]</a>:</p>
<blockquote>
-<pre> operator==
+<pre>
+ operator==
</pre>
-<p>Returns: <tt>x.c == y.c</tt>
-</p>
+<p>Returns: <tt>x.c == y.c</tt></p>
-<pre> operator&lt;
+<pre>
+ operator&lt;
</pre>
-<p>Returns: <tt>x.c &lt; y.c</tt>
-</p>
+<p>Returns: <tt>x.c &lt; y.c</tt></p>
-<pre> operator!=
+<pre>
+ operator!=
</pre>
-<p>Returns: <tt>x.c != y.c</tt>
-</p>
+<p>Returns: <tt>x.c != y.c</tt></p>
-<pre> operator&gt;
+<pre>
+ operator&gt;
</pre>
-<p>Returns: <tt>x.c &gt; y.c</tt>
-</p>
+<p>Returns: <tt>x.c &gt; y.c</tt></p>
-<pre> operator&lt;=
+<pre>
+ operator&lt;=
</pre>
-<p>Returns: <tt>x.c &lt;= y.c</tt>
-</p>
+<p>Returns: <tt>x.c &lt;= y.c</tt></p>
-<pre> operator&gt;=
+<pre>
+ operator&gt;=
</pre>
-<p>Returns: <tt>x.c &gt;= y.c</tt>
-</p>
+<p>Returns: <tt>x.c &gt;= y.c</tt></p>
</blockquote>
@@ -5019,27 +3488,9 @@ par3) are defined.
There isn't any real doubt about what these operators are
supposed to do, but we ought to spell it out.
<hr>
-<a name="411"><h3>411.&nbsp;Wrong names of set member functions</h3></a><p>
-<b>Section:</b>&nbsp;25.3.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.set.operations"> [lib.alg.set.operations]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Daniel Frey&nbsp; <b>Date:</b>&nbsp;9 Jul 2003</p>
-<p>
-25.3.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.set.operations"> [lib.alg.set.operations]</a> paragraph 1 reads:
-"The semantics of the set operations are generalized to multisets in a
-standard way by defining union() to contain the maximum number of
-occurrences of every element, intersection() to contain the minimum, and
-so on."
-</p>
-
+<a name="412"><h3>412.&nbsp;Typo in 27.4.4.3</h3></a><p><b>Section:</b>&nbsp;27.4.4.3 <a href="lib-iostreams.html#lib.iostate.flags"> [lib.iostate.flags]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;10 Jul 2003</p>
<p>
-This is wrong. The name of the functions are set_union() and
-set_intersection(), not union() and intersection().
-</p>
-<p><b>Proposed resolution:</b></p>
-<p>Change that sentence to use the correct names.</p>
-<hr>
-<a name="412"><h3>412.&nbsp;Typo in 27.4.4.3</h3></a><p>
-<b>Section:</b>&nbsp;27.4.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.iostate.flags"> [lib.iostate.flags]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;10 Jul 2003</p>
-<p>
-The Effects clause in 27.4.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.iostate.flags"> [lib.iostate.flags]</a> paragraph 5 says that the
+The Effects clause in 27.4.4.3 <a href="lib-iostreams.html#lib.iostate.flags"> [lib.iostate.flags]</a> paragraph 5 says that the
function only throws if the respective bits are already set prior to
the function call. That's obviously not the intent. The typo ought to
be corrected and the text reworded as: "If (<i>state</i> &amp;
@@ -5047,7 +3498,7 @@ exceptions()) == 0, returns. ..."
</p>
<p><b>Proposed resolution:</b></p>
<p>
-In 27.4.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.iostate.flags"> [lib.iostate.flags]</a> paragraph 5, replace "If (rdstate() &amp;
+In 27.4.4.3 <a href="lib-iostreams.html#lib.iostate.flags"> [lib.iostate.flags]</a> paragraph 5, replace "If (rdstate() &amp;
exceptions()) == 0" with "If ((state | (rdbuf() ? goodbit : badbit))
&amp; exceptions()) == 0".
</p>
@@ -5059,8 +3510,7 @@ exceptions()) == 0" with "If ((state | (rdbuf() ? goodbit : badbit))
latter, of course. Post-Kona: Martin provided wording.]</i></p>
<hr>
-<a name="413"><h3>413.&nbsp;Proposed resolution to LDR#64 still wrong</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Bo Persson&nbsp; <b>Date:</b>&nbsp;13 Jul 2003</p>
+<a name="413"><h3>413.&nbsp;Proposed resolution to LDR#64 still wrong</h3></a><p><b>Section:</b>&nbsp;27.6.1.2.3 <a href="lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Bo Persson&nbsp; <b>Date:</b>&nbsp;13 Jul 2003</p>
<p>
The second sentence of the proposed resolution says:
</p>
@@ -5075,72 +3525,22 @@ However, we are not extracting from sb, but extracting from the
basic_istream (*this) and inserting into sb. I can't really tell if
"extracting" or "sb" is a typo.
</p>
-<p><b>Proposed resolution:</b></p>
-<hr>
-<a name="414"><h3>414.&nbsp;Which iterators are invalidated by v.erase()?</h3></a><p>
-<b>Section:</b>&nbsp;23.2.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.modifiers"> [lib.vector.modifiers]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;19 Aug 2003</p>
-<p>
-Consider the following code fragment:
-</p>
-<blockquote>
-<pre>int A[8] = { 1,3,5,7,9,8,4,2 };
-std::vector&lt;int&gt; v(A, A+8);
-
-std::vector&lt;int&gt;::iterator i1 = v.begin() + 3;
-std::vector&lt;int&gt;::iterator i2 = v.begin() + 4;
-v.erase(i1);
-</pre>
-</blockquote>
-
-<p>
-Which iterators are invalidated by <tt>v.erase(i1)</tt>: i1, i2,
-both, or neither?
-</p>
-<p>
-On all existing implementations that I know of, the status of i1 and
-i2 is the same: both of them will be iterators that point to some
-elements of the vector (albeit not the same elements they did
-before). You won't get a crash if you use them. Depending on
-exactly what you mean by "invalidate", you might say that neither one
-has been invalidated because they still point to <i>something</i>,
-or you might say that both have been invalidated because in both
-cases the elements they point to have been changed out from under the
-iterator.
-</p>
-
-<p>
-The standard doesn't say either of those things. It says that erase
-invalidates all iterators and references "after the point of the
-erase". This doesn't include i1, since it's at the point of the
-erase instead of after it. I can't think of any sensible definition
-of invalidation by which one can say that i2 is invalidated but i1
-isn't.
-</p>
+<p><i>[
+Sydney: Definitely a real issue. We are, indeed, extracting characters
+from an istream and not from sb. The problem was there in the FDIS and
+wasn't fixed by issue <a href="lwg-defects.html#64">64</a>. Probably what was intended was
+to have *this instead of sb. We're talking about the exception flag
+state of a basic_istream object, and there's only one basic_istream
+object in this discussion, so that would be a consistent
+interpretation. (But we need to be careful: the exception policy of
+this member function must be consistent with that of other
+extractors.) PJP will provide wording.
+]</i></p>
-<p>
-(This issue is important if you try to reason about iterator validity
-based only on the guarantees in the standard, rather than reasoning
-from typical implementation techniques. Strict debugging modes,
-which some programmers find useful, do not use typical implementation
-techniques.)
-</p>
<p><b>Proposed resolution:</b></p>
-<p>
-In 23.2.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.modifiers"> [lib.vector.modifiers]</a> paragraph 3, change "Invalidates all the
-iterators and references after the point of the erase" to
-"Invalidates iterators and references at or after the point of the
-erase".
-</p>
-<p><b>Rationale:</b></p>
-<p>I believe this was essentially a typographical error, and that it
- was taken for granted that erasing an element invalidates iterators
- that point to it. The effects clause in question treats iterators
- and references in parallel, and it would seem counterintuitive to
- say that a reference to an erased value remains valid.</p>
<hr>
-<a name="415"><h3>415.&nbsp;behavior of std::ws</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.manip"> [lib.istream.manip]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
+<a name="415"><h3>415.&nbsp;behavior of std::ws</h3></a><p><b>Section:</b>&nbsp;27.6.1.4 <a href="lib-iostreams.html#lib.istream.manip"> [lib.istream.manip]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
<p>
According to 27.6.1.4, the ws() manipulator is not required to construct
the sentry object. The manipulator is also not a member function so the
@@ -5153,7 +3553,7 @@ doesn't affect the stream's gcount).
</p>
<p><b>Proposed resolution:</b></p>
<p>
-Add to 27.6.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.manip"> [lib.istream.manip]</a>, immediately before the first sentence
+Add to 27.6.1.4 <a href="lib-iostreams.html#lib.istream.manip"> [lib.istream.manip]</a>, immediately before the first sentence
of paragraph 1, the following text:
</p>
@@ -5168,8 +3568,7 @@ of paragraph 1, the following text:
<p><i>[Post-Kona: Martin provided wording]</i></p>
<hr>
-<a name="416"><h3>416.&nbsp;definitions of XXX_MIN and XXX_MAX macros in climits</h3></a><p>
-<b>Section:</b>&nbsp;18.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.c.limits"> [lib.c.limits]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
+<a name="416"><h3>416.&nbsp;definitions of XXX_MIN and XXX_MAX macros in climits</h3></a><p><b>Section:</b>&nbsp;18.2.2 <a href="lib-support.html#lib.c.limits"> [lib.c.limits]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
<p>
Given two overloads of the function foo(), one taking an argument of type
@@ -5218,8 +3617,7 @@ where the actual type is easily detectable by overload resolution.
&lt;climits&gt;.]</i></p>
<hr>
-<a name="417"><h3>417.&nbsp;what does ctype::do_widen() return on failure</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
+<a name="417"><h3>417.&nbsp;what does ctype::do_widen() return on failure</h3></a><p><b>Section:</b>&nbsp;22.2.1.1.2 <a href="lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
<p>
The Effects and Returns clauses of the do_widen() member function of
the ctype facet fail to specify the behavior of the function on failure.
@@ -5241,8 +3639,7 @@ and iostream to reliably detect this failure.
existing library components aren't written with the assumption
that <i>widen</i> can throw.]</i></p>
<hr>
-<a name="418"><h3>418.&nbsp;exceptions thrown during iostream cleanup</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.1.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios::Init"> [lib.ios::Init]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
+<a name="418"><h3>418.&nbsp;exceptions thrown during iostream cleanup</h3></a><p><b>Section:</b>&nbsp;27.4.2.1.6 <a href="lib-iostreams.html#lib.ios::Init"> [lib.ios::Init]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
<p>
The dtor of the ios_base::Init object is supposed to call flush() on the
6 standard iostream objects cout, cerr, clog, wcout, wcerr, and wclog.
@@ -5268,8 +3665,7 @@ object throws.
might reasonably swallow the exception, or call abort, or do
something even more drastic.]</i></p>
<hr>
-<a name="419"><h3>419.&nbsp;istream extractors not setting failbit if eofbit is already set</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
+<a name="419"><h3>419.&nbsp;istream extractors not setting failbit if eofbit is already set</h3></a><p><b>Section:</b>&nbsp;27.6.1.1.2 <a href="lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
<p>
27.6.1.1.2, p2 says that istream::sentry ctor prepares for input if is.good()
@@ -5288,6 +3684,7 @@ eof = 1, fail = 1
on all of them.
</p>
<pre>
+
#include &lt;sstream&gt;
#include &lt;cstdio&gt;
@@ -5347,29 +3744,7 @@ corrected.
clearer.</p>
<hr>
-<a name="420"><h3>420.&nbsp;is std::FILE a complete type?</h3></a><p>
-<b>Section:</b>&nbsp;27.8.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.fstreams"> [lib.fstreams]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
-<p>
-7.19.1, p2, of C99 requires that the FILE type only be declared in
-&lt;stdio.h&gt;. None of the (implementation-defined) members of the
-struct is mentioned anywhere for obvious reasons.
-</p>
-
-<p>
-C++ says in 27.8.1, p2 that FILE is a type that's defined in &lt;cstdio&gt;. Is
-it really the intent that FILE be a complete type or is an implementation
-allowed to just declare it without providing a full definition?
-</p>
-<p><b>Proposed resolution:</b></p>
-<p>In the first sentence of 27.8.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.fstreams"> [lib.fstreams]</a> paragraph 2, change
- "defined" to "declared".</p>
-<p><b>Rationale:</b></p>
-<p>We don't want to impose any restrictions beyond what the C standard
- already says. We don't want to make anything implementation defined,
- because that imposes new requirements in implementations.</p>
-<hr>
-<a name="421"><h3>421.&nbsp;is basic_streambuf copy-constructible?</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.cons"> [lib.streambuf.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
+<a name="421"><h3>421.&nbsp;is basic_streambuf copy-constructible?</h3></a><p><b>Section:</b>&nbsp;27.5.2.1 <a href="lib-iostreams.html#lib.streambuf.cons"> [lib.streambuf.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
<p>
The reflector thread starting with c++std-lib-11346 notes that the class
template basic_streambuf, along with basic_stringbuf and basic_filebuf,
@@ -5388,9 +3763,119 @@ of the standard provide a compiler-generated copy ctor and assignment
operator yet fail to specify their semantics. It's believed that the
only types for which this is actually a problem (i.e. types where the
compiler-generated default may be inappropriate and may not have been
-intended) are locale facets. See issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#439">439</a>.
+intended) are locale facets. See issue <a href="lwg-closed.html#439">439</a>.
</p>
<p><b>Proposed resolution:</b></p>
+<p>
+27.5.2 [lib.streambuf]: Add into the synopsis, public section, just above the destructor declaration:
+</p>
+
+<blockquote>
+<pre>
+basic_streambuf(const basic_streambuf&amp; sb);
+basic_streambuf&amp; operator=(const basic_streambuf&amp; sb);
+</pre>
+</blockquote>
+
+<p>Insert after 27.5.2.1, paragraph 2:</p>
+<blockquote>
+<pre>
+basic_streambuf(const basic_streambuf&amp; sb);
+</pre>
+
+<p>Constructs a copy of sb.</p>
+<p>Postcondtions:</p>
+<pre>
+ eback() == sb.eback()
+ gptr() == sb.gptr()
+ egptr() == sb.egptr()
+ pbase() == sb.pbase()
+ pptr() == sb.pptr()
+ epptr() == sb.epptr()
+ getloc() == sb.getloc()
+</pre>
+
+<pre>
+basic_streambuf&amp; operator=(const basic_streambuf&amp; sb);
+</pre>
+
+<p>Assigns the data members of sb to this.</p>
+
+<p>Postcondtions:</p>
+<pre>
+ eback() == sb.eback()
+ gptr() == sb.gptr()
+ egptr() == sb.egptr()
+ pbase() == sb.pbase()
+ pptr() == sb.pptr()
+ epptr() == sb.epptr()
+ getloc() == sb.getloc()
+</pre>
+
+<p>Returns: *this.</p>
+</blockquote>
+
+<p>27.7.1 [lib.stringbuf]:</p>
+
+<b>Option A:</b>
+
+<blockquote>
+<p>Insert into the basic_stringbuf synopsis in the private section:</p>
+
+<pre>
+basic_stringbuf(const basic_stringbuf&amp;); // not defined
+basic_stringbuf&amp; operator=(const basic_stringbuf&amp;); // not defined
+</pre>
+</blockquote>
+
+<b>Option B:</b>
+
+<blockquote>
+<p>Insert into the basic_stringbuf synopsis in the public section:</p>
+
+<pre>
+basic_stringbuf(const basic_stringbuf&amp; sb);
+basic_stringbuf&amp; operator=(const basic_stringbuf&amp; sb);
+</pre>
+
+<p>27.7.1.1, insert after paragraph 4:</p>
+
+<pre>basic_stringbuf(const basic_stringbuf&amp; sb);</pre>
+
+<p>
+Constructs an independent copy of sb as if with sb.str(), and with the openmode that sb was constructed with.
+</p>
+
+<p>Postcondtions: </p>
+<pre>
+ str() == sb.str()
+ gptr() - eback() == sb.gptr() - sb.eback()
+ egptr() - eback() == sb.egptr() - sb.eback()
+ pptr() - pbase() == sb.pptr() - sb.pbase()
+ getloc() == sb.getloc()
+</pre>
+
+<p>
+Note: The only requirement on epptr() is that it point beyond the initialized range if an output sequence exists. There is no requirement that epptr() - pbase() == sb.epptr() - sb.pbase().
+</p>
+
+<pre>basic_stringbuf&amp; operator=(const basic_stringbuf&amp; sb);</pre>
+<p>
+After assignment the basic_stringbuf has the same state as if it were initially copy constructed from sb, except that the basic_stringbuf is allowed to retain any excess capacity it might have, which may in turn effect the value of epptr().
+</p>
+</blockquote>
+
+<p>27.8.1.1 [lib.filebuf]</p>
+
+<p>Insert at the bottom of the basic_filebuf synopsis:</p>
+
+<blockquote>
+<pre>
+private:
+ basic_filebuf(const basic_filebuf&amp;); // not defined
+ basic_filebuf&amp; operator=(const basic_filebuf&amp;); // not defined
+</pre>
+</blockquote>
<p><i>[Kona: this is an issue for basic_streambuf itself and for its
derived classes. We are leaning toward allowing basic_streambuf to
be copyable, and specifying its precise semantics. (Probably the
@@ -5398,9 +3883,45 @@ intended) are locale facets. See issue <a href="http://anubis.dkuug.dk/jtc1/sc2
the streambuf derived classes should be copyable. Howard will
write up a proposal.]</i></p>
+<p><i>[Sydney: Dietmar presented a new argument against basic_streambuf
+ being copyable: it can lead to an encapsulation violation. Filebuf
+ inherits from streambuf. Now suppose you inhert a my_hijacking_buf
+ from streambuf. You can copy the streambuf portion of a filebuf to a
+ my_hijacking_buf, giving you access to the pointers into the
+ filebuf's internal buffer. Perhaps not a very strong argument, but
+ it was strong enough to make people nervous. There was weak
+ preference for having streambuf not be copyable. There was weak
+ preference for having stringbuf not be copyable even if streambuf
+ is. Move this issue to open for now.
+]</i></p>
+
+<p><b>Rationale:</b></p>
+<p>
+27.5.2 [lib.streambuf]: The proposed basic_streambuf copy constructor
+and assignment operator are the same as currently implied by the lack
+of declarations: public and simply copies the data members. This
+resolution is not a change but a clarification of the current
+standard.
+</p>
+
+<p>
+27.7.1 [lib.stringbuf]: There are two reasonable options: A) Make
+basic_stringbuf not copyable. This is likely the status-quo of
+current implementations. B) Reasonable copy semantics of
+basic_stringbuf can be defined and implemented. A copyable
+basic_streambuf is arguably more useful than a non-copyable one. This
+should be considered as new functionality and not the fixing of a
+defect. If option B is chosen, ramifications from issue 432 are taken
+into account.
+</p>
+
+<p>
+27.8.1.1 [lib.filebuf]: There are no reasonable copy semantics for
+basic_filebuf.
+</p>
+
<hr>
-<a name="422"><h3>422.&nbsp;explicit specializations of member functions of class templates</h3></a><p>
-<b>Section:</b>&nbsp;17.4.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
+<a name="422"><h3>422.&nbsp;explicit specializations of member functions of class templates</h3></a><p><b>Section:</b>&nbsp;17.4.3.1 <a href="lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
<p>
It has been suggested that 17.4.3.1, p1 may or may not allow programs to
explicitly specialize members of standard templates on user-defined types.
@@ -5414,7 +3935,7 @@ the program) by relying on the "as if" rule.
<p><b>Proposed resolution:</b></p>
<p>
- Add the following sentence immediately after the text of 17.4.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a>, p1:
+ Add the following sentence immediately after the text of 17.4.3.1 <a href="lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a>, p1:
</p>
<blockquote>
@@ -5430,9 +3951,15 @@ the program) by relying on the "as if" rule.
library class templates, and that doing so invokes undefined
behavior. Post-Kona: Martin provided wording.]</i></p>
+<p><i>[Sydney: The LWG agrees that the standard shouldn't permit users
+to specialize individual member functions unless they specialize the
+whole class, but we're not sure these words say what we want them to;
+they could be read as prohibiting the specialization of any standard
+library class templates. We need to consult with CWG to make sure we
+use the right wording.]</i></p>
+
<hr>
-<a name="423"><h3>423.&nbsp;effects of negative streamsize in iostreams</h3></a><p>
-<b>Section:</b>&nbsp;27 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
+<a name="423"><h3>423.&nbsp;effects of negative streamsize in iostreams</h3></a><p><b>Section:</b>&nbsp;27 <a href="lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
<p>
A third party test suite tries to exercise istream::ignore(N) with
@@ -5462,8 +3989,7 @@ ostream::write().
negative. Martin will do that review.]</i></p>
<hr>
-<a name="424"><h3>424.&nbsp;normative notes</h3></a><p>
-<b>Section:</b>&nbsp;17.3.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.structure.summary"> [lib.structure.summary]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
+<a name="424"><h3>424.&nbsp;normative notes</h3></a><p><b>Section:</b>&nbsp;17.3.1.1 <a href="lib-intro.html#lib.structure.summary"> [lib.structure.summary]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
<p>
The text in 17.3.1.1, p1 says:
@@ -5514,8 +4040,7 @@ None of these lists is meant to be exhaustive.
]</i></p>
<hr>
-<a name="425"><h3>425.&nbsp;return value of std::get_temporary_buffer</h3></a><p>
-<b>Section:</b>&nbsp;20.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.temporary.buffer"> [lib.temporary.buffer]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
+<a name="425"><h3>425.&nbsp;return value of std::get_temporary_buffer</h3></a><p><b>Section:</b>&nbsp;20.4.3 <a href="lib-utilities.html#lib.temporary.buffer"> [lib.temporary.buffer]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
<p>
The standard is not clear about the requirements on the value returned from
a call to get_temporary_buffer(0). In particular, it fails to specify whether
@@ -5525,13 +4050,12 @@ malloc). The standard also fails to mention what the required behavior
is when the argument is less than 0.
</p>
<p><b>Proposed resolution:</b></p>
-<p>Change 20.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.temporary.buffer"> [lib.temporary.buffer]</a> paragraph 2 from "...or a pair of 0
+<p>Change 20.4.3 <a href="lib-utilities.html#lib.temporary.buffer"> [lib.temporary.buffer]</a> paragraph 2 from "...or a pair of 0
values if no storage can be obtained" to "...or a pair of 0 values if
no storage can be obtained or if <i>n</i> &lt;= 0."</p>
<p><i>[Kona: Matt provided wording]</i></p>
<hr>
-<a name="426"><h3>426.&nbsp;search_n(), fill_n(), and generate_n() with negative n</h3></a><p>
-<b>Section:</b>&nbsp;25.1.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.search"> [lib.alg.search]</a>, 25.2.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.fill"> [lib.alg.fill]</a>, 25.2.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.generate"> [lib.alg.generate]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
+<a name="426"><h3>426.&nbsp;search_n(), fill_n(), and generate_n() with negative n</h3></a><p><b>Section:</b>&nbsp;25.1.9 <a href="lib-algorithms.html#lib.alg.search"> [lib.alg.search]</a>, 25.2.5 <a href="lib-algorithms.html#lib.alg.fill"> [lib.alg.fill]</a>, 25.2.6 <a href="lib-algorithms.html#lib.alg.generate"> [lib.alg.generate]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
<p>
The complexity requirements for these function templates are incorrect
(or don't even make sense) for negative n:</p>
@@ -5559,20 +4083,19 @@ templates don't say anything about the behavior when n is negative.
<blockquote>
Complexity: At most (last1 - first1) * count applications
-of the corresponding predicate if count is non-negative,
+of the corresponding predicate if count is positive,
or 0 otherwise.
</blockquote>
<p>Change 25.2.5, p2 to</p>
<blockquote>
-Effects: Assigns value through all the iterators in the
-range [first, last), or [first, first + n) if n is non
-negative, none otherwise.
+Effects: Assigns value through all the iterators in the range [first,
+last), or [first, first + n) if n is positive, none otherwise.
</blockquote>
<p>Change 25.2.5, p3 to:</p>
<blockquote>
-Complexity: Exactly last - first (or n if n is non-negative,
+Complexity: Exactly last - first (or n if n is positive,
or 0 otherwise) assignments.
</blockquote>
@@ -5583,24 +4106,23 @@ to (notice the correction for the misspelled "through"):
<blockquote>
Effects: Invokes the function object genand assigns the return
value of gen through all the iterators in the range [first, last),
-or [first, first + n) if n is non-negative, or [first, first)
+or [first, first + n) if n is positive, or [first, first)
otherwise.
</blockquote>
<p>Change 25.2.6, p3 to:</p>
<blockquote>
-Complexity: Exactly last - first (or n if n is non-negative,
+Complexity: Exactly last - first (or n if n is positive,
or 0 otherwise) assignments.
</blockquote>
<p><b>Rationale:</b></p>
<p>Informally, we want to say that whenever we see a negative number
we treat it the same as if it were zero. We believe the above
- changes do that (although they probably aren't the minimal way of
- saying so). The LWG considered and rejected the alternative of
- saying that negative numbers are undefined behavior.</p>
+ changes do that (although they may not be the minimal way of saying
+ so). The LWG considered and rejected the alternative of saying that
+ negative numbers are undefined behavior.</p>
<hr>
-<a name="427"><h3>427.&nbsp;stage 2 and rationale of DR 221</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
+<a name="427"><h3>427.&nbsp;stage 2 and rationale of DR 221</h3></a><p><b>Section:</b>&nbsp;22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
<p>
The requirements specified in Stage 2 and reiterated in the rationale
of DR 221 (and echoed again in DR 303) specify that num_get&lt;charT&gt;::
@@ -5628,39 +4150,26 @@ instantiate the num_get template on user-defined types.
traits parameters. This is a fundamental design flaw and it
appears all over the place, not just in this one place. It's not
clear what the correct solution is, but a thorough review of facets
- and traits is in order. (The LWG considered and rejected the
+ and traits is in order. The LWG considered and rejected the
possibility of changing numeric facets to use narrowing instead of
- widening: it wouldn't fix the general problem, it would be a
- drastic reversal of a deliberate change, and it would probably have
- unfortunate performance implications.)]</i></p>
-<hr>
-<a name="428"><h3>428.&nbsp;string::erase(iterator) validity</h3></a><p>
-<b>Section:</b>&nbsp;21.3.5.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string::erase"> [lib.string::erase]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
-<p>
-23.1.1, p3 along with Table 67 specify as a prerequisite for a.erase(q)
-that q must be a valid dereferenceable iterator into the sequence a.
-</p>
-
-<p>
-However, 21.3.5.5, p5 describing string::erase(p) only requires that
-p be a valid iterator.
-</p>
+ widening. This may be a good idea for other reasons (see issue
+ <a href="lwg-active.html#459">459</a>), but it doesn't solve the problem raised by this
+ issue. Whether we use widen or narrow the <tt>num_get</tt> facet
+ still has no idea which traits class the user wants to use for
+ the comparison, because only streams, not facets, are passed traits
+ classes. The standard does not require that two different
+ traits classes with the same <tt>char_type</tt> must necessarily
+ have the same behavior.]</i></p>
+
+<p>Informally, one possibility: require that some of the basic
+character operations, such as <tt>eq</tt>, <tt>lt</tt>,
+and <tt>assign</tt>, must behave the same way for all traits classes
+with the same <tt>char_type</tt>. If we accept that limitation on
+traits classes, then the facet could reasonably be required to
+use <tt>char_traits&lt;charT&gt;</tt></p>.
-<p>
-This may be interepreted as a relaxation of the general requirement,
-which is most likely not the intent.
-</p>
-<p><b>Proposed resolution:</b></p>
-<p>Remove 21.3.5.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string::erase"> [lib.string::erase]</a> paragraph 5.</p>
-<p><b>Rationale:</b></p>
-<p>The LWG considered two options: changing the string requirements to
- match the general container requirements, or just removing the
- erroneous string requirements altogether. The LWG chose the latter
- option, on the grounds that duplicating text always risks the
- possibility that it might be duplicated incorrectly.</p>
<hr>
-<a name="430"><h3>430.&nbsp;valarray subset operations</h3></a><p>
-<b>Section:</b>&nbsp;26.3.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.valarray.sub"> [lib.valarray.sub]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
+<a name="430"><h3>430.&nbsp;valarray subset operations</h3></a><p><b>Section:</b>&nbsp;26.3.2.4 <a href="lib-numerics.html#lib.valarray.sub"> [lib.valarray.sub]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
<p>
The standard fails to specify the behavior of valarray::operator[](slice)
and other valarray subset operations when they are passed an "invalid"
@@ -5674,9 +4183,8 @@ object (e.g., slice (2, 1, 1) for a valarray of size 1).
performance, so we don't want to require specific checking. We
need wording to express this decision.]</i></p>
<hr>
-<a name="431"><h3>431.&nbsp;Swapping containers with unequal allocators</h3></a><p>
-<b>Section:</b>&nbsp;20.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>, 25 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;20 Sep 2003</p>
-<p>Clause 20.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a> paragraph 4 says that implementations
+<a name="431"><h3>431.&nbsp;Swapping containers with unequal allocators</h3></a><p><b>Section:</b>&nbsp;20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>, 25 <a href="lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;20 Sep 2003</p>
+<p>Clause 20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a> paragraph 4 says that implementations
are permitted to supply containers that are unable to cope with
allocator instances and that container implementations may assume
that all instances of an allocator type compare equal. We gave
@@ -5699,7 +4207,8 @@ object (e.g., slice (2, 1, 1) for a valarray of size 1).
<p>3. The operation swaps both the vectors' contents and their
allocators. This would be an O(1) operation. That is:</p>
<blockquote>
- <pre> my_alloc a1(...);
+ <pre>
+ my_alloc a1(...);
my_alloc a2(...);
assert(a1 != a2);
@@ -5719,9 +4228,10 @@ object (e.g., slice (2, 1, 1) for a valarray of size 1).
<p><i>[Kona: This is part of a general problem. We need a paper
saying how to deal with unequal allocators in general.]</i></p>
+<p><i>[pre-Sydney: Howard argues for option 3 in n1599.]</i></p>
+
<hr>
-<a name="432"><h3>432.&nbsp;stringbuf::overflow() makes only one write position available</h3></a><p>
-<b>Section:</b>&nbsp;27.7.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Christian W Brock&nbsp; <b>Date:</b>&nbsp;24 Sep 2003</p>
+<a name="432"><h3>432.&nbsp;stringbuf::overflow() makes only one write position available</h3></a><p><b>Section:</b>&nbsp;27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Christian W Brock&nbsp; <b>Date:</b>&nbsp;24 Sep 2003</p>
<p>27.7.1.3 par 8 says:</p>
<blockquote>
Notes: The function can make a write position available only if
@@ -5751,31 +4261,248 @@ This WOULD force sputc() to call the virtual overflow() each time.
<p>The proposed change also affects Defect Report 169.</p>
<p><b>Proposed resolution:</b></p>
-<p>Change the paragraph in question to:</p>
+<p>27.7.1.1/2 Change:</p>
+
<blockquote>
-Notes: The function can make a write position available only if
- ( mode &amp; ios_base::out) != 0. To make a write position
- available, the function reallocates (or initially allocates) an
- array object with a sufficient number of elements to hold the
- current array object (if any), plus at least one additional write
- position. The function alters the write end
- pointer epptr() to point one position past
- the end of the new available write area.
- If ( mode &amp; ios_base::in) != 0, the function alters the read end
- pointer egptr() to point just past the new write position.
+2- Notes: The function allocates no array object.
</blockquote>
-<p><i>[Kona: we want to make this change because of efficiency, but we
- need to specify more precisely what the underlying character
- sequence is; the proposed change isn't enough. (We want the
- returned string to end with the last character written, for example,
- not the last character allocated. This probably implies that the
- stringbuf keep track of a high water mark.) Howard will provide
- wording.]</i></p>
+<p>
+to:
+</p>
+
+<blockquote>
+2- Postcondition: str() == "".
+</blockquote>
+
+<p>
+27.7.1.1/3 Change:
+</p>
+
+<blockquote>
+<p>
+-3- Effects: Constructs an object of class basic_stringbuf,
+initializing the base class with basic_streambuf()
+(lib.streambuf.cons), and initializing mode with which . Then copies
+the content of str into the basic_stringbuf underlying character
+sequence and initializes the input and output sequences according to
+which. If which &amp; ios_base::out is true, initializes the output
+sequence with the underlying sequence. If which &amp; ios_base::in is
+true, initializes the input sequence with the underlying sequence.
+</p>
+</blockquote>
+
+<p>to:</p>
+
+<blockquote>
+<p>
+-3- Effects: Constructs an object of class basic_stringbuf,
+initializing the base class with basic_streambuf()
+(lib.streambuf.cons), and initializing mode with which. Then copies
+the content of str into the basic_stringbuf underlying character
+sequence. If which &amp; ios_base::out is true, initializes the output
+sequence such that pbase() points to the first underlying character,
+epptr() points one past the last underlying character, and if (which &amp;
+ios_base::ate) is true, pptr() is set equal to
+epptr() else pptr() is set equal to pbase(). If which &amp; ios_base::in
+is true, initializes the input sequence such that eback() and gptr()
+point to the first underlying character and egptr() points one past
+the last underlying character.
+</p>
+</blockquote>
+
+<p>27.7.1.2/1 Change:</p>
+
+<blockquote>
+<p>
+-1- Returns: A basic_string object whose content is equal to the
+basic_stringbuf underlying character sequence. If the buffer is only
+created in input mode, the underlying character sequence is equal to
+the input sequence; otherwise, it is equal to the output sequence. In
+case of an empty underlying character sequence, the function returns
+basic_string&lt;charT,traits,Allocator&gt;().
+</p>
+</blockquote>
+
+<p>to:</p>
+
+<blockquote>
+<p>
+-1- Returns: A basic_string object whose content is equal to the
+basic_stringbuf underlying character sequence. If the basic_stringbuf
+was created only in input mode, the resultant basic_string contains
+the character sequence in the range [eback(), egptr()). If the
+basic_stringbuf was created with (which &amp; ios_base::out) being true
+then the resultant basic_string contains the character sequence in the
+range [pbase(), high_mark) where high_mark represents the position one
+past the highest initialized character in the buffer. Characters can
+be initialized either through writing to the stream, or by
+constructing the basic_stringbuf with a basic_string, or by calling
+the str(basic_string) member function. In the case of calling the
+str(basic_string) member function, all characters initialized prior to
+the call are now considered uninitialized (except for those
+characters re-initialized by the new basic_string). Otherwise the
+basic_stringbuf has been created in neither input nor output mode and
+a zero length basic_string is returned.
+</p>
+</blockquote>
+
+<p>
+27.7.1.2/2 Change:
+</p>
+
+<blockquote>
+<p>
+-2- Effects: If the basic_stringbuf's underlying character sequence is
+not empty, deallocates it. Then copies the content of s into the
+basic_stringbuf underlying character sequence and initializes the
+input and output sequences according to the mode stored when creating
+the basic_stringbuf object. If (mode&amp;ios_base::out) is true, then
+initializes the output sequence with the underlying sequence. If
+(mode&amp;ios_base::in) is true, then initializes the input sequence with
+the underlying sequence.
+</p>
+</blockquote>
+
+<p>to:</p>
+
+<blockquote>
+<p>
+-2- Effects: Copies the content of s into the basic_stringbuf
+underlying character sequence. If mode &amp; ios_base::out is true,
+initializes the output sequence such that pbase() points to the first
+underlying character, epptr() points one past the last underlying
+character, and if (mode &amp; ios_base::ate) is true,
+pptr() is set equal to epptr() else pptr() is set equal to pbase(). If
+mode &amp; ios_base::in is true, initializes the input sequence such that
+eback() and gptr() point to the first underlying character and egptr()
+points one past the last underlying character.
+</p>
+</blockquote>
+
+<p>Remove 27.2.1.2/3. (Same rationale as issue 238: incorrect and unnecessary.)</p>
+
+<p>27.7.1.3/1 Change:</p>
+
+<blockquote>
+<p>
+1- Returns: If the input sequence has a read position available,
+returns traits::to_int_type(*gptr()). Otherwise, returns
+traits::eof().
+</p>
+</blockquote>
+<p>to:</p>
+
+<blockquote>
+<p>
+1- Returns: If the input sequence has a read position available,
+returns traits::to_int_type(*gptr()). Otherwise, returns
+traits::eof(). Any character in the underlying buffer which has been
+initialized is considered to be part of the input sequence.
+</p>
+</blockquote>
+
+<p>27.7.1.3/9 Change:</p>
+
+<blockquote>
+<p>
+-9- Notes: The function can make a write position available only if (
+mode &amp; ios_base::out) != 0. To make a write position available, the
+function reallocates (or initially allocates) an array object with a
+sufficient number of elements to hold the current array object (if
+any), plus one additional write position. If ( mode &amp; ios_base::in) !=
+0, the function alters the read end pointer egptr() to point just past
+the new write position (as does the write end pointer epptr()).
+</p>
+</blockquote>
+
+<p>to:</p>
+
+<blockquote>
+<p>
+-9- The function can make a write position available only if ( mode &amp;
+ios_base::out) != 0. To make a write position available, the function
+reallocates (or initially allocates) an array object with a sufficient
+number of elements to hold the current array object (if any), plus one
+additional write position. If ( mode &amp; ios_base::in) != 0, the
+function alters the read end pointer egptr() to point just past the
+new write position.
+</p>
+</blockquote>
+
+<p>27.7.1.3/12 Change:</p>
+
+<blockquote>
+<p>
+-12- _ If (newoff + off) &lt; 0, or (xend - xbeg) &lt; (newoff + off), the
+positioning operation fails. Otherwise, the function assigns xbeg +
+newoff + off to the next pointer xnext .
+</p>
+</blockquote>
+
+<p>to:</p>
+
+<blockquote>
+<p>
+-12- _ If (newoff + off) &lt; 0, or if (newoff + off) refers to an
+uninitialized character (as defined in 27.7.1.2 <a href="lib-iostreams.html#lib.stringbuf.members"> [lib.stringbuf.members]</a>
+paragraph 1), the positioning operation fails. Otherwise, the function
+assigns xbeg + newoff + off to the next pointer xnext .
+</p>
+</blockquote>
+
+<p><i>[post-Kona: Howard provided wording. At Kona the LWG agreed that
+ something along these lines was a good idea, but the original
+ proposed resolution didn't say enough about the effect of various
+ member functions on the underlying character sequences.]</i></p>
+
+<p><b>Rationale:</b></p>
+<p>The current basic_stringbuf description is over-constrained in such
+a way as to prohibit vendors from making this the high-performance
+in-memory stream it was meant to be. The fundamental problem is that
+the pointers: eback(), gptr(), egptr(), pbase(), pptr(), epptr() are
+observable from a derived client, and the current description
+restricts the range [pbase(), epptr()) from being grown geometrically.
+This change allows, but does not require, geometric growth of this
+range.</p>
+
+<p>Backwards compatibility issues: These changes will break code that
+derives from basic_stringbuf, observes epptr(), and depends upon
+[pbase(), epptr()) growing by one character on each call to overflow()
+(i.e. test suites). Otherwise there are no backwards compatibility
+issues.</p>
+
+<p>27.7.1.1/2: The non-normative note is non-binding, and if it were
+binding, would be over specification. The recommended change focuses
+on the important observable fact.</p>
+
+<p>27.7.1.1/3: This change does two things: 1. It describes exactly
+what must happen in terms of the sequences. The terms "input
+sequence" and "output sequence" are not well defined. 2. It
+introduces a common extension: open with app or ate mode. I concur
+with issue 238 that paragraph 4 is both wrong and unnecessary.</p>
+
+<p>27.7.1.2/1: This change is the crux of the efficiency issue. The
+resultant basic_string is not dependent upon epptr(), and thus
+implementors are free to grow the underlying buffer geometrically
+during overflow() *and* place epptr() at the end of that buffer.</p>
+
+<p>27.7.1.2/2: Made consistent with the proposed 27.7.1.1/3.</p>
+
+<p>27.7.1.3/1: Clarifies that characters written to the stream beyond
+the initially specified string are available for reading in an i/o
+basic_streambuf.</p>
+
+<p>27.7.1.3/9: Made normative by removing "Notes:", and removed the
+trailing parenthetical comment concerning epptr().</p>
+
+<p>27.7.1.3/12: Restricting the positioning to [xbeg, xend) is no
+longer allowable since [pbase(), epptr()) may now contain
+uninitialized characters. Positioning is only allowable over the
+initialized range.</p>
<hr>
-<a name="434"><h3>434.&nbsp;bitset::to_string() hard to use</h3></a><p>
-<b>Section:</b>&nbsp;23.3.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.bitset.members"> [lib.bitset.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;15 Oct 2003</p>
+<a name="434"><h3>434.&nbsp;bitset::to_string() hard to use</h3></a><p><b>Section:</b>&nbsp;23.3.5.2 <a href="lib-containers.html#lib.bitset.members"> [lib.bitset.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;15 Oct 2003</p>
<p>
It has been pointed out a number of times that the bitset to_string() member
function template is tedious to use since callers must explicitly specify the
@@ -5790,7 +4517,8 @@ interface (declarations only) of the class template bitset as well as to
section 23.3.5.2, immediately after p34, the Returns clause of the existing
to_string() member function template:</p>
-<pre> template &lt;class charT, class traits&gt;
+<pre>
+ template &lt;class charT, class traits&gt;
basic_string&lt;charT, traits, allocator&lt;charT&gt; &gt;
to_string () const;
@@ -5809,14 +4537,13 @@ to_string() member function template:</p>
</pre>
<p><i>[Kona: the LWG agrees that this is an improvement over the
- status quo. Dietmar will propose an alternative using a proxy
- object, so that "s = b.to_string()" would work not just when s is
- of type std::string, but when s is of type std::basic_string&lt;C,T&gt;
- for arbitrary types C and T.]</i></p>
+ status quo. Dietmar thought about an alternative using a proxy
+ object but now believes that the proposed resolution above is the
+ right choice.
+]</i></p>
<hr>
-<a name="435"><h3>435.&nbsp;bug in DR 25</h3></a><p>
-<b>Section:</b>&nbsp;21.3.7.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;15 Oct 2003</p>
+<a name="435"><h3>435.&nbsp;bug in DR 25</h3></a><p><b>Section:</b>&nbsp;21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;15 Oct 2003</p>
<p>
It has been pointed out that the proposed resolution in DR 25 may not be
@@ -5851,9 +4578,9 @@ iostreams where the operator does truncate).
<blockquote>
If bool(k) is true, determines padding as described in
lib.facet.num.put.virtuals, and then inserts the resulting
- sequence of characters as if by calling
- os.rdbuf()-&gt;sputn(sequence, n), where n is the larger of
- os.width() and str.size();
+ sequence of characters <tt>seq</tt> as if by calling
+ <tt>os.rdbuf()-&gt;sputn(seq, n)</tt>, where <tt>n</tt> is the larger of
+ <tt>os.width()</tt> and <tt>str.size()</tt>;
</blockquote>
<p><i>[Kona: it appears that neither the original wording, DR25, nor the
@@ -5866,51 +4593,30 @@ iostreams where the operator does truncate).
Benjamin provided wording.]</i></p>
<hr>
-<a name="436"><h3>436.&nbsp;are cv-qualified facet types valid facets?</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.facet"> [lib.locale.facet]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;15 Oct 2003</p>
-<p>
-Is "const std::ctype&lt;char&gt;" a valid template argument to has_facet, use_facet,
-and the locale template ctor? And if so, does it designate the same Facet as
-the non-const "std::ctype&lt;char&gt;?" What about "volatile std::ctype&lt;char&gt;?"
-Different implementations behave differently: some fail to compile, others
-accept such types but behave inconsistently.
-</p>
-<p><b>Proposed resolution:</b></p>
-<p>Change 22.1.1.1.2, p1 to read:</p>
-
-<p>Template parameters in this clause which are required to be facets
-are those named Facet in declarations. A program that passes a type
-that is not a facet, or a type that refers to volatile-qualified
-facet, as an (explicit or deduced) template parameter to a locale
-function expecting a facet, is ill-formed. A const-qualified facet is
-a valid template argument to any locale function that expects a Facet
-template parameter.</p>
-
-<p><i>[Kona: changed the last sentence from a footnote to normative
-text.]</i></p>
-
-<hr>
-<a name="438"><h3>438.&nbsp;Ambiguity in the "do the right thing" clause</h3></a><p>
-<b>Section:</b>&nbsp;23.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;20 Oct 2003</p>
+<a name="438"><h3>438.&nbsp;Ambiguity in the "do the right thing" clause</h3></a><p><b>Section:</b>&nbsp;23.1.1 <a href="lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;20 Oct 2003</p>
-<p>Section 23.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>, paragraphs 9-11, fixed up the problem
+<p>Section 23.1.1 <a href="lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>, paragraphs 9-11, fixed up the problem
noticed with statements like:</p>
-<pre>vector&lt;int&gt; v(10, 1);
+<pre>
+vector&lt;int&gt; v(10, 1);
</pre>
<p>The intent of the above statement was to construct with:</p>
-<pre>vector(size_type, const value_type&amp;);
+<pre>
+vector(size_type, const value_type&amp;);
</pre>
<p>but early implementations failed to compile as they bound to:</p>
-<pre>template &lt;class InputIterator&gt;
+<pre>
+template &lt;class InputIterator&gt;
vector(InputIterator f, InputIterator l);
</pre>
<p>instead.</p>
<p>Paragraphs 9-11 say that if InputIterator is an integral type, then the
member template constructor will have the same effect as:</p>
-<pre>vector&lt;static_cast&lt;size_type&gt;(f), static_cast&lt;value_type&gt;(l));
+<pre>
+vector&lt;static_cast&lt;size_type&gt;(f), static_cast&lt;value_type&gt;(l));
</pre>
<p>(and similarly for the other member template functions of sequences).</p>
@@ -5922,7 +4628,8 @@ member template constructor will have the same effect as:</p>
<p>This might look something like:</p>
<blockquote>
-<pre>template &lt;class T&gt;
+<pre>
+template &lt;class T&gt;
struct vector
{
typedef unsigned size_type;
@@ -5964,7 +4671,8 @@ every call with the member template, detect the type of InputIterator,
and then redirect to the correct logic. Something like:
</p>
<blockquote>
-<pre>template &lt;class T&gt;
+<pre>
+template &lt;class T&gt;
template &lt;class I&gt;
vector&lt;T&gt;::vector(I f, I l)
{
@@ -5993,7 +4701,8 @@ vector&lt;T&gt;::choose_init(I f, I l, int2type&lt;true&gt;)
<p>Both of these solutions solve the case the standard specifically
mentions:</p>
-<pre>vector&lt;int&gt; v(10, 1); // ok, vector size 10, initialized to 1
+<pre>
+vector&lt;int&gt; v(10, 1); // ok, vector size 10, initialized to 1
</pre>
<p>
@@ -6001,7 +4710,8 @@ However, (and here is the problem), the two solutions have different
behavior in some cases where the value_type of the sequence is not an
integral type. For example consider:
</p>
-<blockquote><pre> pair&lt;char, char&gt; p('a', 'b');
+<blockquote><pre>
+ pair&lt;char, char&gt; p('a', 'b');
vector&lt;vector&lt;pair&lt;char, char&gt; &gt; &gt; d('a', 'b');
</pre></blockquote>
<p>
@@ -6009,7 +4719,8 @@ The second line of this snippet is likely an error. Solution A catches
the error and refuses to compile. The reason is that there is no
specialization of the member template constructor that looks like:
</p>
-<pre>template &lt;&gt;
+<pre>
+template &lt;&gt;
template &lt;&gt;
vector&lt;vector&lt;pair&lt;char, char&gt; &gt; &gt;::vector(char, char) { ... }
</pre>
@@ -6026,7 +4737,8 @@ unsigned integral type and used to size the outer vector. 'b' is
static casted to the inner vector using it's explicit constructor:
</p>
-<pre>explicit vector(size_type n);
+<pre>
+explicit vector(size_type n);
</pre>
<p>
@@ -6043,7 +4755,8 @@ explicit qualifier on the inner vector has been thwarted at any rate.
The standard is not clear whether the expression:
</p>
-<pre> vector&lt;vector&lt;pair&lt;char, char&gt; &gt; &gt; d('a', 'b');
+<pre>
+ vector&lt;vector&lt;pair&lt;char, char&gt; &gt; &gt; d('a', 'b');
</pre>
<p>
@@ -6078,7 +4791,8 @@ the expression above would be to change "static_cast" in paragraphs
</p>
<blockquote>
-<pre>template &lt;class T, class U&gt;
+<pre>
+template &lt;class T, class U&gt;
inline
T implicit_cast(const U&amp; u)
{
@@ -6089,21 +4803,23 @@ T implicit_cast(const U&amp; u)
<p><b>Proposed resolution:</b></p>
-Replace 23.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a> paragraphs 9 - 11 with:
+Replace 23.1.1 <a href="lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a> paragraphs 9 - 11 with:
<p>For every sequence defined in this clause and in clause lib.strings:</p>
<ul>
<li>
<p>If the constructor</p>
- <pre> template &lt;class InputIterator&gt;
+ <pre>
+ template &lt;class InputIterator&gt;
X(InputIterator f, InputIterator l,
const allocator_type&amp; a = allocator_type())
</pre>
<p>is called with a type InputIterator that does not qualify as
an input iterator, then the constructor will behave as if the
overloaded constructor:</p>
- <pre> X(size_type, const value_type&amp; = value_type(),
+ <pre>
+ X(size_type, const value_type&amp; = value_type(),
const allocator_type&amp; = allocator_type())
</pre>
<p>were called instead, with the arguments f, l and a, respectively.</p>
@@ -6111,7 +4827,8 @@ Replace 23.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-container
<li>
<p>If the member functions of the forms:</p>
- <pre> template &lt;class InputIterator&gt; // such as insert()
+ <pre>
+ template &lt;class InputIterator&gt; // such as insert()
rt fx1(iterator p, InputIterator f, InputIterator l);
template &lt;class InputIterator&gt; // such as append(), assign()
@@ -6123,7 +4840,8 @@ Replace 23.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-container
<p>are called with a type InputIterator that does not qualify as
an input iterator, then these functions will behave as if the
overloaded member functions:</p>
- <pre> rt fx1(iterator, size_type, const value_type&amp;);
+ <pre>
+ rt fx1(iterator, size_type, const value_type&amp;);
rt fx2(size_type, const value_type&amp;);
@@ -6137,27 +4855,37 @@ Replace 23.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-container
is not implicitly convertible to X::size_type or if l is not implicitly
convertible to X::value_type.</p>
-<p>The extent to which an implementation endeavors to qualify a type
-as an input iterator is unspecified, except that as a minimum integral
-types will not qualify as input iterators.</p>
+<p>
+The extent to which an implementation determines that a type cannot be
+an input iterator is unspecified, except that as a minimum integral
+types shall not qualify as input iterators.
+</p>
<p><i>[
Kona: agreed that the current standard requires <tt>v('a', 'b')</tt>
-to be accepted, and also agreed that this is surprising behavior.
-The LWG considered several options, including something like
+to be accepted, and also agreed that this is surprising behavior. The
+LWG considered several options, including something like
implicit_cast, which doesn't appear to be quite what we want. We
considered Howards three options: allow acceptance or rejection,
-require rejection as a compile time error, and require acceptance.
-By straw poll (1-6-1), we chose to require a compile time error.
+require rejection as a compile time error, and require acceptance. By
+straw poll (1-6-1), we chose to require a compile time error.
Post-Kona: Howard provided wording.
]</i></p>
+<p><i>[
+Sydney: The LWG agreed with this general direction, but there was some
+discomfort with the wording in the original proposed resolution.
+Howard submitted new wording, and we will review this again in
+Redmond.
+]</i></p>
+
<p><b>Rationale:</b></p>
<p>The proposed resolution fixes:</p>
-<pre> vector&lt;int&gt; v(10, 1);
+<pre>
+ vector&lt;int&gt; v(10, 1);
</pre>
<p>
@@ -6167,7 +4895,8 @@ if).</p>
<p>The proposed resolution breaks:</p>
-<pre> vector&lt;vector&lt;T&gt; &gt; v(10, 1);
+<pre>
+ vector&lt;vector&lt;T&gt; &gt; v(10, 1);
</pre>
<p>
@@ -6179,7 +4908,8 @@ The proposed resolution leaves the behavior of the following code
unspecified.
</p>
-<pre> struct A
+<pre>
+ struct A
{
operator int () const {return 10;}
};
@@ -6200,74 +4930,1486 @@ then the implementation must reject the constructor as A is no longer
implicitly convertible to B.
</p>
<hr>
-<a name="439"><h3>439.&nbsp;Should facets be copyable?</h3></a><p>
-<b>Section:</b>&nbsp;22.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.categories"> [lib.locale.categories]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;2 Nov 2003</p>
-<p>The following facets classes have no copy constructors described in
- the standard, which, according to the standard, means that they are
- supposed to use the compiler-generated defaults. Default copy
- behavior is probably inappropriate. We should either make these
- classes uncopyable or else specify exactly what their constructors do.</p>
-
-<p>Related issue: <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#421">421</a>.</p>
-
-<pre> ctype_base
- ctype
- ctype_byname
- ctype&lt;char&gt;
- ctype_byname&lt;char&gt;
- codecvt_base
- codecvt
- codecvt_byname
- num_get
- num_put
- numpunct
- numpunct_byname
- collate
- collate_byname
- time_base
- time_get
- time_get_byname
- time_put
- time_put_byname
- money_get
- money_put
- money_base
- moneypunct
- moneypunct_byname
- messages_base
- messages
- messages_byname
+<a name="441"><h3>441.&nbsp;Is fpos::state const?</h3></a><p><b>Section:</b>&nbsp;27.4.3 <a href="lib-iostreams.html#lib.fpos"> [lib.fpos]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Vincent Leloup&nbsp; <b>Date:</b>&nbsp;17 Nov 2003</p>
+<p>
+In section 27.4.3.1 <a href="lib-iostreams.html#lib.fpos.members"> [lib.fpos.members]</a> fpos&lt;stateT&gt;::state() is declared
+non const, but in section 27.4.3 <a href="lib-iostreams.html#lib.fpos"> [lib.fpos]</a> it is declared const.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+In section 27.4.3.1 <a href="lib-iostreams.html#lib.fpos.members"> [lib.fpos.members]</a>, change the declaration of
+<tt>fpos&lt;stateT&gt;::state()</tt> to const.
+</p>
+<hr>
+<a name="442"><h3>442.&nbsp;sentry::operator bool() inconsistent signature</h3></a><p><b>Section:</b>&nbsp;27.6.2.3 <a href="lib-iostreams.html#lib.ostream::sentry"> [lib.ostream::sentry]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Vincent Leloup&nbsp; <b>Date:</b>&nbsp;18 Nov 2003</p>
+<p>
+In section 27.6.2.3 <a href="lib-iostreams.html#lib.ostream::sentry"> [lib.ostream::sentry]</a> paragraph 4, in description part
+basic_ostream&lt;charT, traits&gt;::sentry::operator bool() is declared
+as non const, but in section 27.6.2.3, in synopsis it is declared
+const.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+In section 27.6.2.3 <a href="lib-iostreams.html#lib.ostream::sentry"> [lib.ostream::sentry]</a> paragraph 4, change the declaration
+of <tt>sentry::operator bool()</tt> to const.
+</p>
+<hr>
+<a name="443"><h3>443.&nbsp;filebuf::close() inconsistent use of EOF</h3></a><p><b>Section:</b>&nbsp;27.8.1.3 <a href="lib-iostreams.html#lib.filebuf.members"> [lib.filebuf.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Vincent Leloup&nbsp; <b>Date:</b>&nbsp;20 Nov 2003</p>
+<p>
+In section 27.8.1.3 <a href="lib-iostreams.html#lib.filebuf.members"> [lib.filebuf.members]</a> par6, in effects description of
+basic_filebuf&lt;charT, traits&gt;::close(), overflow(EOF) is used twice;
+should be overflow(traits::eof()).
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+Change overflow(EOF) to overflow(traits::eof()).
+</p>
+<hr>
+<a name="444"><h3>444.&nbsp;Bad use of casts in fstream</h3></a><p><b>Section:</b>&nbsp;27.8.1 <a href="lib-iostreams.html#lib.fstreams"> [lib.fstreams]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Vincent Leloup&nbsp; <b>Date:</b>&nbsp;20 Nov 2003</p>
+<p>
+27.8.1.7 <a href="lib-iostreams.html#lib.ifstream.members"> [lib.ifstream.members]</a> p1, 27.8.1.10 <a href="lib-iostreams.html#lib.ofstream.members"> [lib.ofstream.members]</a> p1, 27.8.1.13 <a href="lib-iostreams.html#lib.fstream.members"> [lib.fstream.members]</a> p1 seems have same problem as exposed in LWG issue
+<a href="lwg-defects.html#252">252</a>.
+</p>
+<p><b>Proposed resolution:</b></p>
+
+<p><i>[Sydney: Genuine defect. 27.8.1.13 needs a cast to cast away
+ constness. The other two places are stylistic: we could change the
+ C-style casts to const_cast. Post-Sydney: Howard provided wording.
+]</i></p>
+
+<p>Change 27.8.1.7/1 from:</p>
+<blockquote>
+ Returns: (basic_filebuf&lt;charT,traits&gt;*)&amp;sb.
+</blockquote>
+
+<p>to:</p>
+<blockquote>
+ Returns: const_cast&lt;basic_filebuf&lt;charT,traits&gt;*&gt;(&amp;sb).
+</blockquote>
+
+<p>Change 27.8.1.10/1 from:</p>
+<blockquote>
+ Returns: (basic_filebuf&lt;charT,traits&gt;*)&amp;sb.
+</blockquote>
+
+<p>to:</p>
+<blockquote>
+ Returns: const_cast&lt;basic_filebuf&lt;charT,traits&gt;*&gt;(&amp;sb).
+</blockquote>
+
+<p>Change 27.8.1.13/1 from:</p>
+<blockquote>
+ Returns: &amp;sb.
+</blockquote>
+
+<p>to:</p>
+<blockquote>
+ Returns: const_cast&lt;basic_filebuf&lt;charT,traits&gt;*&gt;(&amp;sb).
+</blockquote>
+
+
+
+<hr>
+<a name="445"><h3>445.&nbsp;iterator_traits::reference unspecified for some iterator categories</h3></a><p><b>Section:</b>&nbsp;24.3.1 <a href="lib-iterators.html#lib.iterator.traits"> [lib.iterator.traits]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;9 Dec 2003</p>
+<p>
+The standard places no restrictions at all on the reference type
+of input, output, or forward iterators (for forward iterators it
+only specifies that *x must be value_type&amp; and doesn't mention
+the reference type). Bidirectional iterators' reference type is
+restricted only by implication, since the base iterator's
+reference type is used as the return type of reverse_iterator's
+operator*, which must be T&amp; in order to be a conforming forward
+iterator.
+</p>
+
+<p>
+Here's what I think we ought to be able to expect from an input
+or forward iterator's reference type R, where a is an iterator
+and V is its value_type
+</p>
+
+<ul>
+ <li>
+ *a is convertible to R
+ </li>
+
+ <li>
+ R is convertible to V
+ </li>
+
+ <li>
+ static_cast&lt;V&gt;(static_cast&lt;R&gt;(*a)) is equivalent to
+ static_cast&lt;V&gt;(*a)
+ </li>
+</ul>
+
+<p>A mutable forward iterator ought to satisfy, for x of type V:</p>
+ <li>
+ { R r = *a; r = x; } is equivalent to *a = x;
+ </li>
+
+<p>
+I think these requirements capture existing container iterators
+(including vector&lt;bool&gt;'s), but render istream_iterator invalid;
+its reference type would have to be changed to a constant
+reference.
+</p>
+
+
+<p>
+(Jeremy Siek) During the discussion in Sydney, it was felt that a
+simpler long term solution for this was needed. The solution proposed
+was to require <tt>reference</tt> to be the same type as <tt>*a</tt>
+and <tt>pointer</tt> to be the same type as <tt>a-&gt;</tt>. Most
+iterators in the Standard Library already meet this requirement. Some
+iterators are output iterators, and do not need to meet the
+requirement, and others are only specified through the general
+iterator requirements (which will change with this resolution). The
+sole case where there is an explicit definition of the reference type
+that will need to change is <tt>istreambuf_iterator</tt> which returns
+<tt>charT</tt> from <tt>operator*</tt> but has a reference type of
+<tt>charT&amp;</tt>. We propose changing the reference type of
+<tt>istreambuf_iterator</tt> to <tt>charT</tt>.
+</p>
+
+<p>The other option for resolving the issue with <tt>pointer</tt>,
+ mentioned in the note below, is to remove <tt>pointer</tt>
+ altogether. I prefer placing requirements on <tt>pointer</tt> to
+ removing it for two reasons. First, <tt>pointer</tt> will become
+ useful for implementing iterator adaptors and in particular,
+ <tt>reverse_iterator</tt> will become more well defined. Second,
+ removing <tt>pointer</tt> is a rather drastic and publicly-visible
+ action to take.</p>
+
+<p>The proposed resolution technically enlarges the requirements for
+iterators, which means there are existing iterators (such as
+<tt>istreambuf_iterator</tt>, and potentially some programmer-defined
+iterators) that will no longer meet the requirements. Will this break
+existing code? The scenario in which it would is if an algorithm
+implementation (say in the Standard Library) is changed to rely on
+<tt>iterator_traits::reference</tt>, and then is used with one of the
+iterators that do not have an appropriately defined
+<tt>iterator_traits::reference</tt>.
+</p>
+
+
+<p>The proposed resolution makes one other subtle change. Previously,
+it was required that output iterators have a <tt>difference_type</tt>
+and <tt>value_type</tt> of <tt>void</tt>, which means that a forward
+iterator could not be an output iterator. This is clearly a mistake,
+so I've changed the wording to say that those types may be
+<tt>void</tt>.
+</p>
+
+<p><b>Proposed resolution:</b></p>
+
+<p>In <font color="red">24.3.1.1</font>, after:</p>
+
+<blockquote>
+be defined as the iterator's difference type, value type and iterator
+category, respectively.
+</blockquote>
+
+<p>In <font color="red">24.3.1.1</font>, add:</p>
+
+<blockquote>
+In addition, the types
+<pre>
+iterator_traits&lt;Iterator&gt;::reference
+iterator_traits&lt;Iterator&gt;::pointer
+</pre>
+must be defined as the iterator's reference and pointer types, that
+is, the same type as the type of <tt>*a</tt> and <tt>a-&gt;</tt>,
+respectively.
+</blockquote>
+
+<p>In <font color="red">24.3.1.1</font>, change:</p>
+
+<blockquote>
+In the case of an output iterator, the types
+<pre>
+iterator_traits&lt;Iterator&gt;::difference_type
+iterator_traits&lt;Iterator&gt;::value_type
+</pre>
+are both defined as <tt>void</tt>.
+</blockquote>
+
+<p>to:</p>
+<blockquote>
+In the case of an output iterator, the types
+<pre>
+iterator_traits&lt;Iterator&gt;::difference_type
+iterator_traits&lt;Iterator&gt;::value_type
+iterator_traits&lt;Iterator&gt;::reference
+iterator_traits&lt;Iterator&gt;::pointer
</pre>
+may be defined as <tt>void</tt>.
+</blockquote>
+
+<p>In <font color="red">24.5.6</font>, change:</p>
+<blockquote>
+<pre>
+typename traits::off_type, charT*, charT&amp;&gt;
+</pre>
+</blockquote>
+<p>to:</p>
+<blockquote>
+<pre>
+typename traits::off_type, charT*, charT&gt;
+</pre>
+</blockquote>
+
+<p><i>[
+Sydney: Agreed that this is under-specified, but it's not the only
+place where iterators are under-specified. We may need a more complete
+review. One nice simple rule that would solve this problem: *a is
+always <tt>reference</tt> by definition, and a-&gt; is
+always <tt>pointer</tt> by definition. If we do that, then we'll also
+have to change a few existing iterators (e.g. istreambuf_iterator) so
+they conform to that rule. We need a review of how extensive those
+changes would be. Or instead of fixing <tt>pointer</tt> we could
+remove it. (Which would require changing reverse_iterator as part of
+that change, since the present reverse_iterator relies on the
+existence of <tt>pointer</tt>.) Jeremy will supply a more detailed
+analysis for Redmond.
+]</i></p>
+<hr>
+<a name="446"><h3>446.&nbsp;Iterator equality between different containers</h3></a><p><b>Section:</b>&nbsp;24.1 <a href="lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>, 23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Andy Koenig&nbsp; <b>Date:</b>&nbsp;16 Dec 2003</p>
+<p>
+What requirements does the standard place on equality comparisons between
+iterators that refer to elements of different containers. For example, if
+v1 and v2 are empty vectors, is v1.end() == v2.end() allowed to yield true?
+Is it allowed to throw an exception?
+</p>
+
+<p>
+The standard appears to be silent on both questions.
+</p>
+<p><b>Proposed resolution:</b></p>
+
+<p><i>[Sydney: The intention is that comparing two iterators from
+different containers is undefined, but it's not clear if we say that,
+or even whether it's something we should be saying in clause 23 or in
+clause 24. Intuitively we might want to say that equality is defined
+only if one iterator is reachable from another, but figuring out how
+to say it in any sensible way is a bit tricky: reachability is defined
+in terms of equality, so we can't also define equality in terms of
+reachability.
+]</i></p>
+
+<hr>
+<a name="448"><h3>448.&nbsp;Random Access Iterators over abstract classes</h3></a><p><b>Section:</b>&nbsp;24.1.5 <a href="lib-iterators.html#lib.random.access.iterators"> [lib.random.access.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;7 Jan 2004</p>
+<p>
+Table 76, the random access iterator requirement table, says that the
+return type of a[n] must be "convertible to T". When an iterator's
+value_type T is an abstract class, nothing is convertible to T.
+Surely this isn't an intended restriction?
+</p>
<p><b>Proposed resolution:</b></p>
<p>
+Change the return type to "convertible to T const&amp;".
</p>
<hr>
-<a name="440"><h3>440.&nbsp;Should std::complex use unqualified transcendentals?</h3></a><p>
-<b>Section:</b>&nbsp;26.2.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex.transcendentals"> [lib.complex.transcendentals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;5 Nov 2003</p>
+<a name="449"><h3>449.&nbsp;Library Issue 306 Goes Too Far</h3></a><p><b>Section:</b>&nbsp;18.1 <a href="lib-support.html#lib.support.types"> [lib.support.types]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Ready">Ready</a>&nbsp; <b>Submitter:</b>&nbsp;Pete Becker&nbsp; <b>Date:</b>&nbsp;15 Jan 2004</p>
+<p>Original text:</p>
+<blockquote>
+The macro offsetof accepts a restricted set of type arguments in this
+International Standard. type shall be a POD structure or a POD union
+(clause 9). The result of applying the offsetof macro to a field that
+is a static data member or a function member is undefined."
+</blockquote>
+
+<p>Revised text:</p>
+<blockquote>
+"If type is not a POD structure or a POD union the results are undefined."
+</blockquote>
+
+<p>
+Looks to me like the revised text should have replaced only the second
+sentence. It doesn't make sense standing alone.
+</p>
+
+<p><b>Proposed resolution:</b></p>
+<p>Change 18.1, paragraph 5, to:</p>
+
+<blockquote>
+The macro offsetof accepts a restricted set of type arguments in this
+International Standard. If type is not a POD structure or a POD union
+the results are undefined. The result of applying the offsetof macro
+to a field that is a static data member or a function member is
+undefined."
+</blockquote>
+<hr>
+<a name="452"><h3>452.&nbsp; locale::combine should be permitted to generate a named locale</h3></a><p><b>Section:</b>&nbsp;22.1.1.3 <a href="lib-locales.html#lib.locale.members"> [lib.locale.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Bill Plauger&nbsp; <b>Date:</b>&nbsp;30 Jan 2004</p>
+<pre>
+template&lt;class Facet&gt;
+ locale::combine(const locale&amp;) const;
+</pre>
<p>
-Operations like <tt>pow</tt> and <tt>exp</tt> on
-<tt>complex&lt;T&gt;</tt> are typically implemented in terms of
-operations like <tt>sin</tt> and <tt>cos</tt> on <tt>T</tt>.
-Should implementations write this as <tt>std::sin</tt>, or as plain
-unqualified <tt>sin</tt>?
+is obliged to create a locale that has no name. This is overspecification
+and overkill. The resulting locale should follow the usual rules -- it
+has a name if the locale argument has a name and Facet is one of the
+standard facets.
</p>
-<p>The issue, of course, is whether we want to use
-argument-dependent lookup in the case where <tt>T</tt> is a
-user-defined type. This is similar to the issue of valarray
-transcendentals, as discussed in issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#226">226</a>.</p>
+<p><i>[
+ Sydney and post-Sydney (see c++std-lib-13439, c++std-lib-13440,
+ c++std-lib-13443): agreed that it's overkill to say that the locale
+ is obligated to be nameless. However, we also can't require it to
+ have a name. At the moment, locale names are based on categories
+ and not on individual facets. If a locale contains two different
+ facets of different names from the same category, then this would
+ not fit into existing naming schemes. We need to give
+ implementations more freedom. Bill will provide wording.
+]</i></p>
+
+<p><b>Proposed resolution:</b></p>
+<p><b>Rationale:</b></p>
+<hr>
+<a name="453"><h3>453.&nbsp;basic_stringbuf::seekoff need not always fail for an empty stream</h3></a><p><b>Section:</b>&nbsp;27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Bill Plauger&nbsp; <b>Date:</b>&nbsp;30 Jan 2004</p>
+<pre>
+ pos_type basic_stringbuf::seekoff(off_type, ios_base::seekdir,
+ ios_base::openmode);
+</pre>
+<p>
+is obliged to fail if nothing has been inserted into the stream. This
+is unnecessary and undesirable. It should be permissible to seek to
+an effective offset of zero.</p>
+
+<p><i>[
+ Sydney: Agreed that this is an annoying problem: seeking to zero should be
+ legal. Bill will provide wording.
+]</i></p>
+
+<p><b>Proposed resolution:</b></p>
+<hr>
+<a name="454"><h3>454.&nbsp;basic_filebuf::open should accept wchar_t names</h3></a><p><b>Section:</b>&nbsp;27.8.1.3 <a href="lib-iostreams.html#lib.filebuf.members"> [lib.filebuf.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Bill Plauger&nbsp; <b>Date:</b>&nbsp;30 Jan 2004</p>
+<pre>
+ basic_filebuf *basic_filebuf::open(const char *, ios_base::open_mode);
+</pre>
+
+<p>should be supplemented with the overload:</p>
+
+<pre>
+ basic_filebuf *basic_filebuf::open(const wchar_t *, ios_base::open_mode);
+</pre>
+
+<p>
+Depending on the operating system, one of these forms is fundamental and
+the other requires an implementation-defined mapping to determine the
+actual filename.
+</p>
-<p>This issue differs from valarray transcendentals in two important
-ways. First, "the effect of instantiating the template
-<tt>complex</tt> for types other than float, double or long double is
-unspecified." (26.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a>) Second, the standard does not
-dictate implementation, so there is no guarantee that a particular
-real math function is used in the implementation of a particular
-complex function.</p>
+<p><i>[Sydney: Yes, we want to allow wchar_t filenames. Bill will
+ provide wording.]</i></p>
<p><b>Proposed resolution:</b></p>
+<hr>
+<a name="455"><h3>455.&nbsp;cerr::tie() and wcerr::tie() are overspecified</h3></a><p><b>Section:</b>&nbsp;27.3 <a href="lib-iostreams.html#lib.iostream.objects"> [lib.iostream.objects]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Bill Plauger&nbsp; <b>Date:</b>&nbsp;30 Jan 2004</p>
+<p>
+Both cerr::tie() and wcerr::tie() are obliged to be null at program
+startup. This is overspecification and overkill. It is both traditional
+and useful to tie cerr to cout, to ensure that standard output is drained
+whenever an error message is written. This behavior should at least be
+permitted if not required. Same for wcerr::tie().
+</p>
+<p><b>Proposed resolution:</b></p>
+<p><i>[Sydney: straw poll (3-1): we should <i>require</i>, not just
+ permit, cout and cerr to be tied on startup. Bill will provide
+ wording.]</i></p>
+<hr>
+<a name="456"><h3>456.&nbsp;Traditional C header files are overspecified</h3></a><p><b>Section:</b>&nbsp;17.4.1.2 <a href="lib-intro.html#lib.headers"> [lib.headers]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Bill Plauger&nbsp; <b>Date:</b>&nbsp;30 Jan 2004</p>
+
+<p>The C++ Standard effectively requires that the traditional C headers
+(of the form &lt;xxx.h&gt;) be defined in terms of the newer C++
+headers (of the form &lt;cxxx&gt;). Clauses 17.4.1.2/4 and D.5 combine
+to require that:</p>
+
+<ul>
+ <li>Including the header &lt;cxxx&gt; declares a C name in namespace std.</li>
+
+ <li> Including the header &lt;xxx.h&gt; declares a C name in namespace std
+ (effectively by including &lt;cxxx&gt;), then imports it into the global
+ namespace with an individual using declaration.</li>
+</ul>
+
<p>
+The rules were left in this form despited repeated and heated objections
+from several compiler vendors. The C headers are often beyond the direct
+control of C++ implementors. In some organizations, it's all they can do
+to get a few #ifdef __cplusplus tests added. Third-party library vendors
+can perhaps wrap the C headers. But neither of these approaches supports
+the drastic restructuring required by the C++ Standard. As a result, it is
+still widespread practice to ignore this conformance requirement, nearly
+seven years after the committee last debated this topic. Instead, what is
+often implemented is:
</p>
+
+<ul>
+ <li> Including the header &lt;xxx.h&gt; declares a C name in the
+ global namespace.</li>
+
+ <li> Including the header &lt;cxxx&gt; declares a C name in the
+ global namespace (effectively by including &lt;xxx.h&gt;), then
+ imports it into namespace std with an individual using declaration.</li>
+</ul>
+
+<p>
+The practical benefit for implementors with the second approach is that
+they can use existing C library headers, as they are pretty much obliged
+to do. The practical cost for programmers facing a mix of implementations
+is that they have to assume weaker rules:</p>
+
+<ul>
+ <li> If you want to assuredly declare a C name in the global
+ namespace, include &lt;xxx.h&gt;. You may or may not also get the
+ declaration in namespace std.</li>
+
+ <li> If you want to assuredly declare a C name in namespace std,
+ include &lt;cxxx.h&gt;. You may or may not also get the declaration in
+ the global namespace.</li>
+</ul>
+
+<p>
+There also exists the <i>possibility</i> of subtle differences due to
+Koenig lookup, but there are so few non-builtin types defined in the C
+headers that I've yet to see an example of any real problems in this
+area.
+</p>
+
+<p>
+It is worth observing that the rate at which programmers fall afoul of
+these differences has remained small, at least as measured by newsgroup
+postings and our own bug reports. (By an overwhelming margin, the
+commonest problem is still that programmers include &lt;string&gt; and can't
+understand why the typename string isn't defined -- this a decade after
+the committee invented namespace std, nominally for the benefit of all
+programmers.)
+</p>
+
+<p>
+We should accept the fact that we made a serious mistake and rectify it,
+however belatedly, by explicitly allowing either of the two schemes for
+declaring C names in headers.
+</p>
+
+<p><i>[Sydney: This issue has been debated many times, and will
+ certainly have to be discussed in full committee before any action
+ can be taken. However, the preliminary sentiment of the LWG was in
+ favor of the change. (6 yes, 0 no, 2 abstain) Robert Klarer
+ suggests that we might also want to undeprecate the
+ C-style <tt>.h</tt> headers.]</i></p>
+
+<p><b>Proposed resolution:</b></p>
+<hr>
+<a name="457"><h3>457.&nbsp;bitset constructor: incorrect number of initialized bits</h3></a><p><b>Section:</b>&nbsp;23.3.5.1 <a href="lib-containers.html#lib.bitset.cons"> [lib.bitset.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Review">Review</a>&nbsp; <b>Submitter:</b>&nbsp;Dag Henriksson&nbsp; <b>Date:</b>&nbsp;30 Jan 2004</p>
+<p>
+The constructor from unsigned long says it initializes "the first M
+bit positions to the corresponding bit values in val. M is the smaller
+of N and the value CHAR_BIT * sizeof(unsigned long)."
+</p>
+
+<p>
+Object-representation vs. value-representation strikes again. CHAR_BIT *
+sizeof (unsigned long) does not give us the number of bits an unsigned long
+uses to hold the value. Thus, the first M bit position above is not
+guaranteed to have any corresponding bit values in val.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>In 23.3.5.1 <a href="lib-containers.html#lib.bitset.cons"> [lib.bitset.cons]</a> paragraph 2, change "M is the smaller of
+ N and the value CHAR_BIT * sizeof (unsigned long). (249)" to
+ "<tt>M</tt> is the smaller of <tt>N</tt> and the number of bits in
+ the value representation (section 3.9 <a href="basic.html#basic.types"> [basic.types]</a>) of <tt>unsigned
+ long</tt>."
+</p>
+<hr>
+<a name="458"><h3>458.&nbsp;24.1.5 contains unintented limitation for operator-</h3></a><p><b>Section:</b>&nbsp;24.1.5 <a href="lib-iterators.html#lib.random.access.iterators"> [lib.random.access.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Daniel Frey&nbsp; <b>Date:</b>&nbsp;27 Feb 2004</p>
+<p>
+In 24.1.5 [lib.random.access.iterators], table 76 the operational
+semantics for the expression "r -= n" are defined as "return r += -n".
+This means, that the expression -n must be valid, which is not the case
+for unsigned types.
+</p>
+
+<p><i>[
+Sydney: Possibly not a real problem, since difference type is required
+to be a signed integer type. However, the wording in the standard may
+be less clear than we would like.
+]</i></p>
+
+<p><b>Proposed resolution:</b></p>
+<p>
+To remove this limitation, I suggest to change the
+operational semantics for this column to:
+</p>
+<code>
+ { Distance m = n;
+ if (m &gt;= 0)
+ while (m--) --r;
+ else
+ while (m++) ++r;
+ return r; }
+</code>
+
+<hr>
+<a name="459"><h3>459.&nbsp;Requirement for widening in stage 2 is overspecification</h3></a><p><b>Section:</b>&nbsp;22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#Open">Open</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;16 Mar 2004</p>
+<p>When parsing strings of wide-character digits, the standard
+ requires the library to widen narrow-character "atoms" and compare
+ the widened atoms against the characters that are being parsed.
+ Simply narrowing the wide characters would be far simpler, and
+ probably more efficient. The two choices are equivalent except in
+ convoluted test cases, and many implementations already ignore the
+ standard and use narrow instead of widen.</p>
+
+<p>
+First, I disagree that using narrow() instead of widen() would
+necessarily have unfortunate performance implications. A possible
+implementation of narrow() that allows num_get to be implemented
+in a much simpler and arguably comparably efficient way as calling
+widen() allows, i.e. without making a virtual call to do_narrow every
+time, is as follows:
+</p>
+
+<pre>
+ inline char ctype&lt;wchar_t&gt;::narrow (wchar_t wc, char dflt) const
+ {
+ const unsigned wi = unsigned (wc);
+
+ if (wi &gt; UCHAR_MAX)
+ return typeid (*this) == typeid (ctype&lt;wchar_t&gt;) ?
+ dflt : do_narrow (wc, dflt);
+
+ if (narrow_ [wi] &lt; 0) {
+ const char nc = do_narrow (wc, dflt);
+ if (nc == dflt)
+ return dflt;
+ narrow_ [wi] = nc;
+ }
+
+ return char (narrow_ [wi]);
+ }
+</pre>
+
+<p>
+Second, I don't think the change proposed in the issue (i.e., to use
+narrow() instead of widen() during Stage 2) would be at all
+drastic. Existing implementations with the exception of libstdc++
+currently already use narrow() so the impact of the change on programs
+would presumably be isolated to just a single implementation. Further,
+since narrow() is not required to translate alternate wide digit
+representations such as those mentioned in issue <a href="lwg-defects.html#303">303</a> to
+their narrow equivalents (i.e., the portable source characters '0'
+through '9'), the change does not necessarily imply that these
+alternate digits would be treated as ordinary digits and accepted as
+part of numbers during parsing. In fact, the requirement in 22.2.1.1.2 <a href="lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>, p13 forbids narrow() to translate an alternate
+digit character, wc, to an ordinary digit in the basic source
+character set unless the expression
+(ctype&lt;charT&gt;::is(ctype_base::digit, wc) == true) holds. This in
+turn is prohibited by the C standard (7.25.2.1.5, 7.25.2.1.5, and
+5.2.1, respectively) for charT of either char or wchar_t.
+</p>
+
+<p><i>[Sydney: To a large extent this is a nonproblem. As long as
+you're only trafficking in char and wchar_t we're only dealing with a
+stable character set, so you don't really need either 'widen' or
+'narrow': can just use literals. Finally, it's not even clear whether
+widen-vs-narrow is the right question; arguably we should be using
+codecvt instead.]</i></p>
+
+<p><b>Proposed resolution:</b></p>
+<p>Change stage 2 so that implementations are permitted to use either
+technique to perform the comparison:</p>
+<ol>
+ <li> call widen on the atoms and compare (either by using
+ operator== or char_traits&lt;charT&gt;::eq) the input with
+ the widened atoms, or</li>
+ <li> call narrow on the input and compare the narrow input
+ with the atoms</li>
+ <li> do (1) or (2) only if charT is not char or wchar_t,
+ respectively; i.e., avoid calling widen or narrow
+ if it the source and destination types are the same</li>
+</ol>
+<hr>
+<a name="460"><h3>460.&nbsp;Default modes missing from basic_fstream member specifications</h3></a><p><b>Section:</b>&nbsp;27.8.1 <a href="lib-iostreams.html#lib.fstreams"> [lib.fstreams]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Ben Hutchings&nbsp; <b>Date:</b>&nbsp;1 Apr 2004</p>
+<p>
+The second parameters of the non-default constructor and of the open
+member function for basic_fstream, named "mode", are optional
+according to the class declaration in 27.8.1.11 [lib.fstream]. The
+specifications of these members in 27.8.1.12 [lib.fstream.cons] and
+27.8.1.13 lib.fstream.members] disagree with this, though the
+constructor declaration has the "explicit" function-specifier implying
+that it is intended to be callable with one argument.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+</p>
+<hr>
+<a name="461"><h3>461.&nbsp;time_get hard or impossible to implement</h3></a><p><b>Section:</b>&nbsp;22.2.5.1 <a href="lib-locales.html#lib.locale.time.get"> [lib.locale.time.get]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Bill Plauger&nbsp; <b>Date:</b>&nbsp;23 Mar 2004</p>
+<p>
+Template time_get currently contains difficult, if not impossible,
+requirements for do_date_order, do_get_time, and do_get_date. All require
+the implementation to scan a field generated by the %x or %X conversion
+specifier in strftime. Yes, do_date_order can always return no_order, but
+that doesn't help the other functions. The problem is that %x can be
+nearly anything, and it can vary widely with locales. It's horribly
+onerous to have to parse "third sunday after Michaelmas in the year of
+our Lord two thousand and three," but that's what we currently ask of
+do_get_date. More practically, it leads some people to think that if
+%x produces 10.2.04, we should know to look for dots as separators. Still
+not easy.
+</p>
+
+<p>
+Note that this is the <i>opposite</i> effect from the intent stated in the
+footnote earlier in this subclause:
+</p>
+
+<blockquote>
+"In other words, user confirmation is required for reliable parsing of
+user-entered dates and times, but machine-generated formats can be
+parsed reliably. This allows parsers to be aggressive about interpreting
+user variations on standard formats."
+</blockquote>
+
+<p>
+We should give both implementers and users an easier and more reliable
+alternative: provide a (short) list of alternative delimiters and say
+what the default date order is for no_order. For backward compatibility,
+and maximum latitude, we can permit an implementation to parse whatever
+%x or %X generates, but we shouldn't require it.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+</p>
+<hr>
+<a name="462"><h3>462.&nbsp;Destroying objects with static storage duration</h3></a><p><b>Section:</b>&nbsp;3.6.3 <a href="basic.html#basic.start.term"> [basic.start.term]</a>, 18.3 <a href="lib-support.html#lib.support.start.term"> [lib.support.start.term]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Bill Plauger&nbsp; <b>Date:</b>&nbsp;23 Mar 2004</p>
+<p>
+3.6.3 Termination spells out in detail the interleaving of static
+destructor calls and calls to functions registered with atexit. To
+match this behavior requires intimate cooperation between the code
+that calls destructors and the exit/atexit machinery. The former
+is tied tightly to the compiler; the latter is a primitive mechanism
+inherited from C that traditionally has nothing to do with static
+construction and destruction. The benefits of intermixing destructor
+calls with atexit handler calls is questionable at best, and <i>very</i>
+difficult to get right, particularly when mixing third-party C++
+libraries with different third-party C++ compilers and C libraries
+supplied by still other parties.
+</p>
+
+<p>
+I believe the right thing to do is defer all static destruction
+until after all atexit handlers are called. This is a change in
+behavior, but one that is likely visible only to perverse test
+suites. At the very least, we should <i>permit</i> deferred destruction
+even if we don't require it.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+</p>
+<hr>
+<a name="463"><h3>463.&nbsp;auto_ptr usability issues</h3></a><p><b>Section:</b>&nbsp;20.4.5 <a href="lib-utilities.html#lib.auto.ptr"> [lib.auto.ptr]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Rani Sharoni&nbsp; <b>Date:</b>&nbsp;7 Dec 2003</p>
+
+<p>
+TC1 CWG DR #84 effectively made the template%lt;class Y&gt; operator auto_ptr%lt;Y&gt;()
+member of auto_ptr (20.4.5.3/4) obsolete.
+</p>
+
+<p>
+The sole purpose of this obsolete conversion member is to enable copy
+initialization base from r-value derived (or any convertible types like
+cv-types) case:
+</p>
+<pre>
+#include %lt;memory&gt;
+using std::auto_ptr;
+
+struct B {};
+struct D : B {};
+
+auto_ptr%lt;D&gt; source();
+int sink(auto_ptr%lt;B&gt;);
+int x1 = sink( source() ); // #1 EDG - no suitable copy constructor
+</pre>
+
+<p>
+The excellent analysis of conversion operations that was given in the final
+auto_ptr proposal
+(http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/1997/N1128.pdf)
+explicitly specifies this case analysis (case 4). DR #84 makes the analysis
+wrong and actually comes to forbid the loophole that was exploited by the
+auto_ptr designers.
+</p>
+
+<p>
+I didn't encounter any compliant compiler (e.g. EDG, GCC, BCC and VC) that
+ever allowed this case. This is probably because it requires 3 user defined
+conversions and in fact current compilers conform to DR #84.
+</p>
+
+<p>
+I was surprised to discover that the obsolete conversion member actually has
+negative impact of the copy initialization base from l-value derived
+case:</p>
+<pre>
+auto_ptr%lt;D&gt; dp;
+int x2 = sink(dp); // #2 EDG - more than one user-defined conversion applies
+</pre>
+
+<p>
+I'm sure that the original intention was allowing this initialization using
+the template%lt;class Y&gt; auto_ptr(auto_ptr%lt;Y&gt;&amp; a) constructor (20.4.5.1/4) but
+since in this copy initialization it's merely user defined conversion (UDC)
+and the obsolete conversion member is UDC with the same rank (for the early
+overloading stage) there is an ambiguity between them.
+</p>
+
+<p>
+Removing the obsolete member will have impact on code that explicitly
+invokes it:
+</p>
+<pre>
+int y = sink(source().operator auto_ptr%lt;B&gt;());
+</pre>
+
+<p>
+IMHO no one ever wrote such awkward code and the reasonable workaround for
+#1 is:
+</p>
+<pre>
+int y = sink( auto_ptr%lt;B&gt;(source()) );
+</pre>
+
+<p>
+I was even more surprised to find out that after removing the obsolete
+conversion member the initialization was still ill-formed:
+int x3 = sink(dp); // #3 EDG - no suitable copy constructor
+</p>
+
+<p>
+This copy initialization semantically requires copy constructor which means
+that both template conversion constructor and the auto_ptr_ref conversion
+member (20.4.5.3/3) are required which is what was explicitly forbidden in
+DR #84. This is a bit amusing case in which removing ambiguity results with
+no candidates.
+</p>
+
+<p>
+I also found exception safety issue with auto_ptr related to auto_ptr_ref:
+</p>
+<pre>
+int f(auto_ptr%lt;B&gt;, std::string);
+auto_ptr%lt;B&gt; source2();
+
+// string constructor throws while auto_ptr_ref
+// "holds" the pointer
+int x4 = f(source2(), "xyz"); // #4
+</pre>
+
+<p>
+The theoretic execution sequence that will cause a leak:
+</p>
+<ol>
+<li>call auto_ptr%lt;B&gt;::operator auto_ptr_ref%lt;B&gt;()</li>
+<li>call string::string(char const*) and throw</li>
+</ol>
+
+<p>
+According to 20.4.5.3/3 and 20.4.5/2 the auto_ptr_ref conversion member
+returns auto_ptr_ref%lt;Y&gt; that holds *this and this is another defect since
+the type of *this is auto_ptr%lt;X&gt; where X might be different from Y. Several
+library vendors (e.g. SGI) implement auto_ptr_ref%lt;Y&gt; with Y* as member which
+is much more reasonable. Other vendor implemented auto_ptr_ref as
+defectively required and it results with awkward and catastrophic code:
+int oops = sink(auto_ptr%lt;B&gt;(source())); // warning recursive on all control
+paths
+</p>
+
+<p>
+Dave Abrahams noticed that there is no specification saying that
+auto_ptr_ref copy constructor can't throw.
+</p>
+
+<p>
+My proposal comes to solve all the above issues and significantly simplify
+auto_ptr implementation. One of the fundamental requirements from auto_ptr
+is that it can be constructed in an intuitive manner (i.e. like ordinary
+pointers) but with strict ownership semantics which yield that source
+auto_ptr in initialization must be non-const. My idea is to add additional
+constructor template with sole propose to generate ill-formed, diagnostic
+required, instance for const auto_ptr arguments during instantiation of
+declaration. This special constructor will not be instantiated for other
+types which is achievable using 14.8.2/2 (SFINAE). Having this constructor
+in hand makes the constructor template%lt;class Y&gt; auto_ptr(auto_ptr%lt;Y&gt; const&amp;)
+legitimate since the actual argument can't be const yet non const r-value
+are acceptable.
+</p>
+
+<p>
+This implementation technique makes the "private auxiliary class"
+auto_ptr_ref obsolete and I found out that modern C++ compilers (e.g. EDG,
+GCC and VC) consume the new implementation as expected and allow all
+intuitive initialization and assignment cases while rejecting illegal cases
+that involve const auto_ptr arguments.
+</p>
+
+<p>The proposed auto_ptr interface:</p>
+
+<pre>
+namespace std {
+ template%lt;class X&gt; class auto_ptr {
+ public:
+ typedef X element_type;
+
+ // 20.4.5.1 construct/copy/destroy:
+ explicit auto_ptr(X* p=0) throw();
+ auto_ptr(auto_ptr&amp;) throw();
+ template%lt;class Y&gt; auto_ptr(auto_ptr%lt;Y&gt; const&amp;) throw();
+ auto_ptr&amp; operator=(auto_ptr&amp;) throw();
+ template%lt;class Y&gt; auto_ptr&amp; operator=(auto_ptr%lt;Y&gt;) throw();
+ ~auto_ptr() throw();
+
+ // 20.4.5.2 members:
+ X&amp; operator*() const throw();
+ X* operator-&gt;() const throw();
+ X* get() const throw();
+ X* release() throw();
+ void reset(X* p=0) throw();
+
+ private:
+ template%lt;class U&gt;
+ auto_ptr(U&amp; rhs, typename
+unspecified_error_on_const_auto_ptr%lt;U&gt;::type = 0);
+ };
+}
+</pre>
+
+<p>
+One compliant technique to implement the unspecified_error_on_const_auto_ptr
+helper class is using additional private auto_ptr member class template like
+the following:
+</p>
+<pre>
+template%lt;typename T&gt; struct unspecified_error_on_const_auto_ptr;
+
+template%lt;typename T&gt;
+struct unspecified_error_on_const_auto_ptr%lt;auto_ptr%lt;T&gt; const&gt;
+{ typedef typename auto_ptr%lt;T&gt;::const_auto_ptr_is_not_allowed type; };
+</pre>
+
+<p>
+There are other techniques to implement this helper class that might work
+better for different compliers (i.e. better diagnostics) and therefore I
+suggest defining its semantic behavior without mandating any specific
+implementation. IMO, and I didn't found any compiler that thinks otherwise,
+14.7.1/5 doesn't theoretically defeat the suggested technique but I suggest
+verifying this with core language experts.
+</p>
+
+<p><b>Further changes in standard text:</b></p>
+<p>Remove section 20.4.5.3</p>
+
+<p>Change 20.4.5/2 to read something like:
+Initializing auto_ptr%lt;X&gt; from const auto_ptr%lt;Y&gt; will result with unspecified
+ill-formed declaration that will require unspecified diagnostic.</p>
+
+<p>Change 20.4.5.1/4,5,6 to read:</p>
+
+<pre>template%lt;class Y&gt; auto_ptr(auto_ptr%lt;Y&gt; const&amp; a) throw();</pre>
+<p> 4 Requires: Y* can be implicitly converted to X*.</p>
+<p> 5 Effects: Calls const_cast%lt;auto_ptr%lt;Y&gt;&amp;&gt;(a).release().</p>
+<p> 6 Postconditions: *this holds the pointer returned from a.release().</p>
+
+<p>Change 20.4.5.1/10</p>
+<pre>
+template%lt;class Y&gt; auto_ptr&amp; operator=(auto_ptr%lt;Y&gt; a) throw();
+</pre>
+<p>
+10 Requires: Y* can be implicitly converted to X*. The expression delete
+get() is well formed.
+</p>
+
+<p>LWG TC DR #127 is obsolete.</p>
+
+<p>
+Notice that the copy constructor and copy assignment operator should remain
+as before and accept non-const auto_ptr&amp; since they have effect on the form
+of the implicitly declared copy constructor and copy assignment operator of
+class that contains auto_ptr as member per 12.8/5,10:
+</p>
+<pre>
+struct X {
+ // implicit X(X&amp;)
+ // implicit X&amp; operator=(X&amp;)
+ auto_ptr%lt;D&gt; aptr_;
+};
+</pre>
+
+<p>
+In most cases this indicates about sloppy programming but preserves the
+current auto_ptr behavior.
+</p>
+
+<p>
+Dave Abrahams encouraged me to suggest fallback implementation in case that
+my suggestion that involves removing of auto_ptr_ref will not be accepted.
+In this case removing the obsolete conversion member to auto_ptr%lt;Y&gt; and
+20.4.5.3/4,5 is still required in order to eliminate ambiguity in legal
+cases. The two constructors that I suggested will co exist with the current
+members but will make auto_ptr_ref obsolete in initialization contexts.
+auto_ptr_ref will be effective in assignment contexts as suggested in DR
+#127 and I can't see any serious exception safety issues in those cases
+(although it's possible to synthesize such). auto_ptr_ref%lt;X&gt; semantics will
+have to be revised to say that it strictly holds pointer of type X and not
+reference to an auto_ptr for the favor of cases in which auto_ptr_ref%lt;Y&gt; is
+constructed from auto_ptr%lt;X&gt; in which X is different from Y (i.e. assignment
+from r-value derived to base).
+</p>
+
+<p><b>Proposed resolution:</b></p>
+<p>
+</p>
+<hr>
+<a name="464"><h3>464.&nbsp;Suggestion for new member functions in standard containers</h3></a><p><b>Section:</b>&nbsp;23.2.4 <a href="lib-containers.html#lib.vector"> [lib.vector]</a>, 23.3.1 <a href="lib-containers.html#lib.map"> [lib.map]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Thorsten Ottosen&nbsp; <b>Date:</b>&nbsp;12 May 2004</p>
+
+<p>To add slightly more convenience to vector&lt;T&gt; and map&lt;Key,T&gt; we should consider to add</p>
+<ol>
+<li> add vector&lt;T&gt;::data() member (const and non-const version)
+semantics: if( empty() ) return 0; else return buffer_;</li>
+<li> add map&lt;Key,T&gt;::at( const Key&amp; k ) member (const and non-const version)
+<i>semantics</i>: iterator i = find( k ); if( i != end() ) return *i; else throw range_error();</li>
+</ol>
+
+<p>Rationale:</p>
+
+<ul>
+<li>To obtain a pointer to the vector's buffer, one must use either operator[]() (which can give undefined behavior for empty vectors) or at() (which will then throw if the vector is empty). </li>
+<li>tr1::array&lt;T,sz&gt; already has a data() member</li>
+<li>e cannot use operator[]() when T is not DefaultDonstructible</li>
+<li>Neither when the map is const.</li>
+<li>when we want to make sure we don't add an element accidently</li>
+<li>when it should be considered an error if a key is not in the map</li>
+</ul>
+
+<p><b>Proposed resolution:</b></p>
+<p>
+</p>
+<hr>
+<a name="465"><h3>465.&nbsp;Contents of &lt;ciso646&gt;</h3></a><p><b>Section:</b>&nbsp;17.4.1.2 <a href="lib-intro.html#lib.headers"> [lib.headers]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;3 Jun 2004</p>
+<p>C header &lt;iso646.h&gt; defines macros for some operators, such as
+not_eq for !=.</p>
+
+<p>Section 17.4.1.2 <a href="lib-intro.html#lib.headers"> [lib.headers]</a> "Headers" says that except as noted in
+clauses 18 through 27, the &lt;cname&gt; C++ header contents are the same
+as the C header &lt;name.h&gt;. In particular, table 12 lists
+&lt;ciso646&gt; as a C++ header.</p>
+
+<p>I don't find any other mention of &lt;ciso646&gt;, or any mention of
+&lt;iso646.h&gt;, in clauses 17 thorough 27. That implies that the
+contents of &lt;ciso646&gt; are the same as C header &lt;iso646.h&gt;.</p>
+
+<p>Annex C (informative, not normative) in [diff.header.iso646.h] C.2.2.2
+"Header &lt;iso646.h&gt;" says that the alternative tokens are not
+defined as macros in &lt;ciso646&gt;, but does not mention the contents
+of &lt;iso646.h&gt;.</p>
+
+<p>I don't find any normative text to support C.2.2.2.</p>
+
+<p><b>Proposed resolution:</b></p>
+<p>
+Add a section somewhere (clause 18? clause 22?) that says &lt;iso646.h&gt; and &lt;ciso646&gt; are empty for C++.
+</p>
+<hr>
+<a name="466"><h3>466.&nbsp;basic_string ctor should prevent null pointer error</h3></a><p><b>Section:</b>&nbsp;21.3.1 <a href="lib-strings.html#lib.string.cons"> [lib.string.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Daniel Frey&nbsp; <b>Date:</b>&nbsp;10 Jun 2004</p>
+<p>
+Today, my colleagues and me wasted a lot of time. After some time, I
+found the problem. It could be reduced to the following short example:
+</p>
+
+<pre>
+ #include &lt;string&gt;
+ int main() { std::string( 0 ); }
+</pre>
+
+<p>The problem is that the tested compilers (GCC 2.95.2, GCC 3.3.1 and
+Comeau online) compile the above without errors or warnings! The
+programs (at least for the GCC) resulted in a SEGV.</p>
+
+<p>I know that the standard explicitly states that the ctor of string
+requires a char* which is not zero. STLs could easily detect the above
+case with a private ctor for basic_string which takes a single 'int'
+argument. This would catch the above code at compile time and would not
+ambiguate any other legal ctors.</p>
+
+<p><b>Proposed resolution:</b></p>
+<p>
+</p>
+<hr>
+<a name="467"><h3>467.&nbsp;char_traits::lt(), compare(), and memcmp()</h3></a><p><b>Section:</b>&nbsp;21.1.3.1 <a href="lib-strings.html#lib.char.traits.specializations.char"> [lib.char.traits.specializations.char]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;28 Jun 2004</p>
+
+<p>
+Table 37 describes the requirements on Traits::compare() in terms of
+those on Traits::lt(). 21.1.3.1, p6 requires char_traits&lt;char&gt;::lt()
+to yield the same result as operator&lt;(char, char).
+</p>
+
+<p>
+Most, if not all, implementations of char_traits&lt;char&gt;::compare()
+call memcmp() for efficiency. However, the C standard requires both
+memcmp() and strcmp() to interpret characters under comparison as
+unsigned, regardless of the signedness of char. As a result, all
+these char_traits implementations fail to meet the requirement
+imposed by Table 37 on compare() when char is signed.
+</p>
+
+
+<p>Read email thread starting with c++std-lib-13499 for more. </p>
+<p><b>Proposed resolution:</b></p>
+
+
+<p>Change 21.1.3.1, p6 from</p>
+<pre>
+ The two-argument members assign, eq, and lt are defined identically
+ to the built-in operators =, ==, and &lt; respectively.
+</pre>
+<p>to</p>
+<pre>
+ The two-argument members assign and eq are defined identically
+ to the built-in operators = and == respectively. The two-argument
+ member lt is defined identically to the built-in operator &lt; for
+ type unsigned char.
+</pre>
+
+<hr>
+<a name="468"><h3>468.&nbsp;unexpected consequences of ios_base::operator void*()</h3></a><p><b>Section:</b>&nbsp;27.4.4.3 <a href="lib-iostreams.html#lib.iostate.flags"> [lib.iostate.flags]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;28 Jun 2004</p>
+
+<p>The program below is required to compile but when run it typically
+produces unexpected results due to the user-defined conversion from
+std::cout or any object derived from basic_ios to void*.
+</p>
+
+<pre>
+ #include &lt;cassert&gt;
+ #include &lt;iostream&gt;
+
+ int main ()
+ {
+ assert (std::cin.tie () == std::cout);
+ // calls std::cout.ios::operator void*()
+ }
+</pre>
+
+<p><b>Proposed resolution:</b></p>
+
+<p>
+Replace std::basic_ios&lt;charT, traits&gt;::operator void*() with another
+conversion operator to some unspecified type that is guaranteed not
+to be convertible to any other type except for bool (a pointer-to-member
+might be one such suitable type). In addition, make it clear that the
+pointer type need not be a pointer to a complete type and when non-null,
+the value need not be valid.
+</p>
+
+<p>Specifically, change in [lib.ios] the signature of</p>
+<pre>
+ operator void*() const;
+</pre>
+<p>to</p>
+<pre>
+ operator unspecified_pointer_type () const;
+</pre>
+<p>and change [lib.iostate.flags], p1 from</p>
+<pre>
+ operator void*() const;
+</pre>
+<p>to</p>
+<pre>
+ operator unspecified_pointer_type() const;
+ -1- Returns: If fail() then a null pointer; otherwise some
+ non-null but not necessarily valid pointer to indicate
+ success.
+ -2- Note: The type named unspecified_pointer_type above is a pointer
+ to some unspecified, possibly incomplete type, that is guaranteed
+ not to be convertible to any other type except bool.(Footnote 1)
+ --
+ Footnote 1: A pointer-to-member might be one such suitable type.
+</pre>
+
+<hr>
+<a name="469"><h3>469.&nbsp;vector&lt;bool&gt; ill-formed relational operators</h3></a><p><b>Section:</b>&nbsp;23.2.5 <a href="lib-containers.html#lib.vector.bool"> [lib.vector.bool]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;28 Jun 2004</p>
+
+<p>
+The overloads of relational operators for vector&lt;bool&gt; specified
+in [lib.vector.bool] are redundant (they are semantically identical
+to those provided for the vector primary template) and may even be
+diagnosed as ill-formed (refer to Daveed Vandevoorde's explanation
+in c++std-lib-13647).
+</p>
+
+<p><b>Proposed resolution:</b></p>
+<p>
+Remove all overloads of overloads of relational operators for
+vector&lt;bool&gt; from [lib.vector.bool].
+</p>
+<hr>
+<a name="470"><h3>470.&nbsp;accessing containers from their elements' special functions</h3></a><p><b>Section:</b>&nbsp;23 <a href="lib-containers.html#lib.containers"> [lib.containers]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;28 Jun 2004</p>
+
+<p>
+The standard doesn't prohibit the destructors (or any other special
+functions) of containers' elements invoked from a member function
+of the container from "recursively" calling the same (or any other)
+member function on the same container object, potentially while the
+container is in an intermediate state, or even changing the state
+of the container object while it is being modified. This may result
+in some surprising (i.e., undefined) behavior.
+</p>
+
+<p>Read email thread starting with c++std-lib-13637 for more.</p>
+
+<p><b>Proposed resolution:</b></p>
+
+<p>Add to Container Requirements the following new paragraph:</p>
+
+<pre>
+ Unless otherwise specified, the behavior of a program that
+ invokes a container member function f from a member function
+ g of the container's value_type on a container object c that
+ called g from its mutating member function h, is undefined.
+ I.e., if v is an element of c, directly or indirectly calling
+ c.h() from v.g() called from c.f(), is undefined.
+</pre>
+
+<hr>
+<a name="471"><h3>471.&nbsp;result of what() implementation-defined</h3></a><p><b>Section:</b>&nbsp;18.6.1 <a href="lib-support.html#lib.exception"> [lib.exception]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;28 Jun 2004</p>
+
+<p>[lib.exception] specifies the following:</p>
+<pre>
+ exception (const exception&amp;) throw();
+ exception&amp; operator= (const exception&amp;) throw();
+
+ -4- Effects: Copies an exception object.
+ -5- Notes: The effects of calling what() after assignment
+ are implementation-defined.
+</pre>
+
+<p>
+First, does the Note only apply to the assignment operator? If so,
+what are the effects of calling what() on a copy of an object? Is
+the returned pointer supposed to point to an identical copy of
+the NTBS returned by what() called on the original object or not?
+</p>
+
+<p>
+Second, is this Note intended to extend to all the derived classes
+in section 19? I.e., does the standard provide any guarantee for
+the effects of what() called on a copy of any of the derived class
+described in section 19?
+</p>
+
+<p>
+Finally, if the answer to the first question is no, I believe it
+constitutes a defect since throwing an exception object typically
+implies invoking the copy ctor on the object. If the answer is yes,
+then I believe the standard ought to be clarified to spell out
+exactly what the effects are on the copy (i.e., after the copy
+ctor was called).
+</p>
+<p><b>Proposed resolution:</b></p>
+<hr>
+<a name="472"><h3>472.&nbsp;Missing "Returns" clause in std::equal_range</h3></a><p><b>Section:</b>&nbsp;25.3.3.3 <a href="lib-algorithms.html#lib.equal.range"> [lib.equal.range]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Prateek R Karandikar&nbsp; <b>Date:</b>&nbsp;29 Feb 1900</p>
+<p>
+There is no "Returns:" clause for std::equal_range, which returns non-void.
+</p>
+<p><b>Proposed resolution:</b></p>
+<hr>
+<a name="473"><h3>473.&nbsp;underspecified ctype calls</h3></a><p><b>Section:</b>&nbsp;22.2.1.1 <a href="lib-locales.html#lib.locale.ctype"> [lib.locale.ctype]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;1 Jul 2004</p>
+<p>
+Most ctype member functions come in two forms: one that operates
+on a single character at a time and another form that operates
+on a range of characters. Both forms are typically described by
+a single Effects and/or Returns clause.
+</p>
+<p>
+The Returns clause of each of the single-character non-virtual forms
+suggests that the function calls the corresponding single character
+virtual function, and that the array form calls the corresponding
+virtual array form. Neither of the two forms of each virtual member
+function is required to be implemented in terms of the other.
+</p>
+<p>
+There are three problems:
+</p>
+<p>
+1. One is that while the standard does suggest that each non-virtual
+member function calls the corresponding form of the virtual function,
+it doesn't actually explicitly require it.
+</p>
+<p>
+Implementations that cache results from some of the virtual member
+functions for some or all values of their arguments might want to
+call the array form from the non-array form the first time to fill
+the cache and avoid any or most subsequent virtual calls. Programs
+that rely on each form of the virtual function being called from
+the corresponding non-virtual function will see unexpected behavior
+when using such implementations.
+</p>
+<p>
+2. The second problem is that either form of each of the virtual
+functions can be overridden by a user-defined function in a derived
+class to return a value that is different from the one produced by
+the virtual function of the alternate form that has not been
+overriden.
+</p>
+<p>
+Thus, it might be possible for, say, ctype::widen(c) to return one
+value, while for ctype::widen(&amp;c, &amp;c + 1, &amp;wc) to set
+wc to another value. This is almost certainly not intended. Both
+forms of every function should be required to return the same result
+for the same character, otherwise the same program using an
+implementation that calls one form of the functions will behave
+differently than when using another implementation that calls the
+other form of the function "under the hood."
+</p>
+<p>
+3. The last problem is that the standard text fails to specify whether
+one form of any of the virtual functions is permitted to be implemented
+in terms of the other form or not, and if so, whether it is required
+or permitted to call the overridden virtual function or not.
+</p>
+<p>
+Thus, a program that overrides one of the virtual functions so that
+it calls the other form which then calls the base member might end
+up in an infinite loop if the called form of the base implementation
+of the function in turn calls the other form.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+To fix these problems I propose the following:
+</p>
+<p>
+Add two paragraphs immediately after 22.2.1.1 [lib.locale.ctype],
+p2, with the following text:
+</p>
+
+<pre>
+ -3- Each ctype non-virtual member function that comes in two forms,
+ one that takes a range of elements of char_type, and another
+ that takes just a single element of char_type, is required to
+ call the corresponding form of the virtual member function
+ with the same value of char_type to obtain the result. The
+ result for the same argument may be cached and returned from
+ subsequent calls to either form of the non-virtual member
+ function with that argument.
+
+ -4- For each ctype virtual member function that comes in two forms
+ (as explained above), the single element form is required to
+ produce the same result for a character c that the corresponding
+ array form produces for the array element with the same value as
+ c, and vice versa.
+
+ -5- It is unspecified whether the array form of each virtual member
+ function calls the single-element virtual overload of the same
+ function in a loop, or whether the single element form calls
+ the array form with an array of a single element with the value
+ of its argument, or whether neither form calls the other. In
+ any case, an implementation is not permitted to make calls from
+ one form of any virtual member function to the corresponding
+ other form that is overridden in a derived class.
+</pre>
+
+<hr>
+<a name="474"><h3>474.&nbsp;confusing Footnote 297</h3></a><p><b>Section:</b>&nbsp;27.6.2.5.4 <a href="lib-iostreams.html#lib.ostream.inserters.character"> [lib.ostream.inserters.character]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;1 Jul 2004</p>
+
+<p>
+I think Footnote 297 is confused. The paragraph it applies to seems
+quite clear in that widen() is only called if the object is not a char
+stream (i.e., not basic_ostream&lt;char&gt;), so it's irrelevant what the
+value of widen(c) is otherwise.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+I propose to strike the Footnote.
+</p>
+<hr>
+<a name="475"><h3>475.&nbsp;May the function object passed to for_each modify the elements of the iterated sequence?</h3></a><p><b>Section:</b>&nbsp;25.1.1 <a href="lib-algorithms.html#lib.alg.foreach"> [lib.alg.foreach]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Stephan T. Lavavej, Jaakko Jarvi&nbsp; <b>Date:</b>&nbsp;9 Jul 2004</p>
+<p>
+It is not clear whether the function object passed to for_each is allowed to
+modify the elements of the sequence being iterated over.
+</p>
+
+<p>
+for_each is classified without explanation in [lib.alg.nonmodifying], "25.1
+Non-modifying sequence operations". 'Non-modifying sequence operation' is
+never defined.
+</p>
+
+<p>
+25(5) says: "If an algorithm's Effects section says that a value pointed to
+by any iterator passed as an argument is modified, then that algorithm has
+an additional type requirement: The type of that argument shall satisfy the
+requirements of a mutable iterator (24.1)."
+</p>
+
+<p>for_each's Effects section does not mention whether arguments can be
+modified:</p>
+
+<blockquote>
+ "Effects: Applies f to the result of dereferencing every iterator in the
+ range [first, last), starting from first and proceeding to last - 1."
+</blockquote>
+
+<p>
+Every other algorithm in [lib.alg.nonmodifying] is "really" non-modifying in
+the sense that neither the algorithms themselves nor the function objects
+passed to the algorithms may modify the sequences or elements in any way.
+This DR affects only for_each.
+</p>
+
+<p>
+We suspect that for_each's classification in "non-modifying sequence
+operations" means that the algorithm itself does not inherently modify the
+sequence or the elements in the sequence, but that the function object
+passed to it may modify the elements it operates on.
+</p>
+
+<p>
+The original STL document by Stepanov and Lee explicitly prohibited the
+function object from modifying its argument.
+The "obvious" implementation of for_each found in several standard library
+implementations, however, does not impose this restriction.
+As a result, we suspect that the use of for_each with function objects that modify
+their arguments is wide-spread.
+If the restriction was reinstated, all such code would become non-conforming.
+Further, none of the other algorithms in the Standard
+could serve the purpose of for_each (transform does not guarantee the order in
+which its function object is called).
+</p>
+
+<p>
+We suggest that the standard be clarified to explicitly allow the function object
+passed to for_each modify its argument.</p>
+
+<p><b>Proposed resolution:</b></p>
+<p>Add the following sentence to the Effects in 25.1.1 <a href="lib-algorithms.html#lib.alg.foreach"> [lib.alg.foreach]</a>:</p>
+
+<blockquote>
+"f may apply non-constant functions through the dereferenced iterators
+passed to it; if it does, the type of first shall satisfy the requirements
+of a mutable iterator (24.1)."
+</blockquote>
+
+<hr>
+<a name="476"><h3>476.&nbsp;Forward Iterator implied mutability</h3></a><p><b>Section:</b>&nbsp;24.1.3 <a href="lib-iterators.html#lib.forward.iterators"> [lib.forward.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;9 Jul 2004</p>
+
+<p>24.1/3 says:</p>
+<blockquote>
+ Forward iterators satisfy all the requirements of the input and
+ output iterators and can be used whenever either kind is specified
+</blockquote>
+
+<p>
+The problem is that satisfying the requirements of output iterator
+means that you can always assign *something* into the result of
+dereferencing it. That makes almost all non-mutable forward
+iterators non-conforming. I think we need to sever the refinement
+relationship between forward iterator and output iterator.
+</p>
+
+<p><b>Proposed resolution:</b></p>
+<p>in 24.1/3, replace:</p>
+<blockquote>
+ Forward iterators satisfy all the requirements of the input and
+ output iterators and can be used whenever either kind is specified.
+</blockquote>
+<p>with</p>
+<blockquote>
+ A forward iterator satisfies all the input iterator requirements.
+ A mutable forward iterator satisfies all the output iterator
+ requirements.
+</blockquote>
+<hr>
+<a name="477"><h3>477.&nbsp;Operator-&gt; for const forward iterators</h3></a><p><b>Section:</b>&nbsp;24.1.3 <a href="lib-iterators.html#lib.forward.iterators"> [lib.forward.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;11 Jul 2004</p>
+<p>
+The Forward Iterator requirements table contains the following:
+</p>
+<pre>
+ expression return type operational precondition
+ semantics
+ ========== ================== =========== ==========================
+ a-&gt;m U&amp; if X is mutable, (*a).m pre: (*a).m is well-defined.
+ otherwise const U&amp;
+
+ r-&gt;m U&amp; (*r).m pre: (*r).m is well-defined.
+</pre>
+
+<p>
+The first line is exactly right. The second line is wrong. Basically
+it implies that the const-ness of the iterator affects the const-ness
+of referenced members. But Paragraph 11 of [lib.iterator.requirements] says:
+</p>
+
+<blockquote>
+ In the following sections, a and b denote values of type const X, n
+ denotes a value of the difference type Distance, u, tmp, and m
+ denote identifiers, r denotes a value of X&amp;, t denotes a value of
+ value type T, o denotes a value of some type that is writable to
+ the output iterator.
+</blockquote>
+
+<p>AFAICT if we need the second line at all, it should read the same
+as the first line.</p>
+
+<p>Related issue: <a href="lwg-active.html#478">478</a></p>
+<p><b>Proposed resolution:</b></p>
+<hr>
+<a name="478"><h3>478.&nbsp;Should forward iterator requirements table have a line for r-&gt;m?</h3></a><p><b>Section:</b>&nbsp;24.1.3 <a href="lib-iterators.html#lib.forward.iterators"> [lib.forward.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#New">New</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;11 Jul 2004</p>
+<p>
+The Forward Iterator requirements table contains the following:
+</p>
+<pre>
+ expression return type operational precondition
+ semantics
+ ========== ================== =========== ==========================
+ a-&gt;m U&amp; if X is mutable, (*a).m pre: (*a).m is well-defined.
+ otherwise const U&amp;
+
+ r-&gt;m U&amp; (*r).m pre: (*r).m is well-defined.
+</pre>
+
+<p>The second line may be unnecessary. Paragraph 11 of
+ [lib.iterator.requirements] says:
+</p>
+
+<blockquote>
+ In the following sections, a and b denote values of type const X, n
+ denotes a value of the difference type Distance, u, tmp, and m
+ denote identifiers, r denotes a value of X&amp;, t denotes a value of
+ value type T, o denotes a value of some type that is writable to
+ the output iterator.
+</blockquote>
+
+<p>
+Because operators can be overloaded on an iterator's const-ness, the
+current requirements allow iterators to make many of the operations
+specified using the identifiers a and b invalid for non-const
+iterators. Rather than expanding the tables, I think the right
+answer is to change
+</p>
+<blockquote>
+ "const X"
+</blockquote>
+
+<p> to </p>
+
+<blockquote>
+ "X or const X"
+</blockquote>
+
+<p>in paragraph 11 of [lib.iterator.requirements].</p>
+
+<p>Related issue: <a href="lwg-active.html#477">477</a></p>
+<p><b>Proposed resolution:</b></p>
<p>----- End of document -----</p>
-</body></html> \ No newline at end of file
+</body>
+</html>
diff --git a/libstdc++-v3/docs/html/ext/lwg-defects.html b/libstdc++-v3/docs/html/ext/lwg-defects.html
index dc11dc47eb1..6f6cf2343dd 100644
--- a/libstdc++-v3/docs/html/ext/lwg-defects.html
+++ b/libstdc++-v3/docs/html/ext/lwg-defects.html
@@ -1,14 +1,15 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"><html><head><title>C++ Standard Library Defect Report List</title></head>
-
-<body text="#000000" bgcolor="#ffffff">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<html>
+<head><title>C++ Standard Library Defect Report List</title></head>
+<body bgcolor="#ffffff" text="#000000">
<table>
-<tbody><tr>
+<tr>
<td align="left">Doc. no.</td>
-<td align="left">N1538=03-0121</td>
+<td align="left">N1658=04-0098</td>
</tr>
<tr>
<td align="left">Date:</td>
-<td align="left">13 Nov 2003</td>
+<td align="left">16 Jul 2004</td>
</tr>
<tr>
<td align="left">Project:</td>
@@ -18,35 +19,48 @@
<td align="left">Reply to:</td>
<td align="left">Matt Austern &lt;austern@apple.com&gt;</td>
</tr>
-</tbody></table>
-<h1>C++ Standard Library Defect Report List (Revision 28)</h1>
+</table>
+<h1>C++ Standard Library Defect Report List (Revision 31)</h1>
<p>Reference ISO/IEC IS 14882:1998(E)</p>
<p>Also see:</p>
<ul>
<li>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-toc.html">Table of Contents</a> for all library issues.</li>
+<a href="lwg-toc.html">Table of Contents</a> for all library issues.</li>
<li>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-index.html">Index by Section</a> for all library issues.</li>
+<a href="lwg-index.html">Index by Section</a> for all library issues.</li>
<li>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-status.html">Index by Status</a> for all library issues.</li>
- <li><a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html">Library Active Issues List</a></li>
- <li><a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html">Library Closed Issues List</a></li>
+<a href="lwg-status.html">Index by Status</a> for all library issues.</li>
+ <li><a href="lwg-active.html">Library Active Issues List</a></li>
+ <li><a href="lwg-closed.html">Library Closed Issues List</a></li>
</ul>
<p>This document contains only library issues which have been closed
by the Library Working Group (LWG) after being found to be defects
- in the standard. That is, issues which have a status of <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#DR">DR</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>, or <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#RR">RR</a>. See the
- <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html">Library Closed Issues List</a> for issues closed as non-defects. See the
- <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html">Library Active Issues List</a> for active issues and more information. The
+ in the standard. That is, issues which have a status of <a href="lwg-active.html#DR">DR</a>, <a href="lwg-active.html#TC">TC</a>, or <a href="lwg-active.html#RR">RR</a>. See the
+ <a href="lwg-closed.html">Library Closed Issues List</a> for issues closed as non-defects. See the
+ <a href="lwg-active.html">Library Active Issues List</a> for active issues and more information. The
introductory material in that document also applies to this
document.</p>
<h2>Revision History</h2>
<ul>
+<li>R31:
+2004-07 mid-term mailing: reflects new proposed resolutions and
+new issues received after the post-Sydney mailing. Added
+new issues <a href="lwg-active.html#463">463</a>-<a href="lwg-active.html#478">478</a>.
+</li>
+<li>R30:
+Post-Sydney mailing: reflects decisions made at the Sydney meeting.
+Voted all "Ready" issues from R29 into the working paper.
+Added new issues <a href="lwg-active.html#460">460</a>-<a href="lwg-active.html#462">462</a>.
+</li>
+<li>R29:
+Pre-Sydney mailing. Added new issues <a href="lwg-active.html#441">441</a>-<a href="lwg-active.html#457">457</a>.
+</li>
<li>R28:
-Post-Kona mailing: reflects decisiosn made at the Kona meeting.
-Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#432">432</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#440">440</a>.
+Post-Kona mailing: reflects decisions made at the Kona meeting.
+Added new issues <a href="lwg-active.html#432">432</a>-<a href="lwg-closed.html#440">440</a>.
</li>
<li>R27:
-Pre-Kona mailing. Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#404">404</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#431">431</a>.
+Pre-Kona mailing. Added new issues <a href="lwg-defects.html#404">404</a>-<a href="lwg-active.html#431">431</a>.
</li>
<li>R26:
Post-Oxford mailing: reflects decisions made at the Oxford meeting.
@@ -54,139 +68,139 @@ All issues in Ready status were voted into DR status. All issues in
DR status were voted into WP status.
</li>
<li>R25:
-Pre-Oxford mailing. Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#390">390</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#402">402</a>.
+Pre-Oxford mailing. Added new issues <a href="lwg-closed.html#390">390</a>-<a href="lwg-defects.html#402">402</a>.
</li>
<li>R24:
Post-Santa Cruz mailing: reflects decisions made at the Santa Cruz
-meeting. All Ready issues from R23 with the exception of <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#253">253</a>, which has been given a new proposed resolution, were
-moved to DR status. Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#383">383</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#389">389</a>. (Issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#387">387</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#389">389</a> were discussed
-at the meeting.) Made progress on issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#225">225</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#226">226</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#229">229</a>: <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#225">225</a> and <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#229">229</a> have been moved to Ready status, and the only remaining
-concerns with <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#226">226</a> involve wording.
+meeting. All Ready issues from R23 with the exception of <a href="lwg-defects.html#253">253</a>, which has been given a new proposed resolution, were
+moved to DR status. Added new issues <a href="lwg-defects.html#383">383</a>-<a href="lwg-defects.html#389">389</a>. (Issues <a href="lwg-active.html#387">387</a>-<a href="lwg-defects.html#389">389</a> were discussed
+at the meeting.) Made progress on issues <a href="lwg-defects.html#225">225</a>, <a href="lwg-defects.html#226">226</a>, <a href="lwg-defects.html#229">229</a>: <a href="lwg-defects.html#225">225</a> and <a href="lwg-defects.html#229">229</a> have been moved to Ready status, and the only remaining
+concerns with <a href="lwg-defects.html#226">226</a> involve wording.
</li>
<li>R23:
-Pre-Santa Cruz mailing. Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#367">367</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#382">382</a>.
+Pre-Santa Cruz mailing. Added new issues <a href="lwg-closed.html#367">367</a>-<a href="lwg-active.html#382">382</a>.
Moved issues in the TC to TC status.
</li>
<li>R22:
-Post-Curaçao mailing. Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#362">362</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#366">366</a>.
+Post-Cura&ccedil;ao mailing. Added new issues <a href="lwg-active.html#362">362</a>-<a href="lwg-active.html#366">366</a>.
</li>
<li>R21:
-Pre-Curaçao mailing. Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#351">351</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#361">361</a>.
+Pre-Cura&ccedil;ao mailing. Added new issues <a href="lwg-closed.html#351">351</a>-<a href="lwg-closed.html#361">361</a>.
</li>
<li>R20:
Post-Redmond mailing; reflects actions taken in Redmond. Added
-new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#336">336</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#350">350</a>, of which issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#347">347</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#350">350</a> were added since Redmond, hence
+new issues <a href="lwg-defects.html#336">336</a>-<a href="lwg-closed.html#350">350</a>, of which issues
+<a href="lwg-defects.html#347">347</a>-<a href="lwg-closed.html#350">350</a> were added since Redmond, hence
not discussed at the meeting.
All Ready issues were moved to DR status, with the exception of issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#284">284</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#241">241</a>, and <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#267">267</a>.
+<a href="lwg-defects.html#284">284</a>, <a href="lwg-defects.html#241">241</a>, and <a href="lwg-closed.html#267">267</a>.
Noteworthy issues discussed at Redmond include
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#120">120</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#202">202</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#226">226</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#233">233</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#270">270</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#253">253</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#254">254</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#323">323</a>.
+<a href="lwg-defects.html#120">120</a> <a href="lwg-defects.html#202">202</a>, <a href="lwg-defects.html#226">226</a>, <a href="lwg-active.html#233">233</a>,
+<a href="lwg-defects.html#270">270</a>, <a href="lwg-defects.html#253">253</a>, <a href="lwg-active.html#254">254</a>, <a href="lwg-closed.html#323">323</a>.
</li>
<li>R19:
Pre-Redmond mailing. Added new issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#323">323</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#335">335</a>.
+<a href="lwg-closed.html#323">323</a>-<a href="lwg-defects.html#335">335</a>.
</li>
<li>R18:
Post-Copenhagen mailing; reflects actions taken in Copenhagen.
-Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#312">312</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#317">317</a>, and discussed
-new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#271">271</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#314">314</a>.
+Added new issues <a href="lwg-defects.html#312">312</a>-<a href="lwg-defects.html#317">317</a>, and discussed
+new issues <a href="lwg-defects.html#271">271</a>-<a href="lwg-closed.html#314">314</a>.
Changed status of issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#103">103</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#118">118</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#136">136</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#153">153</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#165">165</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#171">171</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#183">183</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#184">184</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#185">185</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#186">186</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#214">214</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#221">221</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#234">234</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#237">237</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#243">243</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#248">248</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#251">251</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#252">252</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#256">256</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#260">260</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#261">261</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#262">262</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#263">263</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#265">265</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#268">268</a>
+<a href="lwg-defects.html#103">103</a> <a href="lwg-defects.html#118">118</a> <a href="lwg-defects.html#136">136</a> <a href="lwg-defects.html#153">153</a>
+<a href="lwg-defects.html#165">165</a> <a href="lwg-defects.html#171">171</a> <a href="lwg-defects.html#183">183</a> <a href="lwg-defects.html#184">184</a>
+<a href="lwg-defects.html#185">185</a> <a href="lwg-defects.html#186">186</a> <a href="lwg-defects.html#214">214</a> <a href="lwg-defects.html#221">221</a>
+<a href="lwg-defects.html#234">234</a> <a href="lwg-defects.html#237">237</a> <a href="lwg-defects.html#243">243</a> <a href="lwg-defects.html#248">248</a>
+<a href="lwg-defects.html#251">251</a> <a href="lwg-defects.html#252">252</a> <a href="lwg-defects.html#256">256</a> <a href="lwg-defects.html#260">260</a>
+<a href="lwg-defects.html#261">261</a> <a href="lwg-defects.html#262">262</a> <a href="lwg-defects.html#263">263</a> <a href="lwg-defects.html#265">265</a>
+<a href="lwg-defects.html#268">268</a>
to DR.
Changed status of issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#49">49</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#109">109</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#117">117</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#182">182</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#228">228</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#230">230</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#232">232</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#235">235</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#238">238</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#241">241</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#242">242</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#250">250</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#259">259</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#264">264</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#266">266</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#267">267</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#271">271</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#272">272</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#273">273</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#275">275</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#281">281</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#284">284</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#285">285</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#286">286</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#288">288</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#292">292</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#295">295</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#297">297</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#298">298</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#301">301</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#303">303</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#306">306</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#307">307</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#308">308</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#312">312</a>
+<a href="lwg-defects.html#49">49</a> <a href="lwg-defects.html#109">109</a> <a href="lwg-defects.html#117">117</a> <a href="lwg-defects.html#182">182</a>
+<a href="lwg-defects.html#228">228</a> <a href="lwg-defects.html#230">230</a> <a href="lwg-defects.html#232">232</a> <a href="lwg-defects.html#235">235</a>
+<a href="lwg-defects.html#238">238</a> <a href="lwg-defects.html#241">241</a> <a href="lwg-defects.html#242">242</a> <a href="lwg-defects.html#250">250</a>
+<a href="lwg-defects.html#259">259</a> <a href="lwg-defects.html#264">264</a> <a href="lwg-defects.html#266">266</a> <a href="lwg-closed.html#267">267</a>
+<a href="lwg-defects.html#271">271</a> <a href="lwg-defects.html#272">272</a> <a href="lwg-defects.html#273">273</a> <a href="lwg-defects.html#275">275</a>
+<a href="lwg-defects.html#281">281</a> <a href="lwg-defects.html#284">284</a> <a href="lwg-defects.html#285">285</a> <a href="lwg-defects.html#286">286</a>
+<a href="lwg-defects.html#288">288</a> <a href="lwg-defects.html#292">292</a> <a href="lwg-defects.html#295">295</a> <a href="lwg-defects.html#297">297</a>
+<a href="lwg-defects.html#298">298</a> <a href="lwg-defects.html#301">301</a> <a href="lwg-defects.html#303">303</a> <a href="lwg-defects.html#306">306</a>
+<a href="lwg-defects.html#307">307</a> <a href="lwg-defects.html#308">308</a> <a href="lwg-defects.html#312">312</a>
to Ready.
Closed issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#111">111</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#277">277</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#279">279</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#287">287</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#289">289</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#293">293</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#302">302</a> <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#313">313</a>
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#314">314</a>
+<a href="lwg-closed.html#111">111</a> <a href="lwg-closed.html#277">277</a> <a href="lwg-closed.html#279">279</a> <a href="lwg-closed.html#287">287</a>
+<a href="lwg-closed.html#289">289</a> <a href="lwg-closed.html#293">293</a> <a href="lwg-closed.html#302">302</a> <a href="lwg-closed.html#313">313</a>
+<a href="lwg-closed.html#314">314</a>
as NAD.
</li>
<li>R17:
Pre-Copenhagen mailing. Converted issues list to XML. Added proposed
-resolutions for issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#49">49</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#76">76</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#91">91</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#235">235</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#250">250</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#267">267</a>.
-Added new issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#278">278</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#311">311</a>.
+resolutions for issues <a href="lwg-defects.html#49">49</a>, <a href="lwg-defects.html#76">76</a>, <a href="lwg-defects.html#91">91</a>, <a href="lwg-defects.html#235">235</a>, <a href="lwg-defects.html#250">250</a>, <a href="lwg-closed.html#267">267</a>.
+Added new issues <a href="lwg-defects.html#278">278</a>-<a href="lwg-defects.html#311">311</a>.
</li>
<li>R16:
post-Toronto mailing; reflects actions taken in Toronto. Added new
-issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#265">265</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#277">277</a>. Changed status of issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#3">3</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#8">8</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#9">9</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#19">19</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#26">26</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#31">31</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#61">61</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#63">63</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#86">86</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#108">108</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#112">112</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#114">114</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#115">115</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#122">122</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#127">127</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#129">129</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#134">134</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#137">137</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#142">142</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#144">144</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#146">146</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#147">147</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#159">159</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#164">164</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#170">170</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#181">181</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#199">199</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#208">208</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#209">209</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#210">210</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#211">211</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#212">212</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#217">217</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#220">220</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#222">222</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#223">223</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#224">224</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#227">227</a> to "DR". Reopened issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#23">23</a>. Reopened
-issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#187">187</a>. Changed issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#2">2</a> and
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#4">4</a> to NAD. Fixed a typo in issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#17">17</a>. Fixed
-issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#70">70</a>: signature should be changed both places it
-appears. Fixed issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#160">160</a>: previous version didn't fix
+issues <a href="lwg-defects.html#265">265</a>-<a href="lwg-closed.html#277">277</a>. Changed status of issues
+<a href="lwg-defects.html#3">3</a>, <a href="lwg-defects.html#8">8</a>, <a href="lwg-defects.html#9">9</a>, <a href="lwg-defects.html#19">19</a>,
+<a href="lwg-defects.html#26">26</a>, <a href="lwg-defects.html#31">31</a>, <a href="lwg-defects.html#61">61</a>,
+<a href="lwg-defects.html#63">63</a>, <a href="lwg-defects.html#86">86</a>, <a href="lwg-defects.html#108">108</a>,
+<a href="lwg-defects.html#112">112</a>, <a href="lwg-defects.html#114">114</a>, <a href="lwg-defects.html#115">115</a>,
+<a href="lwg-defects.html#122">122</a>, <a href="lwg-defects.html#127">127</a>, <a href="lwg-defects.html#129">129</a>,
+<a href="lwg-defects.html#134">134</a>, <a href="lwg-defects.html#137">137</a>, <a href="lwg-defects.html#142">142</a>,
+<a href="lwg-defects.html#144">144</a>, <a href="lwg-defects.html#146">146</a>, <a href="lwg-defects.html#147">147</a>,
+<a href="lwg-defects.html#159">159</a>, <a href="lwg-defects.html#164">164</a>, <a href="lwg-defects.html#170">170</a>,
+<a href="lwg-defects.html#181">181</a>, <a href="lwg-defects.html#199">199</a>, <a href="lwg-defects.html#208">208</a>,
+<a href="lwg-defects.html#209">209</a>, <a href="lwg-defects.html#210">210</a>, <a href="lwg-defects.html#211">211</a>,
+<a href="lwg-defects.html#212">212</a>, <a href="lwg-defects.html#217">217</a>, <a href="lwg-defects.html#220">220</a>,
+<a href="lwg-defects.html#222">222</a>, <a href="lwg-defects.html#223">223</a>, <a href="lwg-defects.html#224">224</a>,
+<a href="lwg-defects.html#227">227</a> to "DR". Reopened issue <a href="lwg-active.html#23">23</a>. Reopened
+issue <a href="lwg-defects.html#187">187</a>. Changed issues <a href="lwg-closed.html#2">2</a> and
+<a href="lwg-closed.html#4">4</a> to NAD. Fixed a typo in issue <a href="lwg-defects.html#17">17</a>. Fixed
+issue <a href="lwg-defects.html#70">70</a>: signature should be changed both places it
+appears. Fixed issue <a href="lwg-defects.html#160">160</a>: previous version didn't fix
the bug in enough places.
</li>
<li>R15:
pre-Toronto mailing. Added issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#233">233</a>-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#264">264</a>. Some small HTML formatting
+<a href="lwg-active.html#233">233</a>-<a href="lwg-defects.html#264">264</a>. Some small HTML formatting
changes so that we pass Weblint tests.
</li>
<li>R14:
post-Tokyo II mailing; reflects committee actions taken in
-Tokyo. Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#228">228</a> to <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#232">232</a>. (00-0019R1/N1242)
+Tokyo. Added issues <a href="lwg-defects.html#228">228</a> to <a href="lwg-defects.html#232">232</a>. (00-0019R1/N1242)
</li>
<li>R13:
-pre-Tokyo II updated: Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#212">212</a> to <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#227">227</a>.
+pre-Tokyo II updated: Added issues <a href="lwg-defects.html#212">212</a> to <a href="lwg-defects.html#227">227</a>.
</li>
<li>R12:
-pre-Tokyo II mailing: Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#199">199</a> to
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#211">211</a>. Added "and paragraph 5" to the proposed resolution
-of issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#29">29</a>. Add further rationale to issue
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#178">178</a>.
+pre-Tokyo II mailing: Added issues <a href="lwg-defects.html#199">199</a> to
+<a href="lwg-defects.html#211">211</a>. Added "and paragraph 5" to the proposed resolution
+of issue <a href="lwg-defects.html#29">29</a>. Add further rationale to issue
+<a href="lwg-closed.html#178">178</a>.
</li>
<li>R11:
post-Kona mailing: Updated to reflect LWG and full committee actions
in Kona (99-0048/N1224). Note changed resolution of issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#4">4</a> and <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#38">38</a>. Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#196">196</a>
-to <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#198">198</a>. Closed issues list split into "defects" and
+<a href="lwg-closed.html#4">4</a> and <a href="lwg-defects.html#38">38</a>. Added issues <a href="lwg-closed.html#196">196</a>
+to <a href="lwg-defects.html#198">198</a>. Closed issues list split into "defects" and
"closed" documents. Changed the proposed resolution of issue
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#4">4</a> to NAD, and changed the wording of proposed resolution
-of issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#38">38</a>.
+<a href="lwg-closed.html#4">4</a> to NAD, and changed the wording of proposed resolution
+of issue <a href="lwg-defects.html#38">38</a>.
</li>
<li>R10:
-pre-Kona updated. Added proposed resolutions <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#83">83</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#86">86</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#91">91</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#92">92</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#109">109</a>. Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#190">190</a> to
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#195">195</a>. (99-0033/D1209, 14 Oct 99)
+pre-Kona updated. Added proposed resolutions <a href="lwg-defects.html#83">83</a>,
+<a href="lwg-defects.html#86">86</a>, <a href="lwg-defects.html#91">91</a>, <a href="lwg-defects.html#92">92</a>,
+<a href="lwg-defects.html#109">109</a>. Added issues <a href="lwg-closed.html#190">190</a> to
+<a href="lwg-defects.html#195">195</a>. (99-0033/D1209, 14 Oct 99)
</li>
<li>R9:
-pre-Kona mailing. Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#140">140</a> to
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#189">189</a>. Issues list split into separate "active" and
+pre-Kona mailing. Added issues <a href="lwg-closed.html#140">140</a> to
+<a href="lwg-defects.html#189">189</a>. Issues list split into separate "active" and
"closed" documents. (99-0030/N1206, 25 Aug 99)
</li>
<li>R8:
@@ -194,48 +208,47 @@ post-Dublin mailing. Updated to reflect LWG and full committee actions
in Dublin. (99-0016/N1193, 21 Apr 99)
</li>
<li>R7:
-pre-Dublin updated: Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#130">130</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#131">131</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#132">132</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#133">133</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#134">134</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#135">135</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#136">136</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#137">137</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#138">138</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#139">139</a> (31 Mar 99)
+pre-Dublin updated: Added issues <a href="lwg-active.html#130">130</a>, <a href="lwg-closed.html#131">131</a>,
+<a href="lwg-defects.html#132">132</a>, <a href="lwg-defects.html#133">133</a>, <a href="lwg-defects.html#134">134</a>,
+<a href="lwg-closed.html#135">135</a>, <a href="lwg-defects.html#136">136</a>, <a href="lwg-defects.html#137">137</a>,
+<a href="lwg-closed.html#138">138</a>, <a href="lwg-defects.html#139">139</a> (31 Mar 99)
</li>
<li>R6:
-pre-Dublin mailing. Added issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#127">127</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#128">128</a>,
-and <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#129">129</a>. (99-0007/N1194, 22 Feb 99)
+pre-Dublin mailing. Added issues <a href="lwg-defects.html#127">127</a>, <a href="lwg-closed.html#128">128</a>,
+and <a href="lwg-defects.html#129">129</a>. (99-0007/N1194, 22 Feb 99)
</li>
<li>R5:
-update issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#103">103</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#112">112</a>; added issues
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#114">114</a> to <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#126">126</a>. Format revisions to prepare
+update issues <a href="lwg-defects.html#103">103</a>, <a href="lwg-defects.html#112">112</a>; added issues
+<a href="lwg-defects.html#114">114</a> to <a href="lwg-defects.html#126">126</a>. Format revisions to prepare
for making list public. (30 Dec 98)
</li>
<li>R4:
-post-Santa Cruz II updated: Issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#110">110</a>,
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#111">111</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#112">112</a>, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#113">113</a> added, several
+post-Santa Cruz II updated: Issues <a href="lwg-defects.html#110">110</a>,
+<a href="lwg-closed.html#111">111</a>, <a href="lwg-defects.html#112">112</a>, <a href="lwg-closed.html#113">113</a> added, several
issues corrected. (22 Oct 98)
</li>
<li>R3:
-post-Santa Cruz II: Issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#94">94</a> to <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#109">109</a>
+post-Santa Cruz II: Issues <a href="lwg-closed.html#94">94</a> to <a href="lwg-defects.html#109">109</a>
added, many issues updated to reflect LWG consensus (12 Oct 98)
</li>
<li>R2:
-pre-Santa Cruz II: Issues <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#73">73</a> to <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#93">93</a> added,
-issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#17">17</a> updated. (29 Sep 98)
+pre-Santa Cruz II: Issues <a href="lwg-closed.html#73">73</a> to <a href="lwg-closed.html#93">93</a> added,
+issue <a href="lwg-defects.html#17">17</a> updated. (29 Sep 98)
</li>
<li>R1:
-Correction to issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#55">55</a> resolution, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#60">60</a> code
-format, <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#64">64</a> title. (17 Sep 98)
+Correction to issue <a href="lwg-defects.html#55">55</a> resolution, <a href="lwg-defects.html#60">60</a> code
+format, <a href="lwg-defects.html#64">64</a> title. (17 Sep 98)
</li>
</ul>
<h2>Defect Reports</h2>
<hr>
-<a name="1"><h3>1.&nbsp;C library linkage editing oversight</h3></a><p>
-<b>Section:</b>&nbsp;17.4.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.using.linkage"> [lib.using.linkage]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;16 Nov 1997</p>
+<a name="1"><h3>1.&nbsp;C library linkage editing oversight</h3></a><p><b>Section:</b>&nbsp;17.4.2.2 <a href="lib-intro.html#lib.using.linkage"> [lib.using.linkage]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;16 Nov 1997</p>
<p>The change specified in the proposed resolution below did not make
it into the Standard. This change was accepted in principle at the
London meeting, and the exact wording below was accepted at the
Morristown meeting.</p>
<p><b>Proposed resolution:</b></p>
-<p>Change 17.4.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.using.linkage"> [lib.using.linkage]</a> paragraph 2
+<p>Change 17.4.2.2 <a href="lib-intro.html#lib.using.linkage"> [lib.using.linkage]</a> paragraph 2
from:</p>
<blockquote>
@@ -253,8 +266,7 @@ from:</p>
use extern "C++" linkage for this purpose.</p>
</blockquote>
<hr>
-<a name="3"><h3>3.&nbsp;Atexit registration during atexit() call is not described</h3></a><p>
-<b>Section:</b>&nbsp;18.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.support.start.term"> [lib.support.start.term]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;12 Dec 1997</p>
+<a name="3"><h3>3.&nbsp;Atexit registration during atexit() call is not described</h3></a><p><b>Section:</b>&nbsp;18.3 <a href="lib-support.html#lib.support.start.term"> [lib.support.start.term]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;12 Dec 1997</p>
<p>We appear not to have covered all the possibilities of
exit processing with respect to
atexit registration. <br>
@@ -373,8 +385,7 @@ committee decides. </p>
<p>See 99-0039/N1215, October 22, 1999, by Stephen D. Clamage for the analysis
supporting to the proposed resolution.</p>
<hr>
-<a name="5"><h3>5.&nbsp;String::compare specification questionable</h3></a><p>
-<b>Section:</b>&nbsp;21.3.6.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string::compare"> [lib.string::compare]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Jack Reeves&nbsp; <b>Date:</b>&nbsp;11 Dec 1997</p>
+<a name="5"><h3>5.&nbsp;String::compare specification questionable</h3></a><p><b>Section:</b>&nbsp;21.3.6.8 <a href="lib-strings.html#lib.string::compare"> [lib.string::compare]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Jack Reeves&nbsp; <b>Date:</b>&nbsp;11 Dec 1997</p>
<p>At the very end of the basic_string class definition is the signature: int
compare(size_type pos1, size_type n1, const charT* s, size_type n2 = npos) const; In the
following text this is defined as: returns
@@ -394,7 +405,7 @@ something like: str.compare(1, str.size()-1, s, strlen(s)-1); </p>
pos1, size_type n1, const charT* s) const int compare(size_type pos1, size_type n1, const
charT* s, size_type n2) const; each defined in terms of the corresponding constructor. </p>
<p><b>Proposed resolution:</b></p>
-<p>Replace the compare signature in 21.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.basic.string"> [lib.basic.string]</a>
+<p>Replace the compare signature in 21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a>
(at the very end of the basic_string synopsis) which reads:</p>
<blockquote>
@@ -413,26 +424,23 @@ charT* s, size_type n2) const; each defined in terms of the corresponding constr
size_type n2) const;</tt></p>
</blockquote>
-<p>Replace the portion of 21.3.6.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string::compare"> [lib.string::compare]</a>
+<p>Replace the portion of 21.3.6.8 <a href="lib-strings.html#lib.string::compare"> [lib.string::compare]</a>
paragraphs 5 and 6 which read:</p>
<blockquote>
- <p>
-<tt>int compare(size_type pos, size_type n1,<br>
+ <p><tt>int compare(size_type pos, size_type n1,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; charT * s, size_type n2
= npos) const;<br>
</tt>Returns:<tt><br>
basic_string&lt;charT,traits,Allocator&gt;(*this, pos, n1).compare(<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- basic_string&lt;charT,traits,Allocator&gt;( s, n2))</tt>
-</p>
+ basic_string&lt;charT,traits,Allocator&gt;( s, n2))</tt></p>
</blockquote>
<p>with:</p>
<blockquote>
- <p>
-<tt>int compare(size_type pos, size_type n1,<br>
+ <p><tt>int compare(size_type pos, size_type n1,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; const charT * s) const;<br>
</tt>Returns:<tt><br>
basic_string&lt;charT,traits,Allocator&gt;(*this, pos, n1).compare(<br>
@@ -445,8 +453,7 @@ paragraphs 5 and 6 which read:</p>
</tt>Returns:<tt><br>
basic_string&lt;charT,traits,Allocator&gt;(*this, pos, n1).compare(<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- basic_string&lt;charT,traits,Allocator&gt;( s, n2))</tt>
-</p>
+ basic_string&lt;charT,traits,Allocator&gt;( s, n2))</tt></p>
</blockquote>
<p>Editors please note that in addition to splitting the signature, the third argument
@@ -456,9 +463,8 @@ becomes const, matching the existing synopsis.</p>
the Standard which must be fixed.&nbsp; The same problem was also
identified in issues 7 (item 5) and 87.</p>
<hr>
-<a name="7"><h3>7.&nbsp;String clause minor problems</h3></a><p>
-<b>Section:</b>&nbsp;21 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.strings"> [lib.strings]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;15 Dec 1997</p>
-<p>(1) In 21.3.5.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string::insert"> [lib.string::insert]</a>, the description of template
+<a name="7"><h3>7.&nbsp;String clause minor problems</h3></a><p><b>Section:</b>&nbsp;21 <a href="lib-strings.html#lib.strings"> [lib.strings]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;15 Dec 1997</p>
+<p>(1) In 21.3.5.4 <a href="lib-strings.html#lib.string::insert"> [lib.string::insert]</a>, the description of template
&lt;class InputIterator&gt; insert(iterator, InputIterator,
InputIterator) makes no sense. It refers to a member function that
doesn't exist. It also talks about the return value of a void
@@ -479,10 +485,9 @@ possible const charT&amp;. </p>
charT* in the description. Second, given what it says in RETURNS,
leaving out the final argument will always result in an exception
getting thrown. This is paragraphs 5 and 6 of
-21.3.6.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string::compare"> [lib.string::compare]</a>
-</p>
+21.3.6.8 <a href="lib-strings.html#lib.string::compare"> [lib.string::compare]</a></p>
-<p>(6) In table 37, in section 21.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.char.traits.require"> [lib.char.traits.require]</a>,
+<p>(6) In table 37, in section 21.1.1 <a href="lib-strings.html#lib.char.traits.require"> [lib.char.traits.require]</a>,
there's a note for X::move(s, p, n). It says "Copies correctly
even where p is in [s, s+n)". This is correct as far as it goes,
but it doesn't go far enough; it should also guarantee that the copy
@@ -527,8 +532,7 @@ with:<br>
&nbsp;&nbsp;&nbsp;&nbsp; "Copies correctly even where the ranges [p, p+n) and [s,
s+n) overlap."</p>
<hr>
-<a name="8"><h3>8.&nbsp;Locale::global lacks guarantee</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.statics"> [lib.locale.statics]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;24 Dec 1997</p>
+<a name="8"><h3>8.&nbsp;Locale::global lacks guarantee</h3></a><p><b>Section:</b>&nbsp;22.1.1.5 <a href="lib-locales.html#lib.locale.statics"> [lib.locale.statics]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;24 Dec 1997</p>
<p>It appears there's an important guarantee missing from clause
22. We're told that invoking locale::global(L) sets the C locale if L
has a name. However, we're not told whether or not invoking
@@ -537,7 +541,7 @@ setlocale(s) sets the global C++ locale. </p>
<p>The intent, I think, is that it should not, but I can't find any
such words anywhere. </p>
<p><b>Proposed resolution:</b></p>
-<p>Add a sentence at the end of 22.1.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.statics"> [lib.locale.statics]</a>,
+<p>Add a sentence at the end of 22.1.1.5 <a href="lib-locales.html#lib.locale.statics"> [lib.locale.statics]</a>,
paragraph 2:&nbsp; </p>
<blockquote>
@@ -546,8 +550,7 @@ paragraph 2:&nbsp; </p>
</blockquote>
<hr>
-<a name="9"><h3>9.&nbsp;Operator new(0) calls should not yield the same pointer</h3></a><p>
-<b>Section:</b>&nbsp;18.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.new.delete"> [lib.new.delete]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;4 Jan 1998</p>
+<a name="9"><h3>9.&nbsp;Operator new(0) calls should not yield the same pointer</h3></a><p><b>Section:</b>&nbsp;18.4.1 <a href="lib-support.html#lib.new.delete"> [lib.new.delete]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;4 Jan 1998</p>
<p>Scott Meyers, in a comp.std.c++ posting: I just noticed that
section 3.7.3.1 of CD2 seems to allow for the possibility that all
calls to operator new(0) yield the same pointer, an implementation
@@ -601,8 +604,7 @@ list maintainer's note: the IS is the same.]</p>
<p>See 99-0040/N1216, October 22, 1999, by Stephen D. Clamage for the analysis
supporting to the proposed resolution.</p>
<hr>
-<a name="11"><h3>11.&nbsp;Bitset minor problems</h3></a><p>
-<b>Section:</b>&nbsp;23.3.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.template.bitset"> [lib.template.bitset]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;22 Jan 1998</p>
+<a name="11"><h3>11.&nbsp;Bitset minor problems</h3></a><p><b>Section:</b>&nbsp;23.3.5 <a href="lib-containers.html#lib.template.bitset"> [lib.template.bitset]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;22 Jan 1998</p>
<p>(1) bitset&lt;&gt;::operator[] is mentioned in the class synopsis (23.3.5), but it is
not documented in 23.3.5.2. </p>
@@ -616,7 +618,7 @@ go in the Effects clause.</p>
<p><b>Proposed resolution:</b></p>
<p>ITEMS 1 AND 2:<br>
<br>
-In the bitset synopsis (23.3.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.template.bitset"> [lib.template.bitset]</a>),
+In the bitset synopsis (23.3.5 <a href="lib-containers.html#lib.template.bitset"> [lib.template.bitset]</a>),
replace the member function <br>
<br>
<tt>&nbsp;&nbsp;&nbsp; reference operator[](size_t pos);<br>
@@ -626,12 +628,11 @@ with the two member functions<br>
<tt>&nbsp;&nbsp;&nbsp; bool operator[](size_t pos) const; <br>
&nbsp;&nbsp;&nbsp; reference operator[](size_t pos); <br>
</tt><br>
-Add the following text at the end of 23.3.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.bitset.members"> [lib.bitset.members]</a>,
+Add the following text at the end of 23.3.5.2 <a href="lib-containers.html#lib.bitset.members"> [lib.bitset.members]</a>,
immediately after paragraph 45:</p>
<blockquote>
- <p>
-<tt>bool operator[](size_t pos) const;</tt><br>
+ <p><tt>bool operator[](size_t pos) const;</tt><br>
Requires: pos is valid<br>
Throws: nothing<br>
Returns: <tt>test(pos)</tt><br>
@@ -641,25 +642,22 @@ immediately after paragraph 45:</p>
Throws: nothing<br>
Returns: An object of type <tt>bitset&lt;N&gt;::reference</tt> such that <tt>(*this)[pos]
== this-&gt;test(pos)</tt>, and such that <tt>(*this)[pos] = val</tt> is equivalent to <tt>this-&gt;set(pos,
- val);</tt>
-</p>
+ val);</tt></p>
</blockquote>
<p><b>Rationale:</b></p>
<p>The LWG believes Item 3 is not a defect. "Formatted
-input" implies the desired semantics. See 27.6.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.formatted"> [lib.istream.formatted]</a>.
+input" implies the desired semantics. See 27.6.1.2 <a href="lib-iostreams.html#lib.istream.formatted"> [lib.istream.formatted]</a>.
</p>
<hr>
-<a name="13"><h3>13.&nbsp;Eos refuses to die</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;William M. Miller&nbsp; <b>Date:</b>&nbsp;3 Mar 1998</p>
+<a name="13"><h3>13.&nbsp;Eos refuses to die</h3></a><p><b>Section:</b>&nbsp;27.6.1.2.3 <a href="lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;William M. Miller&nbsp; <b>Date:</b>&nbsp;3 Mar 1998</p>
<p>In 27.6.1.2.3, there is a reference to "eos", which is
the only one in the whole draft (at least using Acrobat search), so
it's undefined. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 27.6.1.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>, replace "eos" with
+<p>In 27.6.1.2.3 <a href="lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>, replace "eos" with
"charT()"</p>
<hr>
-<a name="14"><h3>14.&nbsp;Locale::combine should be const</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.members"> [lib.locale.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="14"><h3>14.&nbsp;Locale::combine should be const</h3></a><p><b>Section:</b>&nbsp;22.1.1.3 <a href="lib-locales.html#lib.locale.members"> [lib.locale.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>locale::combine is the only member function of locale (other than constructors and
destructor) that is not const. There is no reason for it not to be const, and good reasons
why it should have been const. Furthermore, leaving it non-const conflicts with 22.1.1
@@ -671,34 +669,31 @@ function. As constructors are never const, there was no "const" in the interface
which was transformed into member "combine". It should have been added at that
time, but the omission was not noticed. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale"> [lib.locale]</a> and also in 22.1.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.members"> [lib.locale.members]</a>, add
+<p>In 22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a> and also in 22.1.1.3 <a href="lib-locales.html#lib.locale.members"> [lib.locale.members]</a>, add
"const" to the declaration of member combine: </p>
<blockquote>
<pre>template &lt;class Facet&gt; locale combine(const locale&amp; other) const; </pre>
</blockquote>
<hr>
-<a name="15"></a><h3><a name="15">15.&nbsp;Locale::name requirement inconsistent</a></h3><p>
-<b>Section:</b>&nbsp;22.1.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.members"> [lib.locale.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="15"><h3>15.&nbsp;Locale::name requirement inconsistent</h3></a><p><b>Section:</b>&nbsp;22.1.1.3 <a href="lib-locales.html#lib.locale.members"> [lib.locale.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>locale::name() is described as returning a string that can be passed to a locale
constructor, but there is no matching constructor. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.1.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.members"> [lib.locale.members]</a>, paragraph 5, replace
+<p>In 22.1.1.3 <a href="lib-locales.html#lib.locale.members"> [lib.locale.members]</a>, paragraph 5, replace
"<tt>locale(name())</tt>" with
"<tt>locale(name().c_str())</tt>".
</p>
<hr>
-<a name="16"><h3>16.&nbsp;Bad ctype_byname&lt;char&gt; decl</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.ctype.byname.special"> [lib.locale.ctype.byname.special]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="16"><h3>16.&nbsp;Bad ctype_byname&lt;char&gt; decl</h3></a><p><b>Section:</b>&nbsp;22.2.1.4 <a href="lib-locales.html#lib.locale.ctype.byname.special"> [lib.locale.ctype.byname.special]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The new virtual members ctype_byname&lt;char&gt;::do_widen and do_narrow did not get
edited in properly. Instead, the member do_widen appears four times, with wrong argument
lists. </p>
<p><b>Proposed resolution:</b></p>
<p>The correct declarations for the overloaded members
<tt>do_narrow</tt> and <tt>do_widen</tt> should be copied
-from 22.2.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.ctype.special"> [lib.facet.ctype.special]</a>.</p>
+from 22.2.1.3 <a href="lib-locales.html#lib.facet.ctype.special"> [lib.facet.ctype.special]</a>.</p>
<hr>
-<a name="17"><h3>17.&nbsp;Bad bool parsing</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="17"><h3>17.&nbsp;Bad bool parsing</h3></a><p><b>Section:</b>&nbsp;22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>This section describes the process of parsing a text boolean value from the input
stream. It does not say it recognizes either of the sequences "true" or
"false" and returns the corresponding bool value; instead, it says it recognizes
@@ -740,7 +735,7 @@ I believe the correct algorithm is "as if": </p>
when one is a substring of the other. The proposed text below captures the logic of the
code above.</p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.2.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>, in the first line of paragraph 14,
+<p>In 22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>, in the first line of paragraph 14,
change "&amp;&amp;" to "&amp;".</p>
<p>Then, replace paragraphs 15 and 16 as follows:</p>
@@ -777,19 +772,17 @@ change "&amp;&amp;" to "&amp;".</p>
<tt>err==str.failbit</tt>. --end example]</p>
</blockquote>
<hr>
-<a name="18"><h3>18.&nbsp;Get(...bool&amp;) omitted</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.members"> [lib.facet.num.get.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="18"><h3>18.&nbsp;Get(...bool&amp;) omitted</h3></a><p><b>Section:</b>&nbsp;22.2.2.1.1 <a href="lib-locales.html#lib.facet.num.get.members"> [lib.facet.num.get.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In the list of num_get&lt;&gt; non-virtual members on page 22-23, the member
that parses bool values was omitted from the list of definitions of non-virtual
members, though it is listed in the class definition and the corresponding
virtual is listed everywhere appropriate. </p>
<p><b>Proposed resolution:</b></p>
-<p>Add at the beginning of 22.2.2.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.members"> [lib.facet.num.get.members]</a>
+<p>Add at the beginning of 22.2.2.1.1 <a href="lib-locales.html#lib.facet.num.get.members"> [lib.facet.num.get.members]</a>
another get member for bool&amp;, copied from the entry in
-22.2.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.num.get"> [lib.locale.num.get]</a>.</p>
+22.2.2.1 <a href="lib-locales.html#lib.locale.num.get"> [lib.locale.num.get]</a>.</p>
<hr>
-<a name="19"><h3>19.&nbsp;"Noconv" definition too vague</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="19"><h3>19.&nbsp;"Noconv" definition too vague</h3></a><p><b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>
In the definitions of codecvt&lt;&gt;::do_out and do_in, they are
specified to return noconv if "no conversion is
@@ -799,11 +792,10 @@ normatively what is done with the buffers.
<p><b>Proposed resolution:</b></p>
<p>
Change the entry for noconv in the table under paragraph 4 in section
-22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a> to read:
+22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a> to read:
</p>
<blockquote>
- <p>
-<tt>noconv</tt>: <tt>internT</tt> and <tt>externT</tt> are the same type,
+ <p><tt>noconv</tt>: <tt>internT</tt> and <tt>externT</tt> are the same type,
and input sequence is identical to converted sequence.</p>
</blockquote>
<p>Change the Note in paragraph 2 to normative text as follows:</p>
@@ -814,24 +806,22 @@ Change the entry for noconv in the table under paragraph 4 in section
unchanged, and there are no changes to the values in <tt>[to, to_limit)</tt>.</p>
</blockquote>
<hr>
-<a name="20"><h3>20.&nbsp;Thousands_sep returns wrong type</h3></a><p>
-<b>Section:</b>&nbsp;22.2.3.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.numpunct.virtuals"> [lib.facet.numpunct.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="20"><h3>20.&nbsp;Thousands_sep returns wrong type</h3></a><p><b>Section:</b>&nbsp;22.2.3.1.2 <a href="lib-locales.html#lib.facet.numpunct.virtuals"> [lib.facet.numpunct.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The synopsis for numpunct&lt;&gt;::do_thousands_sep, and the
definition of numpunct&lt;&gt;::thousands_sep which calls it, specify
that it returns a value of type char_type. Here it is erroneously
described as returning a "string_type". </p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.2.3.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.numpunct.virtuals"> [lib.facet.numpunct.virtuals]</a>, above paragraph 2, change
+<p>In 22.2.3.1.2 <a href="lib-locales.html#lib.facet.numpunct.virtuals"> [lib.facet.numpunct.virtuals]</a>, above paragraph 2, change
"string_type" to "char_type". </p>
<hr>
-<a name="21"><h3>21.&nbsp;Codecvt_byname&lt;&gt; instantiations</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.category"> [lib.locale.category]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="21"><h3>21.&nbsp;Codecvt_byname&lt;&gt; instantiations</h3></a><p><b>Section:</b>&nbsp;22.1.1.1.1 <a href="lib-locales.html#lib.locale.category"> [lib.locale.category]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In the second table in the section, captioned "Required
instantiations", the instantiations for codecvt_byname&lt;&gt;
have been omitted. These are necessary to allow users to construct a
locale by name from facets. </p>
<p><b>Proposed resolution:</b></p>
-<p>Add in 22.1.1.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.category"> [lib.locale.category]</a> to the table captioned
+<p>Add in 22.1.1.1.1 <a href="lib-locales.html#lib.locale.category"> [lib.locale.category]</a> to the table captioned
"Required instantiations", in the category "ctype"
the lines </p>
@@ -840,8 +830,7 @@ the lines </p>
codecvt_byname&lt;wchar_t,char,mbstate_t&gt; </pre>
</blockquote>
<hr>
-<a name="22"><h3>22.&nbsp;Member open vs. flags</h3></a><p>
-<b>Section:</b>&nbsp;27.8.1.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ifstream.members"> [lib.ifstream.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="22"><h3>22.&nbsp;Member open vs. flags</h3></a><p><b>Section:</b>&nbsp;27.8.1.7 <a href="lib-iostreams.html#lib.ifstream.members"> [lib.ifstream.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The description of basic_istream&lt;&gt;::open leaves unanswered questions about how it
responds to or changes flags in the error status for the stream. A strict reading
indicates that it ignores the bits and does not change them, which confuses users who do
@@ -849,7 +838,7 @@ not expect eofbit and failbit to remain set after a successful open. There are t
reasonable resolutions: 1) status quo 2) fail if fail(), ignore eofbit 3) clear failbit
and eofbit on call to open(). </p>
<p><b>Proposed resolution:</b></p>
-<p>In 27.8.1.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ifstream.members"> [lib.ifstream.members]</a> paragraph 3, <i>and</i> in 27.8.1.10 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ofstream.members"> [lib.ofstream.members]</a> paragraph 3, under open() effects, add a footnote:
+<p>In 27.8.1.7 <a href="lib-iostreams.html#lib.ifstream.members"> [lib.ifstream.members]</a> paragraph 3, <i>and</i> in 27.8.1.10 <a href="lib-iostreams.html#lib.ofstream.members"> [lib.ofstream.members]</a> paragraph 3, under open() effects, add a footnote:
</p>
<blockquote>
@@ -867,24 +856,22 @@ one case. The resolution of this issue clarifies what the LWG
believes to have been the original intent.</p>
<hr>
-<a name="24"><h3>24.&nbsp;"do_convert" doesn't exist</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="24"><h3>24.&nbsp;"do_convert" doesn't exist</h3></a><p><b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The description of codecvt&lt;&gt;::do_out and do_in mentions a
symbol "do_convert" which is not defined in the
standard. This is a leftover from an edit, and should be "do_in
and do_out". </p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.2.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt"> [lib.locale.codecvt]</a>, paragraph 3, change
-"do_convert" to "do_in or do_out". Also, in 22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>, change "do_convert()" to "do_in
+<p>In 22.2.1.5 <a href="lib-locales.html#lib.locale.codecvt"> [lib.locale.codecvt]</a>, paragraph 3, change
+"do_convert" to "do_in or do_out". Also, in 22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>, change "do_convert()" to "do_in
or do_out". </p>
<hr>
-<a name="25"><h3>25.&nbsp;String operator&lt;&lt; uses width() value wrong</h3></a><p>
-<b>Section:</b>&nbsp;21.3.7.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="25"><h3>25.&nbsp;String operator&lt;&lt; uses width() value wrong</h3></a><p><b>Section:</b>&nbsp;21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In the description of operator&lt;&lt; applied to strings, the standard says that uses
the smaller of os.width() and str.size(), to pad "as described in stage 3"
elsewhere; but this is inconsistent, as this allows no possibility of space for padding. </p>
<p><b>Proposed resolution:</b></p>
-<p>Change 21.3.7.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.io"> [lib.string.io]</a> paragraph 4 from:<br>
+<p>Change 21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a> paragraph 4 from:<br>
<br>
&nbsp;&nbsp;&nbsp; "... where <tt>n</tt> is the smaller of <tt>os.width()</tt> and <tt>str.size()</tt>;
..."<br>
@@ -894,8 +881,7 @@ to: <br>
&nbsp;&nbsp;&nbsp; "... where <tt>n</tt> is the larger of <tt>os.width()</tt> and <tt>str.size()</tt>;
..."</p>
<hr>
-<a name="26"><h3>26.&nbsp;Bad sentry example</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="26"><h3>26.&nbsp;Bad sentry example</h3></a><p><b>Section:</b>&nbsp;27.6.1.1.2 <a href="lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In paragraph 6, the code in the example: </p>
<pre> template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;
@@ -919,7 +905,7 @@ particular, it fails to use traits operators, and specifies incorrect
semantics. (E.g. it specifies skipping over the first character in the
sequence without examining it.) </p>
<p><b>Proposed resolution:</b></p>
-<p>Remove the example above from 27.6.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>
+<p>Remove the example above from 27.6.1.1.2 <a href="lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>
paragraph 6.</p>
<p><b>Rationale:</b></p>
<p>The originally proposed replacement code for the example was not
@@ -929,14 +915,13 @@ code ran over one page in length and was quite complicated. The LWG
decided that it would be counter-productive to include such a lengthy
example, which might well still contain errors.</p>
<hr>
-<a name="27"><h3>27.&nbsp;String::erase(range) yields wrong iterator</h3></a><p>
-<b>Section:</b>&nbsp;21.3.5.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string::erase"> [lib.string::erase]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="27"><h3>27.&nbsp;String::erase(range) yields wrong iterator</h3></a><p><b>Section:</b>&nbsp;21.3.5.5 <a href="lib-strings.html#lib.string::erase"> [lib.string::erase]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The string::erase(iterator first, iterator last) is specified to return an element one
place beyond the next element after the last one erased. E.g. for the string
"abcde", erasing the range ['b'..'d') would yield an iterator for element 'e',
while 'd' has not been erased. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 21.3.5.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string::erase"> [lib.string::erase]</a>, paragraph 10, change: </p>
+<p>In 21.3.5.5 <a href="lib-strings.html#lib.string::erase"> [lib.string::erase]</a>, paragraph 10, change: </p>
<blockquote>
<p>Returns: an iterator which points to the element immediately following _last_ prior to
@@ -950,8 +935,7 @@ while 'd' has not been erased. </p>
other elements being erased. </p>
</blockquote>
<hr>
-<a name="28"><h3>28.&nbsp;Ctype&lt;char&gt;is ambiguous</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.ctype.char.members"> [lib.facet.ctype.char.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="28"><h3>28.&nbsp;Ctype&lt;char&gt;is ambiguous</h3></a><p><b>Section:</b>&nbsp;22.2.1.3.2 <a href="lib-locales.html#lib.facet.ctype.char.members"> [lib.facet.ctype.char.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The description of the vector form of ctype&lt;char&gt;::is can be interpreted to mean
something very different from what was intended. Paragraph 4 says </p>
@@ -963,23 +947,22 @@ something very different from what was intended. Paragraph 4 says </p>
<p>This is intended to copy the value indexed from table()[] into the place identified in
vec[]. </p>
<p><b>Proposed resolution:</b></p>
-<p>Change 22.2.1.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.ctype.char.members"> [lib.facet.ctype.char.members]</a>, paragraph 4, to read </p>
+<p>Change 22.2.1.3.2 <a href="lib-locales.html#lib.facet.ctype.char.members"> [lib.facet.ctype.char.members]</a>, paragraph 4, to read </p>
<blockquote>
<p>Effects: The second form, for all *p in the range [low, high), assigns into vec[p-low]
the value table()[(unsigned char)*p]. </p>
</blockquote>
<hr>
-<a name="29"><h3>29.&nbsp;Ios_base::init doesn't exist</h3></a><p>
-<b>Section:</b>&nbsp;27.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.narrow.stream.objects"> [lib.narrow.stream.objects]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
-<p>Sections 27.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.narrow.stream.objects"> [lib.narrow.stream.objects]</a> and 27.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.wide.stream.objects"> [lib.wide.stream.objects]</a> mention
+<a name="29"><h3>29.&nbsp;Ios_base::init doesn't exist</h3></a><p><b>Section:</b>&nbsp;27.3.1 <a href="lib-iostreams.html#lib.narrow.stream.objects"> [lib.narrow.stream.objects]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<p>Sections 27.3.1 <a href="lib-iostreams.html#lib.narrow.stream.objects"> [lib.narrow.stream.objects]</a> and 27.3.2 <a href="lib-iostreams.html#lib.wide.stream.objects"> [lib.wide.stream.objects]</a> mention
a function ios_base::init, which is not defined. Probably they mean
-basic_ios&lt;&gt;::init, defined in 27.4.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a>,
+basic_ios&lt;&gt;::init, defined in 27.4.4.1 <a href="lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a>,
paragraph 3. </p>
<p><b>Proposed resolution:</b></p>
<p>[R12: modified to include paragraph 5.]</p>
-<p>In 27.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.narrow.stream.objects"> [lib.narrow.stream.objects]</a> paragraph 2 and 5, change </p>
+<p>In 27.3.1 <a href="lib-iostreams.html#lib.narrow.stream.objects"> [lib.narrow.stream.objects]</a> paragraph 2 and 5, change </p>
<blockquote>
<p>ios_base::init </p>
@@ -991,29 +974,27 @@ paragraph 3. </p>
<p>basic_ios&lt;char&gt;::init </p>
</blockquote>
-<p>Also, make a similar change in 27.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.wide.stream.objects"> [lib.wide.stream.objects]</a> except it
+<p>Also, make a similar change in 27.3.2 <a href="lib-iostreams.html#lib.wide.stream.objects"> [lib.wide.stream.objects]</a> except it
should read </p>
<blockquote>
<p>basic_ios&lt;wchar_t&gt;::init </p>
</blockquote>
<hr>
-<a name="30"><h3>30.&nbsp;Wrong header for LC_*</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.category"> [lib.locale.category]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="30"><h3>30.&nbsp;Wrong header for LC_*</h3></a><p><b>Section:</b>&nbsp;22.1.1.1.1 <a href="lib-locales.html#lib.locale.category"> [lib.locale.category]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>Paragraph 2 implies that the C macros LC_CTYPE etc. are defined in &lt;cctype&gt;,
where they are in fact defined elsewhere to appear in &lt;clocale&gt;. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.1.1.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.category"> [lib.locale.category]</a>, paragraph 2, change
+<p>In 22.1.1.1.1 <a href="lib-locales.html#lib.locale.category"> [lib.locale.category]</a>, paragraph 2, change
"&lt;cctype&gt;" to read "&lt;clocale&gt;". </p>
<hr>
-<a name="31"><h3>31.&nbsp;Immutable locale values</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="31"><h3>31.&nbsp;Immutable locale values</h3></a><p><b>Section:</b>&nbsp;22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>Paragraph 6, says "An instance of <tt>locale</tt> is
<i>immutable</i>; once a facet reference is obtained from it,
...". This has caused some confusion, because locale variables
are manifestly assignable. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale"> [lib.locale]</a> replace paragraph 6</p>
+<p>In 22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a> replace paragraph 6</p>
<blockquote>
<p>An instance of <tt>locale</tt> is immutable; once a facet
@@ -1030,8 +1011,7 @@ are manifestly assignable. </p>
long as some locale object refers to that facet.</p>
</blockquote>
<hr>
-<a name="32"><h3>32.&nbsp;Pbackfail description inconsistent</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2.4.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.virt.pback"> [lib.streambuf.virt.pback]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="32"><h3>32.&nbsp;Pbackfail description inconsistent</h3></a><p><b>Section:</b>&nbsp;27.5.2.4.4 <a href="lib-iostreams.html#lib.streambuf.virt.pback"> [lib.streambuf.virt.pback]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The description of the required state before calling virtual member
basic_streambuf&lt;&gt;::pbackfail requirements is inconsistent with the conditions
described in 27.5.2.2.4 [lib.streambuf.pub.pback] where member sputbackc calls it.
@@ -1045,7 +1025,7 @@ Specifically, the latter says it calls pbackfail if: </p>
<p>It appears that the pbackfail description is wrong. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 27.5.2.4.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.virt.pback"> [lib.streambuf.virt.pback]</a>, paragraph 1, change:</p>
+<p>In 27.5.2.4.4 <a href="lib-iostreams.html#lib.streambuf.virt.pback"> [lib.streambuf.virt.pback]</a>, paragraph 1, change:</p>
<blockquote>
<p>"<tt>traits::eq(*gptr(),traits::to_char_type( c))</tt>"</p>
@@ -1061,8 +1041,7 @@ Specifically, the latter says it calls pbackfail if: </p>
<p>Note deliberate reordering of arguments for clarity in addition to the correction of
the argument value.</p>
<hr>
-<a name="33"><h3>33.&nbsp;Codecvt&lt;&gt; mentions from_type</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="33"><h3>33.&nbsp;Codecvt&lt;&gt; mentions from_type</h3></a><p><b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In the table defining the results from do_out and do_in, the specification for the
result <i>error</i> says </p>
@@ -1073,20 +1052,19 @@ result <i>error</i> says </p>
<p>but from_type is not defined. This clearly is intended to be an externT for do_in, or
an internT for do_out. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a> paragraph 4, replace the definition
+<p>In 22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a> paragraph 4, replace the definition
in the table for the case of _error_ with </p>
<blockquote>
<p>encountered a character in <tt>[from,from_end)</tt> that it could not convert. </p>
</blockquote>
<hr>
-<a name="34"><h3>34.&nbsp;True/falsename() not in ctype&lt;&gt;</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="34"><h3>34.&nbsp;True/falsename() not in ctype&lt;&gt;</h3></a><p><b>Section:</b>&nbsp;22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In paragraph 19, Effects:, members truename() and falsename are used from facet
ctype&lt;charT&gt;, but it has no such members. Note that this is also a problem in
22.2.2.1.2, addressed in (4). </p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.2.2.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>, paragraph 19, in the Effects:
+<p>In 22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>, paragraph 19, in the Effects:
clause for member put(...., bool), replace the initialization of the
string_type value s as follows: </p>
@@ -1095,13 +1073,12 @@ string_type value s as follows: </p>
string_type s = val ? np.truename() : np.falsename(); </pre>
</blockquote>
<hr>
-<a name="35"><h3>35.&nbsp;No manipulator unitbuf in synopsis</h3></a><p>
-<b>Section:</b>&nbsp;27.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.iostreams.base"> [lib.iostreams.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
-<p>In 27.4.5.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.fmtflags.manip"> [lib.fmtflags.manip]</a>, we have a definition for a manipulator
+<a name="35"><h3>35.&nbsp;No manipulator unitbuf in synopsis</h3></a><p><b>Section:</b>&nbsp;27.4 <a href="lib-iostreams.html#lib.iostreams.base"> [lib.iostreams.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<p>In 27.4.5.1 <a href="lib-iostreams.html#lib.fmtflags.manip"> [lib.fmtflags.manip]</a>, we have a definition for a manipulator
named "unitbuf". Unlike other manipulators, it's not listed
in synopsis. Similarly for "nounitbuf". </p>
<p><b>Proposed resolution:</b></p>
-<p>Add to the synopsis for &lt;ios&gt; in 27.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.iostreams.base"> [lib.iostreams.base]</a>, after
+<p>Add to the synopsis for &lt;ios&gt; in 27.4 <a href="lib-iostreams.html#lib.iostreams.base"> [lib.iostreams.base]</a>, after
the entry for "nouppercase", the prototypes: </p>
<blockquote>
@@ -1109,8 +1086,7 @@ the entry for "nouppercase", the prototypes: </p>
ios_base&amp; nounitbuf(ios_base&amp; str); </pre>
</blockquote>
<hr>
-<a name="36"><h3>36.&nbsp;Iword &amp; pword storage lifetime omitted</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base.storage"> [lib.ios.base.storage]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="36"><h3>36.&nbsp;Iword &amp; pword storage lifetime omitted</h3></a><p><b>Section:</b>&nbsp;27.4.2.5 <a href="lib-iostreams.html#lib.ios.base.storage"> [lib.ios.base.storage]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In the definitions for ios_base::iword and pword, the lifetime of the storage is
specified badly, so that an implementation which only keeps the last value stored appears
to conform. In particular, it says: </p>
@@ -1120,7 +1096,7 @@ member with a different index ... </p>
<p>This is not idle speculation; at least one implementation was done this way. </p>
<p><b>Proposed resolution:</b></p>
-<p>Add in 27.4.2.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base.storage"> [lib.ios.base.storage]</a>, in both paragraph 2 and also in
+<p>Add in 27.4.2.5 <a href="lib-iostreams.html#lib.ios.base.storage"> [lib.ios.base.storage]</a>, in both paragraph 2 and also in
paragraph 4, replace the sentence: </p>
<blockquote>
@@ -1139,8 +1115,7 @@ paragraph 4, replace the sentence: </p>
<p>substituting "iword" or "pword" as appropriate. </p>
<hr>
-<a name="37"><h3>37.&nbsp;Leftover "global" reference</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="37"><h3>37.&nbsp;Leftover "global" reference</h3></a><p><b>Section:</b>&nbsp;22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>In the overview of locale semantics, paragraph 4, is the sentence </p>
<blockquote>
@@ -1151,15 +1126,14 @@ paragraph 4, replace the sentence: </p>
<p>This is not supported by the definition of use_facet&lt;&gt;, and represents semantics
from an old draft. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale"> [lib.locale]</a>, paragraph 4, delete the parenthesized
+<p>In 22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a>, paragraph 4, delete the parenthesized
expression </p>
<blockquote>
<p>(or, failing that, in the global locale) </p>
</blockquote>
<hr>
-<a name="38"><h3>38.&nbsp;Facet definition incomplete</h3></a><p>
-<b>Section:</b>&nbsp;22.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.global.templates"> [lib.locale.global.templates]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="38"><h3>38.&nbsp;Facet definition incomplete</h3></a><p><b>Section:</b>&nbsp;22.1.2 <a href="lib-locales.html#lib.locale.global.templates"> [lib.locale.global.templates]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>It has been noticed by Esa Pulkkinen that the definition of
"facet" is incomplete. In particular, a class derived from
another facet, but which does not define a member <i>id</i>, cannot
@@ -1178,7 +1152,7 @@ reads: </p>
<blockquote>
<p>Requires: <tt>Facet</tt> is a facet class whose definition
- contains the public static member <tt>id</tt> as defined in 22.1.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.facet"> [lib.locale.facet]</a>. </p>
+ contains the public static member <tt>id</tt> as defined in 22.1.1.1.2 <a href="lib-locales.html#lib.locale.facet"> [lib.locale.facet]</a>. </p>
</blockquote>
<p><i>[
@@ -1189,8 +1163,7 @@ contains (not inherits) the public static member
]</i></p>
<hr>
-<a name="39"><h3>39.&nbsp;istreambuf_iterator&lt;&gt;::operator++(int) definition garbled</h3></a><p>
-<b>Section:</b>&nbsp;24.5.3.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.istreambuf.iterator::op%2B%2B"> [lib.istreambuf.iterator::op++]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="39"><h3>39.&nbsp;istreambuf_iterator&lt;&gt;::operator++(int) definition garbled</h3></a><p><b>Section:</b>&nbsp;24.5.3.4 <a href="lib-iterators.html#lib.istreambuf.iterator::op++"> [lib.istreambuf.iterator::op++]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>Following the definition of istreambuf_iterator&lt;&gt;::operator++(int) in paragraph
3, the standard contains three lines of garbage text left over from a previous edit. </p>
@@ -1200,28 +1173,26 @@ sbuf_-&gt;sbumpc();
return(tmp); </pre>
</blockquote>
<p><b>Proposed resolution:</b></p>
-<p>In 24.5.3.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.istreambuf.iterator::op%2B%2B"> [lib.istreambuf.iterator::op++]</a>, delete the three lines of code at the
+<p>In 24.5.3.4 <a href="lib-iterators.html#lib.istreambuf.iterator::op++"> [lib.istreambuf.iterator::op++]</a>, delete the three lines of code at the
end of paragraph 3. </p>
<hr>
-<a name="40"><h3>40.&nbsp;Meaningless normative paragraph in examples</h3></a><p>
-<b>Section:</b>&nbsp;22.2.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="40"><h3>40.&nbsp;Meaningless normative paragraph in examples</h3></a><p><b>Section:</b>&nbsp;22.2.8 <a href="lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>Paragraph 3 of the locale examples is a description of part of an
implementation technique that has lost its referent, and doesn't mean
anything. </p>
<p><b>Proposed resolution:</b></p>
-<p>Delete 22.2.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a> paragraph 3 which begins "This
+<p>Delete 22.2.8 <a href="lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a> paragraph 3 which begins "This
initialization/identification system depends...", or (at the
editor's option) replace it with a place-holder to keep the paragraph
numbering the same. </p>
<hr>
-<a name="41"><h3>41.&nbsp;Ios_base needs clear(), exceptions()</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
-<p>The description of ios_base::iword() and pword() in 27.4.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.members.static"> [lib.ios.members.static]</a>, say that if they fail, they "set badbit,
+<a name="41"><h3>41.&nbsp;Ios_base needs clear(), exceptions()</h3></a><p><b>Section:</b>&nbsp;27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<p>The description of ios_base::iword() and pword() in 27.4.2.4 <a href="lib-iostreams.html#lib.ios.members.static"> [lib.ios.members.static]</a>, say that if they fail, they "set badbit,
which may throw an exception". However, ios_base offers no
interface to set or to test badbit; those interfaces are defined in
basic_ios&lt;&gt;. </p>
<p><b>Proposed resolution:</b></p>
-<p>Change the description in 27.4.2.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base.storage"> [lib.ios.base.storage]</a> in
+<p>Change the description in 27.4.2.5 <a href="lib-iostreams.html#lib.ios.base.storage"> [lib.ios.base.storage]</a> in
paragraph 2, and also in paragraph 4, as follows. Replace</p>
<blockquote>
@@ -1241,8 +1212,7 @@ paragraph 2, and also in paragraph 4, as follows. Replace</p>
setstate(badbit).]</i></p>
<hr>
-<a name="42"><h3>42.&nbsp;String ctors specify wrong default allocator</h3></a><p>
-<b>Section:</b>&nbsp;21.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.basic.string"> [lib.basic.string]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="42"><h3>42.&nbsp;String ctors specify wrong default allocator</h3></a><p><b>Section:</b>&nbsp;21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The basic_string&lt;&gt; copy constructor: </p>
<pre>basic_string(const basic_string&amp; str, size_type pos = 0,
@@ -1258,7 +1228,7 @@ vector) do not have this form of constructor, so it is inconsistent,
and an evident source of confusion, for basic_string&lt;&gt; to have
it, so it might better be removed. </p>
<p><b>Proposed resolution:</b></p>
-<p> In 21.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.basic.string"> [lib.basic.string]</a>, replace the declaration of the copy
+<p> In 21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a>, replace the declaration of the copy
constructor as follows: </p>
<blockquote>
@@ -1267,7 +1237,7 @@ basic_string(const basic_string&amp; str, size_type pos, size_type n = npos,
const Allocator&amp; a = Allocator());</pre>
</blockquote>
-<p>In 21.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.cons"> [lib.string.cons]</a>, replace the copy constructor declaration
+<p>In 21.3.1 <a href="lib-strings.html#lib.string.cons"> [lib.string.cons]</a>, replace the copy constructor declaration
as above. Add to paragraph 5, Effects:</p>
<blockquote>
@@ -1280,7 +1250,7 @@ just an unfortunate design choice.</p>
<p>The LWG considered two other possible resolutions:</p>
-<p>A. In 21.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.basic.string"> [lib.basic.string]</a>, replace the declaration of the copy
+<p>A. In 21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a>, replace the declaration of the copy
constructor as follows:</p>
<blockquote>
@@ -1290,7 +1260,7 @@ basic_string(const basic_string&amp; str, size_type pos,
size_type n, const Allocator&amp; a); </pre>
</blockquote>
-<p>In 21.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.cons"> [lib.string.cons]</a>, replace the copy constructor declaration
+<p>In 21.3.1 <a href="lib-strings.html#lib.string.cons"> [lib.string.cons]</a>, replace the copy constructor declaration
as above. Add to paragraph 5, Effects: </p>
<blockquote>
@@ -1298,7 +1268,7 @@ as above. Add to paragraph 5, Effects: </p>
value <tt>str.get_allocator()</tt>. </p>
</blockquote>
-<p>B. In 21.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.basic.string"> [lib.basic.string]</a>, and also in 21.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.cons"> [lib.string.cons]</a>, replace
+<p>B. In 21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a>, and also in 21.3.1 <a href="lib-strings.html#lib.string.cons"> [lib.string.cons]</a>, replace
the declaration of the copy constructor as follows: </p>
<blockquote>
@@ -1315,11 +1285,276 @@ Kona: issue editing snafu fixed - the proposed resolution now correctly
reflects the LWG consensus.
]</i></p>
<hr>
-<a name="46"><h3>46.&nbsp;Minor Annex D errors</h3></a><p>
-<b>Section:</b>&nbsp;D.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.str.strstreams"> [depr.str.strstreams]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Brendan Kehoe&nbsp; <b>Date:</b>&nbsp; 1 Jun 1998</p>
+<a name="44"><h3>44.&nbsp;Iostreams use operator== on int_type values</h3></a><p><b>Section:</b>&nbsp;27 <a href="lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<p>Many of the specifications for iostreams specify that character
+values or their int_type equivalents are compared using operators ==
+or !=, though in other places traits::eq() or traits::eq_int_type is
+specified to be used throughout. This is an inconsistency; we should
+change uses of == and != to use the traits members instead. </p>
+<p><b>Proposed resolution:</b></p>
+
+<p><i>[Pre-Kona: Dietmar supplied wording]</i></p>
+
+<p>List of changes to clause 27:</p>
+<ol>
+<li>
+ In lib.basic.ios.members paragraph 13 (postcondition clause for
+ 'fill(cT)') change
+
+<blockquote>
+ fillch == fill()
+</blockquote>
+
+ to
+
+<blockquote>
+ traits::eq(fillch, fill())
+</blockquote>
+
+
+</li>
+<li>
+ In lib.istream.unformatted paragraph 7 (effects clause for
+ 'get(cT,streamsize,cT)'), third bullet, change
+
+<blockquote>
+ c == delim for the next available input character c
+</blockquote>
+
+ to
+
+<blockquote>
+ traits::eq(c, delim) for the next available input character c
+ </blockquote>
+
+</li>
+<li>
+ In lib.istream.unformatted paragraph 12 (effects clause for
+ 'get(basic_streambuf&lt;cT,Tr&gt;&amp;,cT)'), third bullet, change
+
+<blockquote>
+ c == delim for the next available input character c
+</blockquote>
+
+ to
+
+<blockquote>
+ traits::eq(c, delim) for the next available input character c
+</blockquote>
+
+</li>
+<li>
+ In lib.istream.unformatted paragraph 17 (effects clause for
+ 'getline(cT,streamsize,cT)'), second bullet, change
+
+<blockquote>
+ c == delim for the next available input character c
+</blockquote>
+
+ to
+
+<blockquote>
+ traits::eq(c, delim) for the next available input character c
+ </blockquote>
+
+</li>
+<li>
+ In lib.istream.unformatted paragraph 24 (effects clause for
+ 'ignore(int,int_type)'), second bullet, change
+
+<blockquote>
+ c == delim for the next available input character c
+</blockquote>
+
+ to
+
+<blockquote>
+ traits::eq_int_type(c, delim) for the next available input
+ character c
+</blockquote>
+
+</li>
+<li>
+ In lib.istream.unformatted paragraph 25 (notes clause for
+ 'ignore(int,int_type)'), second bullet, change
+
+<blockquote>
+ The last condition will never occur if delim == traits::eof()
+</blockquote>
+
+ to
+
+<blockquote>
+ The last condition will never occur if
+ traits::eq_int_type(delim, traits::eof()).
+</blockquote>
+
+</li>
+<li>
+ In lib.istream.sentry paragraph 6 (example implementation for the
+ sentry constructor) change
+
+<blockquote>
+ while ((c = is.rdbuf()-&gt;snextc()) != traits::eof()) {
+</blockquote>
+
+ to
+
+<blockquote>
+ while (!traits::eq_int_type(c = is.rdbuf()-&gt;snextc(), traits::eof())) {
+</blockquote>
+
+</li>
+</ol>
+
+<p>List of changes to Chapter 21:</p>
+
+<ol>
+<li>
+ In lib.string::find paragraph 1 (effects clause for find()),
+ second bullet, change
+
+<blockquote>
+ at(xpos+I) == str.at(I) for all elements ...
+</blockquote>
+
+ to
+
+<blockquote>
+ traits::eq(at(xpos+I), str.at(I)) for all elements ...
+</blockquote>
+
+</li>
+<li>
+ In lib.string::rfind paragraph 1 (effects clause for rfind()),
+ second bullet, change
+
+<blockquote>
+ at(xpos+I) == str.at(I) for all elements ...
+</blockquote>
+
+ to
+
+<blockquote>
+ traits::eq(at(xpos+I), str.at(I)) for all elements ...
+</blockquote>
+
+</li>
+<li>
+ In lib.string::find.first.of paragraph 1 (effects clause for
+ find_first_of()), second bullet, change
+
+<blockquote>
+ at(xpos+I) == str.at(I) for all elements ...
+</blockquote>
+
+ to
+
+<blockquote>
+ traits::eq(at(xpos+I), str.at(I)) for all elements ...
+</blockquote>
+
+</li>
+<li>
+ In lib.string::find.last.of paragraph 1 (effects clause for
+ find_last_of()), second bullet, change
+
+<blockquote>
+ at(xpos+I) == str.at(I) for all elements ...
+</blockquote>
+
+ to
+
+<blockquote>
+ traits::eq(at(xpos+I), str.at(I)) for all elements ...
+</blockquote>
+
+</li>
+<li>
+ In lib.string::find.first.not.of paragraph 1 (effects clause for
+ find_first_not_of()), second bullet, change
+
+<blockquote>
+ at(xpos+I) == str.at(I) for all elements ...
+</blockquote>
+
+ to
+
+<blockquote>
+ traits::eq(at(xpos+I), str.at(I)) for all elements ...
+</blockquote>
+</li>
+
+<li>
+ In lib.string::find.last.not.of paragraph 1 (effects clause for
+ find_last_not_of()), second bullet, change
+
+<blockquote>
+ at(xpos+I) == str.at(I) for all elements ...
+</blockquote>
+
+ to
+
+<blockquote>
+ traits::eq(at(xpos+I), str.at(I)) for all elements ...
+</blockquote>
+</li>
+
+<li>
+ In lib.string.ios paragraph 5 (effects clause for getline()),
+ second bullet, change
+
+<blockquote>
+ c == delim for the next available input character c
+</blockquote>
+
+ to
+
+<blockquote>
+ traits::eq(c, delim) for the next available input character c
+</blockquote>
+</li>
+
+</ol>
+
+<p>Notes:</p>
+<ul>
+<li>
+ Fixing this issue highlights another sloppyness in
+ lib.istream.unformatted paragraph 24: this clause mentions a "character"
+ which is then compared to an 'int_type' (see item 5. in the list
+ below). It is not clear whether this requires explicit words and
+ if so what these words are supposed to be. A similar issue exists,
+ BTW, for operator*() of istreambuf_iterator which returns the result
+ of sgetc() as a character type (see lib.istreambuf.iterator::op*
+ paragraph 1), and for operator++() of istreambuf_iterator which
+ passes the result of sbumpc() to a constructor taking a char_type
+ (see lib.istreambuf.iterator::operator++ paragraph 3). Similarily, the
+ assignment operator ostreambuf_iterator passes a char_type to a function
+ taking an int_type (see lib.ostreambuf.iter.ops paragraph 1).
+</li>
+<li>
+ It is inconsistent to use comparisons using the traits functions in
+ Chapter 27 while not using them in Chapter 21, especially as some
+ of the inconsistent uses actually involve streams (eg. getline() on
+ streams). To avoid leaving this issue open still longer due to this
+ inconsistency (it is open since 1998), a list of changes to Chapter
+ 21 is below.
+</li>
+<li>
+ In Chapter 24 there are several places with statements like "the end
+ of stream is reached (streambuf_type::sgetc() returns traits::eof())"
+ (lib.istreambuf.iterator paragraph 1, lib.ostreambuf.iter.ops
+ paragraph 5). It is unclear whether these should be clarified to use
+ traits::eq_int_type() for detecting traits::eof().
+</li>
+</ul>
+
+<hr>
+<a name="46"><h3>46.&nbsp;Minor Annex D errors</h3></a><p><b>Section:</b>&nbsp;D.7 <a href="future.html#depr.str.strstreams"> [depr.str.strstreams]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Brendan Kehoe&nbsp; <b>Date:</b>&nbsp; 1 Jun 1998</p>
<p>See lib-6522 and edit-814.</p>
<p><b>Proposed resolution:</b></p>
-<p>Change D.7.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.strstreambuf"> [depr.strstreambuf]</a> (since streambuf is a typedef of
+<p>Change D.7.1 <a href="future.html#depr.strstreambuf"> [depr.strstreambuf]</a> (since streambuf is a typedef of
basic_streambuf&lt;char&gt;) from:</p>
<pre> virtual streambuf&lt;char&gt;* setbuf(char* s, streamsize n);</pre>
@@ -1328,7 +1563,7 @@ basic_streambuf&lt;char&gt;) from:</p>
<pre> virtual streambuf* setbuf(char* s, streamsize n);</pre>
-<p>In D.7.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.strstream"> [depr.strstream]</a> insert the semicolon now missing after
+<p>In D.7.4 <a href="future.html#depr.strstream"> [depr.strstream]</a> insert the semicolon now missing after
int_type:</p>
<pre> namespace std {
@@ -1340,30 +1575,27 @@ int_type:</p>
typedef typename char_traits&lt;char&gt;::int_type int_type
typedef typename char_traits&lt;char&gt;::pos_type pos_type;</pre>
<hr>
-<a name="47"><h3>47.&nbsp;Imbue() and getloc() Returns clauses swapped</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;21 Jun 1998</p>
+<a name="47"><h3>47.&nbsp;Imbue() and getloc() Returns clauses swapped</h3></a><p><b>Section:</b>&nbsp;27.4.2.3 <a href="lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;21 Jun 1998</p>
<p>Section 27.4.2.3 specifies how imbue() and getloc() work. That
section has two RETURNS clauses, and they make no sense as
stated. They make perfect sense, though, if you swap them. Am I
correct in thinking that paragraphs 2 and 4 just got mixed up by
accident?</p>
<p><b>Proposed resolution:</b></p>
-<p>In 27.4.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a> swap paragraphs 2 and 4.</p>
+<p>In 27.4.2.3 <a href="lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a> swap paragraphs 2 and 4.</p>
<hr>
-<a name="48"><h3>48.&nbsp;Use of non-existent exception constructor</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios::failure"> [lib.ios::failure]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;21 Jun 1998</p>
+<a name="48"><h3>48.&nbsp;Use of non-existent exception constructor</h3></a><p><b>Section:</b>&nbsp;27.4.2.1.1 <a href="lib-iostreams.html#lib.ios::failure"> [lib.ios::failure]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;21 Jun 1998</p>
<p>27.4.2.1.1, paragraph 2, says that class failure initializes the
base class, exception, with exception(msg). Class exception (see
18.6.1) has no such constructor.</p>
<p><b>Proposed resolution:</b></p>
-<p>Replace 27.4.2.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios::failure"> [lib.ios::failure]</a>, paragraph 2, with</p>
+<p>Replace 27.4.2.1.1 <a href="lib-iostreams.html#lib.ios::failure"> [lib.ios::failure]</a>, paragraph 2, with</p>
<blockquote>
<p>EFFECTS: Constructs an object of class <tt>failure</tt>.</p>
</blockquote>
<hr>
-<a name="49"><h3>49.&nbsp;Underspecification of ios_base::sync_with_stdio</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.members.static"> [lib.ios.members.static]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;21 Jun 1998</p>
+<a name="49"><h3>49.&nbsp;Underspecification of ios_base::sync_with_stdio</h3></a><p><b>Section:</b>&nbsp;27.4.2.4 <a href="lib-iostreams.html#lib.ios.members.static"> [lib.ios.members.static]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;21 Jun 1998</p>
<p>Two problems</p>
<p>(1) 27.4.2.4 doesn't say what ios_base::sync_with_stdio(f)
@@ -1376,53 +1608,57 @@ synchronized with stdio. Again, of course, I can make some
guesses. (And I'm unhappy about the performance implications of those
guesses, but that's another matter.)</p>
<p><b>Proposed resolution:</b></p>
-<p>Change the following sentence in 27.4.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.members.static"> [lib.ios.members.static]</a>
+<p>Change the following sentence in 27.4.2.4 <a href="lib-iostreams.html#lib.ios.members.static"> [lib.ios.members.static]</a>
returns clause from:</p>
<blockquote>
- <p>
-<tt>true</tt> if the standard iostream objects (27.3) are
+ <p><tt>true</tt> if the standard iostream objects (27.3) are
synchronized and otherwise returns <tt>false</tt>.</p>
</blockquote>
<p>to:</p>
<blockquote>
- <p>
-<tt>true</tt> if the previous state of the standard iostream
+ <p><tt>true</tt> if the previous state of the standard iostream
objects (27.3) was synchronized and otherwise returns
<tt>false</tt>.</p>
</blockquote>
-<p>Add the following immediately after 27.4.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.members.static"> [lib.ios.members.static]</a>,
+<p>Add the following immediately after 27.4.2.4 <a href="lib-iostreams.html#lib.ios.members.static"> [lib.ios.members.static]</a>,
paragraph 2:</p>
<blockquote>
<p>When a standard iostream object str is <i>synchronized</i> with a
standard stdio stream f, the effect of inserting a character c by</p>
-<pre> fputc(f, c);
+<pre>
+ fputc(f, c);
</pre>
<p>is the same as the effect of</p>
-<pre> str.rdbuf()-&gt;sputc(c);
+<pre>
+ str.rdbuf()-&gt;sputc(c);
</pre>
<p>for any sequence of characters; the effect of extracting a
character c by</p>
-<pre> c = fgetc(f);
+<pre>
+ c = fgetc(f);
</pre>
<p>is the same as the effect of:</p>
-<pre> c = str.rdbuf()-&gt;sbumpc(c);
+<pre>
+ c = str.rdbuf()-&gt;sbumpc(c);
</pre>
<p>for any sequences of characters; and the effect of pushing
back a character c by</p>
-<pre> ungetc(c, f);
+<pre>
+ ungetc(c, f);
</pre>
<p>is the same as the effect of</p>
-<pre> str.rdbuf()-&gt;sputbackc(c);
+<pre>
+ str.rdbuf()-&gt;sputbackc(c);
</pre>
<p>for any sequence of characters. [<i>Footnote</i>: This implies
@@ -1439,8 +1675,7 @@ of "synchronization"]</i></p>
text was added in the non-normative footnote to say that operations
on the two streams can be mixed arbitrarily.]</i></p>
<hr>
-<a name="50"><h3>50.&nbsp;Copy constructor and assignment operator of ios_base</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;21 Jun 1998</p>
+<a name="50"><h3>50.&nbsp;Copy constructor and assignment operator of ios_base</h3></a><p><b>Section:</b>&nbsp;27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;21 Jun 1998</p>
<p>As written, ios_base has a copy constructor and an assignment
operator. (Nothing in the standard says it doesn't have one, and all
classes have copy constructors and assignment operators unless you
@@ -1460,14 +1695,13 @@ that intention would have required a explicit description of the
semantics (e.g. what happens to the iarray and parray stuff).
</p>
<p><b>Proposed resolution:</b></p>
-<p>In 27.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a>, class ios_base, specify the copy
+<p>In 27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a>, class ios_base, specify the copy
constructor and operator= members as being private.</p>
<p><b>Rationale:</b></p>
<p>The LWG believes the difficulty of specifying correct semantics
outweighs any benefit of allowing ios_base objects to be copyable.</p>
<hr>
-<a name="51"><h3>51.&nbsp;Requirement to not invalidate iterators missing</h3></a><p>
-<b>Section:</b>&nbsp;23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;David Vandevoorde&nbsp; <b>Date:</b>&nbsp;23 Jun 1998</p>
+<a name="51"><h3>51.&nbsp;Requirement to not invalidate iterators missing</h3></a><p><b>Section:</b>&nbsp;23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;David Vandevoorde&nbsp; <b>Date:</b>&nbsp;23 Jun 1998</p>
<p>The std::sort algorithm can in general only sort a given sequence
by moving around values. The list&lt;&gt;::sort() member on the other
hand could move around values or just update internal pointers. Either
@@ -1513,16 +1747,15 @@ proposed resolution below is somewhat updated from CD2-23-011,
particularly the addition of the phrase "or change the values
of"</p>
<hr>
-<a name="52"><h3>52.&nbsp;Small I/O problems</h3></a><p>
-<b>Section:</b>&nbsp;27.4.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.fpos.operations"> [lib.fpos.operations]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;23 Jun 1998</p>
-<p>First, 27.4.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a>, table 89. This is pretty obvious:
+<a name="52"><h3>52.&nbsp;Small I/O problems</h3></a><p><b>Section:</b>&nbsp;27.4.3.2 <a href="lib-iostreams.html#lib.fpos.operations"> [lib.fpos.operations]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;23 Jun 1998</p>
+<p>First, 27.4.4.1 <a href="lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a>, table 89. This is pretty obvious:
it should be titled "basic_ios&lt;&gt;() effects", not
"ios_base() effects". </p>
-<p>[The second item is a duplicate; see issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#6">6</a> for
+<p>[The second item is a duplicate; see issue <a href="lwg-closed.html#6">6</a> for
resolution.]</p>
-<p>Second, 27.4.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.fpos.operations"> [lib.fpos.operations]</a> table 88 . There are a couple
+<p>Second, 27.4.3.2 <a href="lib-iostreams.html#lib.fpos.operations"> [lib.fpos.operations]</a> table 88 . There are a couple
different things wrong with it, some of which I've already discussed
with Jerry, but the most obvious mechanical sort of error is that it
uses expressions like P(i) and p(i), without ever defining what sort
@@ -1537,48 +1770,43 @@ streampos arithmetic, but that it wasn't actually supposed to do
anything meaningful except on platforms, like Unix, where genuine
arithmetic is possible.) </p>
<p><b>Proposed resolution:</b></p>
-<p>Change 27.4.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a> table 89 title from
+<p>Change 27.4.4.1 <a href="lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a> table 89 title from
"ios_base() effects" to "basic_ios&lt;&gt;()
effects". </p>
<hr>
-<a name="53"><h3>53.&nbsp;Basic_ios destructor unspecified</h3></a><p>
-<b>Section:</b>&nbsp;27.4.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;23 Jun 1998</p>
+<a name="53"><h3>53.&nbsp;Basic_ios destructor unspecified</h3></a><p><b>Section:</b>&nbsp;27.4.4.1 <a href="lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;23 Jun 1998</p>
<p>There's nothing in 27.4.4 saying what basic_ios's destructor does.
The important question is whether basic_ios::~basic_ios() destroys
rdbuf().</p>
<p><b>Proposed resolution:</b></p>
-<p>Add after 27.4.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a> paragraph 2:</p>
+<p>Add after 27.4.4.1 <a href="lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a> paragraph 2:</p>
<blockquote>
<p><tt>virtual ~basic_ios();</tt></p>
- <p>
-<b>Notes</b>: The destructor does not destroy <tt>rdbuf()</tt>.</p>
+ <p><b>Notes</b>: The destructor does not destroy <tt>rdbuf()</tt>.</p>
</blockquote>
<p><b>Rationale:</b></p>
<p>The LWG reviewed the additional question of whether or not
<tt>rdbuf(0)</tt> may set <tt>badbit</tt>. The answer is
-clearly yes; it may be set via <tt>clear()</tt>. See 27.4.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.basic.ios.members"> [lib.basic.ios.members]</a>, paragraph 6. This issue was reviewed at length
+clearly yes; it may be set via <tt>clear()</tt>. See 27.4.4.2 <a href="lib-iostreams.html#lib.basic.ios.members"> [lib.basic.ios.members]</a>, paragraph 6. This issue was reviewed at length
by the LWG, which removed from the original proposed resolution a
footnote which incorrectly said "<tt>rdbuf(0)</tt> does not set
<tt>badbit</tt>".</p>
<hr>
-<a name="54"><h3>54.&nbsp;Basic_streambuf's destructor</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.cons"> [lib.streambuf.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;25 Jun 1998</p>
+<a name="54"><h3>54.&nbsp;Basic_streambuf's destructor</h3></a><p><b>Section:</b>&nbsp;27.5.2.1 <a href="lib-iostreams.html#lib.streambuf.cons"> [lib.streambuf.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;25 Jun 1998</p>
<p>The class synopsis for basic_streambuf shows a (virtual)
destructor, but the standard doesn't say what that destructor does. My
assumption is that it does nothing, but the standard should say so
explicitly. </p>
<p><b>Proposed resolution:</b></p>
-<p>Add after 27.5.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.cons"> [lib.streambuf.cons]</a> paragraph 2:</p>
+<p>Add after 27.5.2.1 <a href="lib-iostreams.html#lib.streambuf.cons"> [lib.streambuf.cons]</a> paragraph 2:</p>
<blockquote>
<p><tt>virtual&nbsp; ~basic_streambuf();</tt></p>
- <p>
-<b>Effects</b>: None.</p>
+ <p><b>Effects</b>: None.</p>
</blockquote>
<hr>
-<a name="55"><h3>55.&nbsp;Invalid stream position is undefined</h3></a><p>
-<b>Section:</b>&nbsp;27 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;26 Jun 1998</p>
+<a name="55"><h3>55.&nbsp;Invalid stream position is undefined</h3></a><p><b>Section:</b>&nbsp;27 <a href="lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;26 Jun 1998</p>
<p>Several member functions in clause 27 are defined in certain
circumstances to return an "invalid stream position", a term
that is defined nowhere in the standard. Two places (27.5.2.4.2,
@@ -1599,54 +1827,52 @@ should not be changed. Here are the three places where "invalid
stream position" should not be changed:</p>
<blockquote>
- <p>27.7.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>, paragraph 14<br>
- 27.8.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a>, paragraph 14<br>
- D.7.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.strstreambuf.virtuals"> [depr.strstreambuf.virtuals]</a>, paragraph 17
+ <p>27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>, paragraph 14<br>
+ 27.8.1.4 <a href="lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a>, paragraph 14<br>
+ D.7.1.3 <a href="future.html#depr.strstreambuf.virtuals"> [depr.strstreambuf.virtuals]</a>, paragraph 17
</p>
</blockquote>
<p><b>Proposed resolution:</b></p>
-<p>In 27.5.2.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.virt.buffer"> [lib.streambuf.virt.buffer]</a>, paragraph 4, change "Returns an
+<p>In 27.5.2.4.2 <a href="lib-iostreams.html#lib.streambuf.virt.buffer"> [lib.streambuf.virt.buffer]</a>, paragraph 4, change "Returns an
object of class pos_type that stores an invalid stream position
(_lib.iostreams.definitions_)" to "Returns
<tt>pos_type(off_type(-1))</tt>".
</p>
-<p>In 27.5.2.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.virt.buffer"> [lib.streambuf.virt.buffer]</a>, paragraph 6, change "Returns
+<p>In 27.5.2.4.2 <a href="lib-iostreams.html#lib.streambuf.virt.buffer"> [lib.streambuf.virt.buffer]</a>, paragraph 6, change "Returns
an object of class pos_type that stores an invalid stream
position" to "Returns <tt>pos_type(off_type(-1))</tt>".</p>
-<p>In 27.7.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>, paragraph 13, change "the object
+<p>In 27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>, paragraph 13, change "the object
stores an invalid stream position" to "the return value is
<tt>pos_type(off_type(-1))</tt>". </p>
-<p>In 27.8.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a>, paragraph 13, change "returns an
+<p>In 27.8.1.4 <a href="lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a>, paragraph 13, change "returns an
invalid stream position (27.4.3)" to "returns
<tt>pos_type(off_type(-1))</tt>" </p>
-<p>In 27.8.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a>, paragraph 15, change "Otherwise
+<p>In 27.8.1.4 <a href="lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a>, paragraph 15, change "Otherwise
returns an invalid stream position (_lib.iostreams.definitions_)"
to "Otherwise returns <tt>pos_type(off_type(-1))</tt>"
</p>
-<p>In D.7.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.strstreambuf.virtuals"> [depr.strstreambuf.virtuals]</a>, paragraph 15, change "the object
+<p>In D.7.1.3 <a href="future.html#depr.strstreambuf.virtuals"> [depr.strstreambuf.virtuals]</a>, paragraph 15, change "the object
stores an invalid stream position" to "the return value is
<tt>pos_type(off_type(-1))</tt>" </p>
-<p>In D.7.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.strstreambuf.virtuals"> [depr.strstreambuf.virtuals]</a>, paragraph 18, change "the object
+<p>In D.7.1.3 <a href="future.html#depr.strstreambuf.virtuals"> [depr.strstreambuf.virtuals]</a>, paragraph 18, change "the object
stores an invalid stream position" to "the return value is
<tt>pos_type(off_type(-1))</tt>"</p>
<hr>
-<a name="56"><h3>56.&nbsp;Showmanyc's return type</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf"> [lib.streambuf]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;29 Jun 1998</p>
+<a name="56"><h3>56.&nbsp;Showmanyc's return type</h3></a><p><b>Section:</b>&nbsp;27.5.2 <a href="lib-iostreams.html#lib.streambuf"> [lib.streambuf]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;29 Jun 1998</p>
<p>The class summary for basic_streambuf&lt;&gt;, in 27.5.2, says that
showmanyc has return type int. However, 27.5.2.4.3 says that its
return type is streamsize. </p>
<p><b>Proposed resolution:</b></p>
<p>Change <tt>showmanyc</tt>'s return type in the
-27.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf"> [lib.streambuf]</a> class summary to <tt>streamsize</tt>.</p>
+27.5.2 <a href="lib-iostreams.html#lib.streambuf"> [lib.streambuf]</a> class summary to <tt>streamsize</tt>.</p>
<hr>
-<a name="57"><h3>57.&nbsp;Mistake in char_traits</h3></a><p>
-<b>Section:</b>&nbsp;21.1.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.char.traits.specializations.wchar.t"> [lib.char.traits.specializations.wchar.t]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;1 Jul 1998</p>
+<a name="57"><h3>57.&nbsp;Mistake in char_traits</h3></a><p><b>Section:</b>&nbsp;21.1.3.2 <a href="lib-strings.html#lib.char.traits.specializations.wchar.t"> [lib.char.traits.specializations.wchar.t]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;1 Jul 1998</p>
<p>21.1.3.2, paragraph 3, says "The types streampos and
wstreampos may be different if the implementation supports no shift
encoding in narrow-oriented iostreams but supports one or more shift
@@ -1660,12 +1886,11 @@ to clause 21, we see in 21.1.3.1 and 21.1.3.2 that
char_traits&lt;char&gt;::state_type and
char_traits&lt;wchar_t&gt;::state_type must both be mbstate_t. </p>
<p><b>Proposed resolution:</b></p>
-<p>Remove the sentence in 21.1.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.char.traits.specializations.wchar.t"> [lib.char.traits.specializations.wchar.t]</a> paragraph 3 which
+<p>Remove the sentence in 21.1.3.2 <a href="lib-strings.html#lib.char.traits.specializations.wchar.t"> [lib.char.traits.specializations.wchar.t]</a> paragraph 3 which
begins "The types streampos and wstreampos may be
different..." . </p>
<hr>
-<a name="59"><h3>59.&nbsp;Ambiguity in specification of gbump</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.get.area"> [lib.streambuf.get.area]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;28 Jul 1998</p>
+<a name="59"><h3>59.&nbsp;Ambiguity in specification of gbump</h3></a><p><b>Section:</b>&nbsp;27.5.2.3.1 <a href="lib-iostreams.html#lib.streambuf.get.area"> [lib.streambuf.get.area]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;28 Jul 1998</p>
<p>27.5.2.3.1 says that basic_streambuf::gbump() "Advances the
next pointer for the input sequence by n." </p>
@@ -1678,7 +1903,7 @@ pbump. </p>
<p>(The "classic" AT&amp;T implementation used the
former interpretation.)</p>
<p><b>Proposed resolution:</b></p>
-<p>Change 27.5.2.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.get.area"> [lib.streambuf.get.area]</a> paragraph 4 gbump effects from:</p>
+<p>Change 27.5.2.3.1 <a href="lib-iostreams.html#lib.streambuf.get.area"> [lib.streambuf.get.area]</a> paragraph 4 gbump effects from:</p>
<blockquote>
<p>Effects: Advances the next pointer for the input sequence by n.</p>
@@ -1690,11 +1915,10 @@ former interpretation.)</p>
<p>Effects: Adds <tt>n</tt> to the next pointer for the input sequence.</p>
</blockquote>
-<p>Make the same change to 27.5.2.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.put.area"> [lib.streambuf.put.area]</a> paragraph 4 pbump
+<p>Make the same change to 27.5.2.3.2 <a href="lib-iostreams.html#lib.streambuf.put.area"> [lib.streambuf.put.area]</a> paragraph 4 pbump
effects.</p>
<hr>
-<a name="60"><h3>60.&nbsp;What is a formatted input function?</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;3 Aug 1998</p>
+<a name="60"><h3>60.&nbsp;What is a formatted input function?</h3></a><p><b>Section:</b>&nbsp;27.6.1.2.1 <a href="lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;3 Aug 1998</p>
<p>Paragraph 1 of 27.6.1.2.1 contains general requirements for all
formatted input functions. Some of the functions defined in section
27.6.1.2 explicitly say that those requirements apply ("Behaves
@@ -1725,17 +1949,17 @@ that the "Common requirements" listed in section 27.6.1.2.1
(for basic_istream) and section 27.6.2.5.1 (for basic_ostream) do not
apply to them. </p>
-<p>Additional comments from Dietmar Kühl: It appears to be somewhat
-nonsensical to consider the functions defined in 27.6.1.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a> paragraphs 1 to 5 to be "Formatted input
+<p>Additional comments from Dietmar K&uuml;hl: It appears to be somewhat
+nonsensical to consider the functions defined in 27.6.1.2.3 <a href="lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a> paragraphs 1 to 5 to be "Formatted input
function" but since these functions are defined in a section
labeled "Formatted input functions" it is unclear to me
whether these operators are considered formatted input functions which
-have to conform to the "common requirements" from 27.6.1.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a>: If this is the case, all manipulators, not
+have to conform to the "common requirements" from 27.6.1.2.1 <a href="lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a>: If this is the case, all manipulators, not
just <tt>ws</tt>, would skip whitespace unless <tt>noskipws</tt> is
set (... but setting <tt>noskipws</tt> using the manipulator syntax
would also skip whitespace :-)</p> <p>It is not clear which functions
are to be considered unformatted input functions. As written, it seems
-that all functions in 27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a> are unformatted input
+that all functions in 27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a> are unformatted input
functions. However, it does not really make much sense to construct a
sentry object for <tt>gcount()</tt>, <tt>sync()</tt>, ... Also it is
unclear what happens to the <tt>gcount()</tt> if
@@ -1990,8 +2214,7 @@ unformatted output function (as described in 27.6.2.6, paragraph 1)."
by Judy Ward and Matt Austern. This proposed resolution is section
VI of that paper.</p>
<hr>
-<a name="61"><h3>61.&nbsp;Ambiguity in iostreams exception policy</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="61"><h3>61.&nbsp;Ambiguity in iostreams exception policy</h3></a><p><b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The introduction to the section on unformatted input (27.6.1.3)
says that every unformatted input function catches all exceptions that
were thrown during input, sets badbit, and then conditionally rethrows
@@ -2026,8 +2249,7 @@ parenthetical comment: "(Exceptions thrown from
<p>The LWG looked to two alternative wordings, and choose the proposed
resolution as better standardese.</p>
<hr>
-<a name="62"><h3>62.&nbsp;<tt>Sync</tt>'s return value</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
+<a name="62"><h3>62.&nbsp;<tt>Sync</tt>'s return value</h3></a><p><b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;6 Aug 1998</p>
<p>The Effects clause for sync() (27.6.1.3, paragraph 36) says that it
"calls rdbuf()-&gt;pubsync() and, if that function returns -1
... returns traits::eof()." </p>
@@ -2035,12 +2257,11 @@ resolution as better standardese.</p>
<p>That looks suspicious, because traits::eof() is of type
traits::int_type while the return type of sync() is int. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>, paragraph 36, change "returns
+<p>In 27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>, paragraph 36, change "returns
<tt>traits::eof()</tt>" to "returns <tt>-1</tt>".
</p>
<hr>
-<a name="63"><h3>63.&nbsp;Exception-handling policy for unformatted output</h3></a><p>
-<b>Section:</b>&nbsp;27.6.2.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.unformatted"> [lib.ostream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;11 Aug 1998</p>
+<a name="63"><h3>63.&nbsp;Exception-handling policy for unformatted output</h3></a><p><b>Section:</b>&nbsp;27.6.2.6 <a href="lib-iostreams.html#lib.ostream.unformatted"> [lib.ostream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;11 Aug 1998</p>
<p>Clause 27 details an exception-handling policy for formatted input,
unformatted input, and formatted output. It says nothing for
unformatted output (27.6.2.6). 27.6.2.6 should either include the same
@@ -2070,13 +2291,12 @@ input, unformatted input, and formatted output.
</p>
<hr>
<a name="64"><h3>64.&nbsp;Exception handling in <tt>basic_istream::operator&gt;&gt;(basic_streambuf*)</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;11 Aug 1998 </p>
+</h3></a><p><b>Section:</b>&nbsp;27.6.1.2.3 <a href="lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;11 Aug 1998 </p>
<p>27.6.1.2.3, paragraph 13, is ambiguous. It can be interpreted two
different ways, depending on whether the second sentence is read as an
elaboration of the first. </p>
<p><b>Proposed resolution:</b></p>
-<p>Replace 27.6.1.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>, paragraph 13, which begins
+<p>Replace 27.6.1.2.3 <a href="lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>, paragraph 13, which begins
"If the function inserts no characters ..." with:</p>
<blockquote>
@@ -2088,27 +2308,24 @@ elaboration of the first. </p>
(27.4.4.3), then the caught exception is rethrown. </p>
</blockquote>
<hr>
-<a name="66"><h3>66.&nbsp;Strstreambuf::setbuf</h3></a><p>
-<b>Section:</b>&nbsp;D.7.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.strstreambuf.virtuals"> [depr.strstreambuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;18 Aug 1998</p>
+<a name="66"><h3>66.&nbsp;Strstreambuf::setbuf</h3></a><p><b>Section:</b>&nbsp;D.7.1.3 <a href="future.html#depr.strstreambuf.virtuals"> [depr.strstreambuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;18 Aug 1998</p>
<p>D.7.1.3, paragraph 19, says that strstreambuf::setbuf
"Performs an operation that is defined separately for each class
derived from strstreambuf". This is obviously an incorrect
cut-and-paste from basic_streambuf. There are no classes derived from
strstreambuf. </p>
<p><b>Proposed resolution:</b></p>
-<p>D.7.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.strstreambuf.virtuals"> [depr.strstreambuf.virtuals]</a>, paragraph 19, replace the setbuf effects
+<p>D.7.1.3 <a href="future.html#depr.strstreambuf.virtuals"> [depr.strstreambuf.virtuals]</a>, paragraph 19, replace the setbuf effects
clause which currently says "Performs an operation that is
defined separately for each class derived from strstreambuf"
with:</p>
<blockquote>
- <p>
-<b>Effects</b>: implementation defined, except that
+ <p><b>Effects</b>: implementation defined, except that
<tt>setbuf(0,0)</tt> has no effect.</p>
</blockquote>
<hr>
-<a name="68"><h3>68.&nbsp;Extractors for char* should store null at end</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;14 Jul 1998</p>
+<a name="68"><h3>68.&nbsp;Extractors for char* should store null at end</h3></a><p><b>Section:</b>&nbsp;27.6.1.2.3 <a href="lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;14 Jul 1998</p>
<p>Extractors for char* (27.6.1.2.3) do not store a null character
after the extracted character sequence whereas the unformatted
functions like get() do. Why is this?</p>
@@ -2118,7 +2335,7 @@ glitch. You'll notice that the last item of the list of what stops
extraction doesn't make any sense. It was supposed to be the line that
said a null is stored.</p>
<p><b>Proposed resolution:</b></p>
-<p>27.6.1.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>, paragraph 7, change the last list
+<p>27.6.1.2.3 <a href="lib-iostreams.html#lib.istream::extractors"> [lib.istream::extractors]</a>, paragraph 7, change the last list
item from:</p>
<blockquote>
@@ -2134,8 +2351,7 @@ item from:</p>
extracted.
</blockquote>
<hr>
-<a name="69"><h3>69.&nbsp;Must elements of a vector be contiguous?</h3></a><p>
-<b>Section:</b>&nbsp;23.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector"> [lib.vector]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;29 Jul 1998</p>
+<a name="69"><h3>69.&nbsp;Must elements of a vector be contiguous?</h3></a><p><b>Section:</b>&nbsp;23.2.4 <a href="lib-containers.html#lib.vector"> [lib.vector]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;29 Jul 1998</p>
<p>The issue is this: Must the elements of a vector be in contiguous memory?</p>
<p>(Please note that this is entirely separate from the question of
@@ -2143,7 +2359,7 @@ whether a vector iterator is required to be a pointer; the answer to
that question is clearly "no," as it would rule out
debugging implementations)</p>
<p><b>Proposed resolution:</b></p>
-<p>Add the following text to the end of 23.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector"> [lib.vector]</a>,
+<p>Add the following text to the end of 23.2.4 <a href="lib-containers.html#lib.vector"> [lib.vector]</a>,
paragraph 1. </p>
<blockquote>
@@ -2160,16 +2376,15 @@ directly defined in the standard. Discussion included:</p>
<ul>
<li>An operational definition similar to the above proposed resolution is
- already used for valarray (26.3.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.valarray.access"> [lib.valarray.access]</a>).</li>
+ already used for valarray (26.3.2.3 <a href="lib-numerics.html#lib.valarray.access"> [lib.valarray.access]</a>).</li>
<li>There is no need to explicitly consider a user-defined operator&amp;
- because elements must be copyconstructible (23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> para 3)
- and copyconstructible (20.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.copyconstructible"> [lib.copyconstructible]</a>) specifies
+ because elements must be copyconstructible (23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> para 3)
+ and copyconstructible (20.1.3 <a href="lib-utilities.html#lib.copyconstructible"> [lib.copyconstructible]</a>) specifies
requirements for operator&amp;.</li>
<li>There is no issue of one-past-the-end because of language rules.</li>
</ul>
<hr>
-<a name="70"><h3>70.&nbsp;Uncaught_exception() missing throw() specification</h3></a><p>
-<b>Section:</b>&nbsp;18.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.support.exception"> [lib.support.exception]</a>, 18.6.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.uncaught"> [lib.uncaught]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;Unknown</p>
+<a name="70"><h3>70.&nbsp;Uncaught_exception() missing throw() specification</h3></a><p><b>Section:</b>&nbsp;18.6 <a href="lib-support.html#lib.support.exception"> [lib.support.exception]</a>, 18.6.4 <a href="lib-support.html#lib.uncaught"> [lib.uncaught]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;Unknown</p>
<p>In article 3E04@pratique.fr, Valentin Bonnard writes: </p>
<p>uncaught_exception() doesn't have a throw specification.</p>
@@ -2180,31 +2395,29 @@ handle exceptions thrown from uncaught_exception() ?</p>
<p>uncaught_exception() is called in exception handling contexts where
exception safety is very important.</p>
<p><b>Proposed resolution:</b></p>
-<p>In 15.5.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/except.html#except.uncaught"> [except.uncaught]</a>, paragraph 1, 18.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.support.exception"> [lib.support.exception]</a>, and 18.6.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.uncaught"> [lib.uncaught]</a>, add "throw()" to uncaught_exception().</p>
+<p>In 15.5.3 <a href="except.html#except.uncaught"> [except.uncaught]</a>, paragraph 1, 18.6 <a href="lib-support.html#lib.support.exception"> [lib.support.exception]</a>, and 18.6.4 <a href="lib-support.html#lib.uncaught"> [lib.uncaught]</a>, add "throw()" to uncaught_exception().</p>
<hr>
-<a name="71"><h3>71.&nbsp;Do_get_monthname synopsis missing argument</h3></a><p>
-<b>Section:</b>&nbsp;22.2.5.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.time.get"> [lib.locale.time.get]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;13 Aug 1998</p>
+<a name="71"><h3>71.&nbsp;Do_get_monthname synopsis missing argument</h3></a><p><b>Section:</b>&nbsp;22.2.5.1 <a href="lib-locales.html#lib.locale.time.get"> [lib.locale.time.get]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;13 Aug 1998</p>
<p>The locale facet member <tt>time_get&lt;&gt;::do_get_monthname</tt>
-is described in 22.2.5.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.time.get.virtuals"> [lib.locale.time.get.virtuals]</a> with five arguments,
+is described in 22.2.5.1.2 <a href="lib-locales.html#lib.locale.time.get.virtuals"> [lib.locale.time.get.virtuals]</a> with five arguments,
consistent with do_get_weekday and with its specified use by member
get_monthname. However, in the synopsis, it is specified instead with
four arguments. The missing argument is the "end" iterator
value.</p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.2.5.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.time.get"> [lib.locale.time.get]</a>, add an "end" argument to
+<p>In 22.2.5.1 <a href="lib-locales.html#lib.locale.time.get"> [lib.locale.time.get]</a>, add an "end" argument to
the declaration of member do_monthname as follows:</p>
<pre> virtual iter_type do_get_monthname(iter_type s, iter_type end, ios_base&amp;,
ios_base::iostate&amp; err, tm* t) const;</pre>
<hr>
<a name="74"><h3>74.&nbsp;Garbled text for <tt>codecvt::do_max_length</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;8 Sep 1998</p>
+</h3></a><p><b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;8 Sep 1998</p>
<p>The text of <tt>codecvt::do_max_length</tt>'s "Returns"
clause (22.2.1.5.2, paragraph 11) is garbled. It has unbalanced
parentheses and a spurious <b>n</b>.</p>
<p><b>Proposed resolution:</b></p>
-<p>Replace 22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a> paragraph 11 with the
+<p>Replace 22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a> paragraph 11 with the
following:</p>
<blockquote>
@@ -2215,8 +2428,7 @@ following:</p>
mbstate_t&gt;::do_max_length()</tt> returns 1.
</blockquote>
<hr>
-<a name="75"><h3>75.&nbsp;Contradiction in <tt>codecvt::length</tt>'s argument types</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt"> [lib.locale.codecvt]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp; Matt
+<a name="75"><h3>75.&nbsp;Contradiction in <tt>codecvt::length</tt>'s argument types</h3></a><p><b>Section:</b>&nbsp;22.2.1.5 <a href="lib-locales.html#lib.locale.codecvt"> [lib.locale.codecvt]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp; Matt
Austern&nbsp; <b>Date:</b>&nbsp; 18 Sep 1998</p>
<p>The class synopses for classes <tt>codecvt&lt;&gt;</tt> (22.2.1.5)
and <tt>codecvt_byname&lt;&gt;</tt> (22.2.1.6) say that the first
@@ -2230,7 +2442,7 @@ synopsis or the summary must be changed. </p>
then we must also add text saying how <tt>do_length</tt> changes its
<tt>stateT</tt> argument. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.2.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt"> [lib.locale.codecvt]</a>, and also in 22.2.1.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.byname"> [lib.locale.codecvt.byname]</a>,
+<p>In 22.2.1.5 <a href="lib-locales.html#lib.locale.codecvt"> [lib.locale.codecvt]</a>, and also in 22.2.1.6 <a href="lib-locales.html#lib.locale.codecvt.byname"> [lib.locale.codecvt.byname]</a>,
change the <tt>stateT</tt> argument type on both member
<tt>length()</tt> and member <tt>do_length()</tt> from </p>
@@ -2244,7 +2456,7 @@ change the <tt>stateT</tt> argument type on both member
<p><tt>stateT&amp;</tt></p>
</blockquote>
-<p>In 22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>, add to the definition for member
+<p>In 22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>, add to the definition for member
<tt>do_length</tt> a paragraph:</p>
<blockquote>
@@ -2254,8 +2466,7 @@ change the <tt>stateT</tt> argument type on both member
<tt>max</tt> elements.</p>
</blockquote>
<hr>
-<a name="76"><h3>76.&nbsp;Can a <tt>codecvt</tt> facet always convert one internal character at a time?</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt"> [lib.locale.codecvt]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;25 Sep 1998</p>
+<a name="76"><h3>76.&nbsp;Can a <tt>codecvt</tt> facet always convert one internal character at a time?</h3></a><p><b>Section:</b>&nbsp;22.2.1.5 <a href="lib-locales.html#lib.locale.codecvt"> [lib.locale.codecvt]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;25 Sep 1998</p>
<p>This issue concerns the requirements on classes derived from
<tt>codecvt</tt>, including user-defined classes. What are the
restrictions on the conversion from external characters
@@ -2290,8 +2501,8 @@ sequence of <i>M</i> external characters that maps to a sequence of
subsequence that maps to <i>N-1</i> internal characters.) </p>
<p>Some of the wording in the standard, such as the description of
-<tt>codecvt::do_max_length</tt> (22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>,
-paragraph 11) and <tt>basic_filebuf::underflow</tt> (27.8.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a>, paragraph 3) suggests that it must always be
+<tt>codecvt::do_max_length</tt> (22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>,
+paragraph 11) and <tt>basic_filebuf::underflow</tt> (27.8.1.4 <a href="lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a>, paragraph 3) suggests that it must always be
possible to pick off internal characters one at a time from a sequence
of external characters. However, this is never explicitly stated one
way or the other. </p>
@@ -2304,21 +2515,25 @@ be aware of the assumptions that the library makes. This issue affects
positioning operations on <tt>basic_filebuf</tt>, unbuffered input,
and several of <tt>codecvt</tt>'s member functions. </p>
<p><b>Proposed resolution:</b></p>
-<p>Add the following text as a new paragraph, following 22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a> paragraph 2:</p>
+<p>Add the following text as a new paragraph, following 22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a> paragraph 2:</p>
<blockquote>
<p>A <tt>codecvt</tt> facet that is used by <tt>basic_filebuf</tt>
-(27.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.file.streams"> [lib.file.streams]</a>) must have the property that if</p>
-<pre> do_out(state, from, from_end, from_next, to, to_lim, to_next)
+(27.8 <a href="lib-iostreams.html#lib.file.streams"> [lib.file.streams]</a>) must have the property that if</p>
+<pre>
+ do_out(state, from, from_end, from_next, to, to_lim, to_next)
</pre>
would return <tt>ok</tt>, where <tt>from != from_end</tt>, then
-<pre> do_out(state, from, from + 1, from_next, to, to_end, to_next)
+<pre>
+ do_out(state, from, from + 1, from_next, to, to_end, to_next)
</pre>
must also return <tt>ok</tt>, and that if
-<pre> do_in(state, from, from_end, from_next, to, to_lim, to_next)
+<pre>
+ do_in(state, from, from_end, from_next, to, to_lim, to_next)
</pre>
would return <tt>ok</tt>, where <tt>to != to_lim</tt>, then
-<pre> do_in(state, from, from_end, from_next, to, to + 1, to_next)
+<pre>
+ do_in(state, from, from_end, from_next, to, to + 1, to_next)
</pre>
<p>must also return <tt>ok</tt>. [<i>Footnote:</i> Informally, this
means that <tt>basic_filebuf</tt> assumes that the mapping from
@@ -2363,38 +2578,34 @@ return value.]</i></p>
does not expect <tt>basic_filebuf</tt> to be able to use it.
</p>
<hr>
-<a name="78"><h3>78.&nbsp;Typo: event_call_back</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
+<a name="78"><h3>78.&nbsp;Typo: event_call_back</h3></a><p><b>Section:</b>&nbsp;27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
<p>typo: event_call_back should be event_callback &nbsp; </p>
<p><b>Proposed resolution:</b></p>
-<p>In the 27.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a> synopsis change
+<p>In the 27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a> synopsis change
"event_call_back" to "event_callback". </p>
<hr>
-<a name="79"><h3>79.&nbsp;Inconsistent declaration of polar()</h3></a><p>
-<b>Section:</b>&nbsp;26.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a>, 26.2.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex.value.ops"> [lib.complex.value.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
-<p>In 26.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a> polar is declared as follows:</p>
+<a name="79"><h3>79.&nbsp;Inconsistent declaration of polar()</h3></a><p><b>Section:</b>&nbsp;26.2.1 <a href="lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a>, 26.2.7 <a href="lib-numerics.html#lib.complex.value.ops"> [lib.complex.value.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
+<p>In 26.2.1 <a href="lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a> polar is declared as follows:</p>
<pre> template&lt;class T&gt; complex&lt;T&gt; polar(const T&amp;, const T&amp;); </pre>
-<p>In 26.2.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex.value.ops"> [lib.complex.value.ops]</a> it is declared as follows:</p>
+<p>In 26.2.7 <a href="lib-numerics.html#lib.complex.value.ops"> [lib.complex.value.ops]</a> it is declared as follows:</p>
<pre> template&lt;class T&gt; complex&lt;T&gt; polar(const T&amp; rho, const T&amp; theta = 0); </pre>
<p>Thus whether the second parameter is optional is not clear. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 26.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a> change:</p>
+<p>In 26.2.1 <a href="lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a> change:</p>
<pre> template&lt;class T&gt; complex&lt;T&gt; polar(const T&amp;, const T&amp;);</pre>
<p>to:</p>
<pre> template&lt;class T&gt; complex&lt;T&gt; polar(const T&amp; rho, const T&amp; theta = 0); </pre>
<hr>
-<a name="80"><h3>80.&nbsp;Global Operators of complex declared twice</h3></a><p>
-<b>Section:</b>&nbsp;26.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a>, 26.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex"> [lib.complex]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
+<a name="80"><h3>80.&nbsp;Global Operators of complex declared twice</h3></a><p><b>Section:</b>&nbsp;26.2.1 <a href="lib-numerics.html#lib.complex.synopsis"> [lib.complex.synopsis]</a>, 26.2.2 <a href="lib-numerics.html#lib.complex"> [lib.complex]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
<p>Both 26.2.1 and 26.2.2 contain declarations of global operators for
class complex. This redundancy should be removed.</p>
<p><b>Proposed resolution:</b></p>
<p>Reduce redundancy according to the general style of the standard. </p>
<hr>
-<a name="83"><h3>83.&nbsp;String::npos vs. string::max_size()</h3></a><p>
-<b>Section:</b>&nbsp;21.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.basic.string"> [lib.basic.string]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
+<a name="83"><h3>83.&nbsp;String::npos vs. string::max_size()</h3></a><p><b>Section:</b>&nbsp;21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
<p>Many string member functions throw if size is getting or exceeding
npos. However, I wonder why they don't throw if size is getting or
exceeding max_size() instead of npos. May be npos is known at compile
@@ -2402,7 +2613,7 @@ time, while max_size() is known at runtime. However, what happens if
size exceeds max_size() but not npos, then? It seems the standard
lacks some clarifications here.</p>
<p><b>Proposed resolution:</b></p>
-<p>After 21.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.basic.string"> [lib.basic.string]</a> paragraph 4 ("The functions
+<p>After 21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a> paragraph 4 ("The functions
described in this clause...") add a new paragraph:</p>
<blockquote>
@@ -2413,8 +2624,7 @@ described in this clause...") add a new paragraph:</p>
<p><b>Rationale:</b></p>
<p>The LWG believes length_error is the correct exception to throw.</p>
<hr>
-<a name="86"><h3>86.&nbsp;String constructors don't describe exceptions</h3></a><p>
-<b>Section:</b>&nbsp;21.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.cons"> [lib.string.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
+<a name="86"><h3>86.&nbsp;String constructors don't describe exceptions</h3></a><p><b>Section:</b>&nbsp;21.3.1 <a href="lib-strings.html#lib.string.cons"> [lib.string.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
<p>The constructor from a range:</p>
<pre>template&lt;class InputIterator&gt;
@@ -2425,16 +2635,15 @@ described in this clause...") add a new paragraph:</p>
according to the other constructors if the numbers of characters in
the range equals npos (or exceeds max_size(), see above). </p>
<p><b>Proposed resolution:</b></p>
-<p>In 21.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.cons"> [lib.string.cons]</a>, Strike throws paragraphs for
+<p>In 21.3.1 <a href="lib-strings.html#lib.string.cons"> [lib.string.cons]</a>, Strike throws paragraphs for
constructors which say "Throws: length_error if n ==
npos."</p>
<p><b>Rationale:</b></p>
<p>Throws clauses for length_error if n == npos are no longer needed
because they are subsumed by the general wording added by the
-resolution for issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#83">83</a>.</p>
+resolution for issue <a href="lwg-defects.html#83">83</a>.</p>
<hr>
-<a name="90"><h3>90.&nbsp;Incorrect description of operator &gt;&gt; for strings</h3></a><p>
-<b>Section:</b>&nbsp;21.3.7.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
+<a name="90"><h3>90.&nbsp;Incorrect description of operator &gt;&gt; for strings</h3></a><p><b>Section:</b>&nbsp;21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
<p>The effect of operator &gt;&gt; for strings contain the following item:</p>
<p>&nbsp;&nbsp;&nbsp; <tt>isspace(c,getloc())</tt> is true for the next available input
@@ -2442,28 +2651,25 @@ character c.</p>
<p>Here <tt>getloc()</tt> has to be replaced by <tt>is.getloc()</tt>. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 21.3.7.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.io"> [lib.string.io]</a> paragraph 1 Effects clause replace:</p>
+<p>In 21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a> paragraph 1 Effects clause replace:</p>
<blockquote>
- <p>
-<tt>isspace(c,getloc())</tt> is true for the next available input character c.</p>
+ <p><tt>isspace(c,getloc())</tt> is true for the next available input character c.</p>
</blockquote>
<p>with:</p>
<blockquote>
- <p>
-<tt>isspace(c,is.getloc())</tt> is true for the next available input character c.</p>
+ <p><tt>isspace(c,is.getloc())</tt> is true for the next available input character c.</p>
</blockquote>
<hr>
-<a name="91"><h3>91.&nbsp;Description of operator&gt;&gt; and getline() for string&lt;&gt; might cause endless loop</h3></a><p>
-<b>Section:</b>&nbsp;21.3.7.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
+<a name="91"><h3>91.&nbsp;Description of operator&gt;&gt; and getline() for string&lt;&gt; might cause endless loop</h3></a><p><b>Section:</b>&nbsp;21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
<p>Operator &gt;&gt; and getline() for strings read until eof()
in the input stream is true. However, this might never happen, if the
stream can't read anymore without reaching EOF. So shouldn't it be
changed into that it reads until !good() ? </p>
<p><b>Proposed resolution:</b></p>
-<p>In 21.3.7.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.io"> [lib.string.io]</a>, paragraph 1, replace:</p>
+<p>In 21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a>, paragraph 1, replace:</p>
<blockquote>
Effects: Begins by constructing a sentry object k as if k were
constructed by typename basic_istream&lt;charT,traits&gt;::sentry k( is). If
@@ -2475,7 +2681,7 @@ extracted and appended until any of the following occurs:
</blockquote>
<p>with:</p>
<blockquote>
-Effects: Behaves as a formatted input function (27.6.1.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a>). After constructing a sentry object, if the
+Effects: Behaves as a formatted input function (27.6.1.2.1 <a href="lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a>). After constructing a sentry object, if the
sentry converts to true, calls str.erase() and then extracts
characters from is and appends them to str as if by calling
str.append(1,c). If is.width() is greater than zero, the maximum
@@ -2484,7 +2690,7 @@ str.max_size(). Characters are extracted and appended until any of the
following occurs:
</blockquote>
-<p>In 21.3.7.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.io"> [lib.string.io]</a>, paragraph 6, replace</p>
+<p>In 21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a>, paragraph 6, replace</p>
<blockquote>
Effects: Begins by constructing a sentry object k as if by typename
basic_istream&lt;charT,traits&gt;::sentry k( is, true). If bool( k) is true,
@@ -2494,7 +2700,7 @@ following occurs:
</blockquote>
<p>with:</p>
<blockquote>
-Effects: Behaves as an unformatted input function (27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>), except that it does not affect the value returned
+Effects: Behaves as an unformatted input function (27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>), except that it does not affect the value returned
by subsequent calls to basic_istream&lt;&gt;::gcount(). After
constructing a sentry object, if the sentry converts to true, calls
str.erase() and then extracts characters from is and appends them to
@@ -2508,7 +2714,7 @@ should be a formatted input function, not an unformatted input function.
there is no mechanism for <tt>gcount</tt> to be set except by one of
<tt>basic_istream</tt>'s member functions.]</i></p>
-<p><i>[Curaçao: Nico agrees with proposed resolution.]</i></p>
+<p><i>[Cura&ccedil;ao: Nico agrees with proposed resolution.]</i></p>
<p><b>Rationale:</b></p>
<p>The real issue here is whether or not these string input functions
@@ -2518,8 +2724,139 @@ returning eof or by throwing an exception; there are no other
possibilities. The proposed resolution makes it clear that these two
functions do get characters from a streambuf.</p>
<hr>
-<a name="103"><h3>103.&nbsp;set::iterator is required to be modifiable, but this allows modification of keys</h3></a><p>
-<b>Section:</b>&nbsp;23.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;AFNOR&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
+<a name="92"><h3>92.&nbsp;Incomplete Algorithm Requirements</h3></a><p><b>Section:</b>&nbsp;25 <a href="lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;29 Sep 1998</p>
+<p>The standard does not state, how often a function object is copied,
+called, or the order of calls inside an algorithm. This may lead to
+surprising/buggy behavior. Consider the following example: </p>
+
+<pre>class Nth { // function object that returns true for the nth element
+ private:
+ int nth; // element to return true for
+ int count; // element counter
+ public:
+ Nth (int n) : nth(n), count(0) {
+ }
+ bool operator() (int) {
+ return ++count == nth;
+ }
+};
+....
+// remove third element
+ list&lt;int&gt;::iterator pos;
+ pos = remove_if(coll.begin(),coll.end(), // range
+ Nth(3)), // remove criterion
+ coll.erase(pos,coll.end()); </pre>
+
+<p>This call, in fact removes the 3rd <b>AND the 6th</b> element. This
+happens because the usual implementation of the algorithm copies the
+function object internally: </p>
+
+<pre>template &lt;class ForwIter, class Predicate&gt;
+ForwIter std::remove_if(ForwIter beg, ForwIter end, Predicate op)
+{
+ beg = find_if(beg, end, op);
+ if (beg == end) {
+ return beg;
+ }
+ else {
+ ForwIter next = beg;
+ return remove_copy_if(++next, end, beg, op);
+ }
+} </pre>
+
+<p>The algorithm uses find_if() to find the first element that should
+be removed. However, it then uses a copy of the passed function object
+to process the resulting elements (if any). Here, Nth is used again
+and removes also the sixth element. This behavior compromises the
+advantage of function objects being able to have a state. Without any
+cost it could be avoided (just implement it directly instead of
+calling find_if()). </p>
+<p><b>Proposed resolution:</b></p>
+
+<p>Add a new paragraph following 25 <a href="lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a> paragraph 8:</p>
+<blockquote>
+[Note: Unless otherwise specified, algorithms that take function
+objects as arguments are permitted to copy those function objects
+freely. Programmers for whom object identity is important should
+consider using a wrapper class that points to a noncopied
+implementation object, or some equivalent solution.]
+</blockquote>
+
+<p><i>[Dublin: Pete Becker felt that this may not be a defect,
+but rather something that programmers need to be educated about.
+There was discussion of adding wording to the effect that the number
+and order of calls to function objects, including predicates, not
+affect the behavior of the function object.]</i></p>
+
+<p><i>[Pre-Kona: Nico comments: It seems the problem is that we don't
+have a clear statement of "predicate" in the
+standard. People including me seemed to think "a function
+returning a Boolean value and being able to be called by an STL
+algorithm or be used as sorting criterion or ... is a
+predicate". But a predicate has more requirements: It should
+never change its behavior due to a call or being copied. IMHO we have
+to state this in the standard. If you like, see section 8.1.4 of my
+library book for a detailed discussion.]</i></p>
+
+<p><i>[Kona: Nico will provide wording to the effect that "unless
+otherwise specified, the number of copies of and calls to function
+objects by algorithms is unspecified".&nbsp; Consider placing in
+25 <a href="lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a> after paragraph 9.]</i></p>
+
+<p><i>[Santa Cruz: The standard doesn't currently guarantee that
+ functions object won't be copied, and what isn't forbidden is
+ allowed. It is believed (especially since implementations that were
+ written in concert with the standard do make copies of function
+ objects) that this was intentional. Thus, no normative change is
+ needed. What we should put in is a non-normative note suggesting to
+ programmers that if they want to guarantee the lack of copying they
+ should use something like the <tt>ref</tt> wrapper.]</i></p>
+
+<p><i>[Oxford: Matt provided wording.]</i></p>
+
+
+<hr>
+<a name="98"><h3>98.&nbsp;Input iterator requirements are badly written</h3></a><p><b>Section:</b>&nbsp;24.1.1 <a href="lib-iterators.html#lib.input.iterators"> [lib.input.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;AFNOR&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
+<p>Table 72 in 24.1.1 <a href="lib-iterators.html#lib.input.iterators"> [lib.input.iterators]</a> specifies semantics for
+<tt>*r++</tt> of:</p>
+
+<p>&nbsp;&nbsp; <tt>{ T tmp = *r; ++r; return tmp; }</tt></p>
+
+<p>There are two problems with this. First, the return type is
+specified to be "T", as opposed to something like "convertible to T".
+This is too specific: we want to allow *r++ to return an lvalue.</p>
+
+<p>Second, writing the semantics in terms of code misleadingly
+suggests that the effects *r++ should precisely replicate the behavior
+of this code, including side effects. (Does this mean that *r++
+should invoke the copy constructor exactly as many times as the sample
+code above would?) See issue <a href="lwg-defects.html#334">334</a> for a similar
+problem.</p>
+
+<p><b>Proposed resolution:</b></p>
+In Table 72 in 24.1.1 <a href="lib-iterators.html#lib.input.iterators"> [lib.input.iterators]</a>, change the return type
+for <tt>*r++</tt> from <tt>T</tt> to "convertible to T".
+<p><b>Rationale:</b></p>
+<p>This issue has two parts: the return type, and the number of times
+ the copy constructor is invoked.</p>
+
+<p>The LWG believes the the first part is a real issue. It's
+ inappropriate for the return type to be specified so much more
+ precisely for *r++ than it is for *r. In particular, if r is of
+ (say) type <tt>int*</tt>, then *r++ isn't <tt>int</tt>,
+ but <tt>int&amp;</tt>.</p>
+
+<p>The LWG does not believe that the number of times the copy
+ constructor is invoked is a real issue. This can vary in any case,
+ because of language rules on copy constructor elision. That's too
+ much to read into these semantics clauses.</p>
+
+<p>Additionally, as Dave Abrahams pointed out (c++std-lib-13703): since
+ we're told (24.1/3) that forward iterators satisfy all the requirements
+ of input iterators, we can't impose any requirements in the Input
+ Iterator requirements table that forward iterators don't satisfy.</p>
+<hr>
+<a name="103"><h3>103.&nbsp;set::iterator is required to be modifiable, but this allows modification of keys</h3></a><p><b>Section:</b>&nbsp;23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;AFNOR&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
<p>Set::iterator is described as implementation-defined with a
reference to the container requirement; the container requirement says
that const_iterator is an iterator pointing to const T and iterator an
@@ -2534,7 +2871,7 @@ const_iterator. Set, for example, has the following: </p>
<p><tt>typedef implementation defined iterator;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // See _lib.container.requirements_</tt></p>
-<p>23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> actually requires that iterator type pointing
+<p>23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> actually requires that iterator type pointing
to T (table 65). Disallowing user modification of keys by changing the
standard to require an iterator for associative container to be the
same as const_iterator would be overkill since that will unnecessarily
@@ -2545,10 +2882,9 @@ that have nothing to do with ordering), or using const_cast, which
defeats requiring iterator to be const_iterator. The proposed solution
goes in line with trusting user knows what he is doing. </p>
-<p>
-<b>Other Options Evaluated:</b> </p>
+<p><b>Other Options Evaluated:</b> </p>
-<p>Option A.&nbsp;&nbsp; In 23.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>, paragraph 2, after
+<p>Option A.&nbsp;&nbsp; In 23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>, paragraph 2, after
first sentence, and before "In addition,...", add one line:
</p>
@@ -2556,7 +2892,7 @@ first sentence, and before "In addition,...", add one line:
<p>Modification of keys shall not change their strict weak ordering. </p>
</blockquote>
-<p>Option B.&nbsp;Add three new sentences to 23.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>:</p>
+<p>Option B.&nbsp;Add three new sentences to 23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>:</p>
<blockquote>
<p>At the end of paragraph 5: "Keys in an associative container
@@ -2568,7 +2904,7 @@ first sentence, and before "In addition,...", add one line:
type."</p>
</blockquote>
-<p>Option C.&nbsp;To 23.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>, paragraph 3, which
+<p>Option C.&nbsp;To 23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>, paragraph 3, which
currently reads:</p>
<blockquote>
@@ -2591,7 +2927,7 @@ currently reads:</p>
different than it was the previous time k2 was in the container.]</p>
</blockquote>
<p><b>Proposed resolution:</b></p>
-<p>Add the following to 23.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a> at
+<p>Add the following to 23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a> at
the indicated location:</p>
<blockquote>
@@ -2629,8 +2965,7 @@ conversion from <tt>iterator</tt> to <tt>const_iterator</tt>.
<p><i>[Tokyo: The LWG crafted the proposed resolution and rationale.]</i></p>
<hr>
-<a name="106"><h3>106.&nbsp;Numeric library private members are implementation defined</h3></a><p>
-<b>Section:</b>&nbsp;26.3.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.slice.array"> [lib.template.slice.array]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;AFNOR&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
+<a name="106"><h3>106.&nbsp;Numeric library private members are implementation defined</h3></a><p><b>Section:</b>&nbsp;26.3.5 <a href="lib-numerics.html#lib.template.slice.array"> [lib.template.slice.array]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;AFNOR&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
<p>This is the only place in the whole standard where the implementation has to document
something private.</p>
<p><b>Proposed resolution:</b></p>
@@ -2639,24 +2974,23 @@ Remove the comment which says "// remainder implementation defined" from:
</p>
<ul>
- <li>26.3.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.slice.array"> [lib.template.slice.array]</a>
+ <li>26.3.5 <a href="lib-numerics.html#lib.template.slice.array"> [lib.template.slice.array]</a>
</li>
- <li>26.3.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.gslice.array"> [lib.template.gslice.array]</a>
+ <li>26.3.7 <a href="lib-numerics.html#lib.template.gslice.array"> [lib.template.gslice.array]</a>
</li>
- <li>26.3.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.mask.array"> [lib.template.mask.array]</a>
+ <li>26.3.8 <a href="lib-numerics.html#lib.template.mask.array"> [lib.template.mask.array]</a>
</li>
- <li>26.3.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.indirect.array"> [lib.template.indirect.array]</a>
+ <li>26.3.9 <a href="lib-numerics.html#lib.template.indirect.array"> [lib.template.indirect.array]</a>
</li>
</ul>
<hr>
-<a name="108"><h3>108.&nbsp;Lifetime of exception::what() return unspecified</h3></a><p>
-<b>Section:</b>&nbsp;18.6.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.exception"> [lib.exception]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;AFNOR&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
+<a name="108"><h3>108.&nbsp;Lifetime of exception::what() return unspecified</h3></a><p><b>Section:</b>&nbsp;18.6.1 <a href="lib-support.html#lib.exception"> [lib.exception]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;AFNOR&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
<p>In 18.6.1, paragraphs 8-9, the lifetime of the return value of
exception::what() is left unspecified. This issue has implications
with exception safety of exception handling: some exceptions should
not throw bad_alloc.</p>
<p><b>Proposed resolution:</b></p>
-<p>Add to 18.6.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.exception"> [lib.exception]</a> paragraph 9 (exception::what notes
+<p>Add to 18.6.1 <a href="lib-support.html#lib.exception"> [lib.exception]</a> paragraph 9 (exception::what notes
clause) the sentence:</p>
<blockquote>
@@ -2669,8 +3003,7 @@ to set internal state that should affect the contents of the string
returned by <tt>what()</tt>.
</p>
<hr>
-<a name="109"><h3>109.&nbsp;Missing binders for non-const sequence elements</h3></a><p>
-<b>Section:</b>&nbsp;20.3.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.binders"> [lib.binders]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Bjarne Stroustrup&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
+<a name="109"><h3>109.&nbsp;Missing binders for non-const sequence elements</h3></a><p><b>Section:</b>&nbsp;20.3.6 <a href="lib-utilities.html#lib.binders"> [lib.binders]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Bjarne Stroustrup&nbsp; <b>Date:</b>&nbsp;7 Oct 1998</p>
<p>There are no versions of binders that apply to non-const elements
of a sequence. This makes examples like for_each() using bind2nd() on
@@ -2742,11 +3075,10 @@ public:
</blockquote>
<p><b>Proposed resolution:</b></p>
-<p>
-<b>Howard believes there is a flaw</b> in this resolution.
+<p><b>Howard believes there is a flaw</b> in this resolution.
See c++std-lib-9127. We may need to reopen this issue.</p>
-<p>In 20.3.6.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.binder.1st"> [lib.binder.1st]</a> in the declaration of binder1st after:</p>
+<p>In 20.3.6.1 <a href="lib-utilities.html#lib.binder.1st"> [lib.binder.1st]</a> in the declaration of binder1st after:</p>
<blockquote>
<p><tt>typename Operation::result_type<br>
&nbsp;operator()(const typename Operation::second_argument_type&amp; x) const;</tt></p>
@@ -2756,7 +3088,7 @@ See c++std-lib-9127. We may need to reopen this issue.</p>
<p><tt>typename Operation::result_type<br>
&nbsp;operator()(typename Operation::second_argument_type&amp; x) const;</tt></p>
</blockquote>
-<p>In 20.3.6.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.binder.2nd"> [lib.binder.2nd]</a> in the declaration of binder2nd after:</p>
+<p>In 20.3.6.3 <a href="lib-utilities.html#lib.binder.2nd"> [lib.binder.2nd]</a> in the declaration of binder2nd after:</p>
<blockquote>
<p><tt>typename Operation::result_type<br>
&nbsp;operator()(const typename Operation::first_argument_type&amp; x) const;</tt></p>
@@ -2777,13 +3109,12 @@ Strap poll: NAD - 0. Accept proposed resolution - 10.
Leave open - 1.]</i></p>
<hr>
-<a name="110"><h3>110.&nbsp;istreambuf_iterator::equal not const</h3></a><p>
-<b>Section:</b>&nbsp;24.5.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.istreambuf.iterator"> [lib.istreambuf.iterator]</a>, 24.5.3.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.istreambuf.iterator::equal"> [lib.istreambuf.iterator::equal]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;15 Oct 1998</p>
+<a name="110"><h3>110.&nbsp;istreambuf_iterator::equal not const</h3></a><p><b>Section:</b>&nbsp;24.5.3 <a href="lib-iterators.html#lib.istreambuf.iterator"> [lib.istreambuf.iterator]</a>, 24.5.3.5 <a href="lib-iterators.html#lib.istreambuf.iterator::equal"> [lib.istreambuf.iterator::equal]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;15 Oct 1998</p>
<p>Member istreambuf_iterator&lt;&gt;::equal is not declared
-"const", yet 24.5.3.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.istreambuf.iterator::op=="> [lib.istreambuf.iterator::op==]</a> says that operator==,
+"const", yet 24.5.3.6 <a href="lib-iterators.html#lib.istreambuf.iterator::op=="> [lib.istreambuf.iterator::op==]</a> says that operator==,
which is const, calls it. This is contradictory. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 24.5.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.istreambuf.iterator"> [lib.istreambuf.iterator]</a> and also in 24.5.3.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.istreambuf.iterator::equal"> [lib.istreambuf.iterator::equal]</a>,
+<p>In 24.5.3 <a href="lib-iterators.html#lib.istreambuf.iterator"> [lib.istreambuf.iterator]</a> and also in 24.5.3.5 <a href="lib-iterators.html#lib.istreambuf.iterator::equal"> [lib.istreambuf.iterator::equal]</a>,
replace:</p>
<blockquote>
@@ -2796,14 +3127,13 @@ replace:</p>
<pre>bool equal(const istreambuf_iterator&amp; b) const;</pre>
</blockquote>
<hr>
-<a name="112"><h3>112.&nbsp;Minor typo in <tt>ostreambuf_iterator</tt> constructor</h3></a><p>
-<b>Section:</b>&nbsp;24.5.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.ostreambuf.iter.cons"> [lib.ostreambuf.iter.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;20 Oct 1998</p>
+<a name="112"><h3>112.&nbsp;Minor typo in <tt>ostreambuf_iterator</tt> constructor</h3></a><p><b>Section:</b>&nbsp;24.5.4.1 <a href="lib-iterators.html#lib.ostreambuf.iter.cons"> [lib.ostreambuf.iter.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;20 Oct 1998</p>
<p>The <b>requires</b> clause for <tt>ostreambuf_iterator</tt>'s
constructor from an <tt>ostream_type</tt> (24.5.4.1, paragraph 1)
reads "<i>s</i> is not null". However, <i>s</i> is a
reference, and references can't be null. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 24.5.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.ostreambuf.iter.cons"> [lib.ostreambuf.iter.cons]</a>:</p>
+<p>In 24.5.4.1 <a href="lib-iterators.html#lib.ostreambuf.iter.cons"> [lib.ostreambuf.iter.cons]</a>:</p>
<p>Move the current paragraph 1, which reads "Requires: s is not
null.", from the first constructor to the second constructor.</p>
@@ -2812,12 +3142,10 @@ null.", from the first constructor to the second constructor.</p>
reading:</p>
<blockquote>
- <p>
-<b>Requires</b>: <tt>s.rdbuf()</tt> is not null.</p>
+ <p><b>Requires</b>: <tt>s.rdbuf()</tt> is not null.</p>
</blockquote>
<hr>
-<a name="114"><h3>114.&nbsp;Placement forms example in error twice</h3></a><p>
-<b>Section:</b>&nbsp;18.4.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.new.delete.placement"> [lib.new.delete.placement]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;28 Oct 1998</p>
+<a name="114"><h3>114.&nbsp;Placement forms example in error twice</h3></a><p><b>Section:</b>&nbsp;18.4.1.3 <a href="lib-support.html#lib.new.delete.placement"> [lib.new.delete.placement]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;28 Oct 1998</p>
<p>Section 18.4.1.3 contains the following example: </p>
<pre>[Example: This can be useful for constructing an object at a known address:
@@ -2835,15 +3163,14 @@ believes the () are correct.]</p>
likely to fail.</p>
<p><b>Proposed resolution:</b></p>
<p>Replace the <u> first line of code</u> in the example in
-18.4.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.new.delete.placement"> [lib.new.delete.placement]</a> with:
+18.4.1.3 <a href="lib-support.html#lib.new.delete.placement"> [lib.new.delete.placement]</a> with:
</p>
<blockquote>
<pre>void* place = operator new(sizeof(Something));</pre>
</blockquote>
<hr>
-<a name="115"><h3>115.&nbsp;Typo in strstream constructors</h3></a><p>
-<b>Section:</b>&nbsp;D.7.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.strstream.cons"> [depr.strstream.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;2 Nov 1998</p>
+<a name="115"><h3>115.&nbsp;Typo in strstream constructors</h3></a><p><b>Section:</b>&nbsp;D.7.4.1 <a href="future.html#depr.strstream.cons"> [depr.strstream.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;2 Nov 1998</p>
<p>D.7.4.1 strstream constructors paragraph 2 says: </p>
<blockquote>
@@ -2860,12 +3187,11 @@ likely to fail.</p>
should be "If mode&amp;app==app", or "mode&amp;app!=0", meaning that
the append bit is set.</p>
<p><b>Proposed resolution:</b></p>
-<p>In D.7.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.ostrstream.cons"> [depr.ostrstream.cons]</a> paragraph 2 and D.7.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.strstream.cons"> [depr.strstream.cons]</a>
+<p>In D.7.3.1 <a href="future.html#depr.ostrstream.cons"> [depr.ostrstream.cons]</a> paragraph 2 and D.7.4.1 <a href="future.html#depr.strstream.cons"> [depr.strstream.cons]</a>
paragraph 2, change the first condition to <tt>(mode&amp;app)==0</tt>
and the second condition to <tt>(mode&amp;app)!=0</tt>.</p>
<hr>
-<a name="117"><h3>117.&nbsp;<tt>basic_ostream</tt> uses nonexistent <tt>num_put</tt> member functions</h3></a><p>
-<b>Section:</b>&nbsp;27.6.2.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.inserters.arithmetic"> [lib.ostream.inserters.arithmetic]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;20 Nov 1998</p>
+<a name="117"><h3>117.&nbsp;<tt>basic_ostream</tt> uses nonexistent <tt>num_put</tt> member functions</h3></a><p><b>Section:</b>&nbsp;27.6.2.5.2 <a href="lib-iostreams.html#lib.ostream.inserters.arithmetic"> [lib.ostream.inserters.arithmetic]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;20 Nov 1998</p>
<p>The <b>effects</b> clause for numeric inserters says that
insertion of a value <tt>x</tt>, whose type is either <tt>bool</tt>,
<tt>short</tt>, <tt>unsigned short</tt>, <tt>int</tt>, <tt>unsigned
@@ -2894,7 +3220,7 @@ functions that are actually there. I prefer the latter. </p>
<blockquote>
<p>
-The classes num_get&lt;&gt; and num_put&lt;&gt; handle locale­dependent numeric
+The classes num_get&lt;&gt; and num_put&lt;&gt; handle locale&shy;dependent numeric
formatting and parsing. These inserter functions use the imbued
locale value to perform numeric formatting. When val is of type bool,
long, unsigned long, double, long double, or const void*, the
@@ -2902,7 +3228,8 @@ formatting conversion occurs as if it performed the following code
fragment:
</p>
-<pre>bool failed = use_facet&lt;
+<pre>
+bool failed = use_facet&lt;
num_put&lt;charT,ostreambuf_iterator&lt;charT,traits&gt; &gt;
&gt;(getloc()).put(*this, *this, fill(), val). failed();
</pre>
@@ -2912,7 +3239,8 @@ When val is of type short the formatting conversion occurs as if it
performed the following code fragment:
</p>
-<pre>ios_base::fmtflags baseflags = ios_base::flags() &amp; ios_base::basefield;
+<pre>
+ios_base::fmtflags baseflags = ios_base::flags() &amp; ios_base::basefield;
bool failed = use_facet&lt;
num_put&lt;charT,ostreambuf_iterator&lt;charT,traits&gt; &gt;
&gt;(getloc()).put(*this, *this, fill(),
@@ -2926,7 +3254,8 @@ When val is of type int the formatting conversion occurs as if it performed
the following code fragment:
</p>
-<pre>ios_base::fmtflags baseflags = ios_base::flags() &amp; ios_base::basefield;
+<pre>
+ios_base::fmtflags baseflags = ios_base::flags() &amp; ios_base::basefield;
bool failed = use_facet&lt;
num_put&lt;charT,ostreambuf_iterator&lt;charT,traits&gt; &gt;
&gt;(getloc()).put(*this, *this, fill(),
@@ -2940,7 +3269,8 @@ When val is of type unsigned short or unsigned int the formatting conversion
occurs as if it performed the following code fragment:
</p>
-<pre>bool failed = use_facet&lt;
+<pre>
+bool failed = use_facet&lt;
num_put&lt;charT,ostreambuf_iterator&lt;charT,traits&gt; &gt;
&gt;(getloc()).put(*this, *this, fill(), static_cast&lt;unsigned long&gt;(val)).
failed();
@@ -2951,7 +3281,8 @@ When val is of type float the formatting conversion occurs as if it
performed the following code fragment:
</p>
-<pre>bool failed = use_facet&lt;
+<pre>
+bool failed = use_facet&lt;
num_put&lt;charT,ostreambuf_iterator&lt;charT,traits&gt; &gt;
&gt;(getloc()).put(*this, *this, fill(), static_cast&lt;double&gt;(val)).
failed();
@@ -2971,8 +3302,7 @@ complicated, but gives more expected results for hex and octal output
of signed short and signed int. (On a system with 16-bit short, for
example, printing short(-1) in hex format should yield 0xffff.)</p>
<hr>
-<a name="118"><h3>118.&nbsp;<tt>basic_istream</tt> uses nonexistent <tt>num_get</tt> member functions</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.formatted.arithmetic"> [lib.istream.formatted.arithmetic]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;20 Nov 1998</p>
+<a name="118"><h3>118.&nbsp;<tt>basic_istream</tt> uses nonexistent <tt>num_get</tt> member functions</h3></a><p><b>Section:</b>&nbsp;27.6.1.2.2 <a href="lib-iostreams.html#lib.istream.formatted.arithmetic"> [lib.istream.formatted.arithmetic]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;20 Nov 1998</p>
<p>Formatted input is defined for the types <tt>short</tt>, <tt>unsigned short</tt>, <tt>int</tt>,
<tt>unsigned int</tt>, <tt>long</tt>, <tt>unsigned long</tt>, <tt>float</tt>, <tt>double</tt>,
<tt>long double</tt>, <tt>bool</tt>, and <tt>void*</tt>. According to section 27.6.1.2.2,
@@ -2983,7 +3313,7 @@ iostate err = 0;
use_facet&lt; numget &gt;(loc).get(*this, 0, *this, err, val);
setstate(err);</pre>
-<p>According to section 22.2.2.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.members"> [lib.facet.num.get.members]</a>, however,
+<p>According to section 22.2.2.1.1 <a href="lib-locales.html#lib.facet.num.get.members"> [lib.facet.num.get.members]</a>, however,
<tt>num_get&lt;&gt;::get()</tt> is only overloaded for the types
<tt>bool</tt>, <tt>long</tt>, <tt>unsigned short</tt>, <tt>unsigned
int</tt>, <tt>unsigned long</tt>, <tt>unsigned long</tt>,
@@ -2992,7 +3322,7 @@ int</tt>, <tt>unsigned long</tt>, <tt>unsigned long</tt>,
that 27.6.1.2.2 is using a nonexistent function for types
<tt>short</tt> and <tt>int</tt>. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 27.6.1.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.formatted.arithmetic"> [lib.istream.formatted.arithmetic]</a> Arithmetic Extractors, remove the
+<p>In 27.6.1.2.2 <a href="lib-iostreams.html#lib.istream.formatted.arithmetic"> [lib.istream.formatted.arithmetic]</a> Arithmetic Extractors, remove the
two lines (1st and 3rd) which read:</p>
<blockquote>
<pre>operator&gt;&gt;(short&amp; val);
@@ -3029,9 +3359,8 @@ operator&gt;&gt;(int&amp; val);</pre>
<p><i>[Post-Tokyo: PJP provided the above wording.]</i></p>
<hr>
-<a name="119"><h3>119.&nbsp;Should virtual functions be allowed to strengthen the exception specification?</h3></a><p>
-<b>Section:</b>&nbsp;17.4.4.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.res.on.exception.handling"> [lib.res.on.exception.handling]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
-<p>Section 17.4.4.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.res.on.exception.handling"> [lib.res.on.exception.handling]</a> states: </p>
+<a name="119"><h3>119.&nbsp;Should virtual functions be allowed to strengthen the exception specification?</h3></a><p><b>Section:</b>&nbsp;17.4.4.8 <a href="lib-intro.html#lib.res.on.exception.handling"> [lib.res.on.exception.handling]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
+<p>Section 17.4.4.8 <a href="lib-intro.html#lib.res.on.exception.handling"> [lib.res.on.exception.handling]</a> states: </p>
<p>"An implementation may strengthen the exception-specification
for a function by removing listed exceptions." </p>
@@ -3053,7 +3382,7 @@ public:
// overridden virtual function ios_base::failure::~failure()
};</pre>
<p><b>Proposed resolution:</b></p>
-<p>Change Section 17.4.4.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.res.on.exception.handling"> [lib.res.on.exception.handling]</a> from:</p>
+<p>Change Section 17.4.4.8 <a href="lib-intro.html#lib.res.on.exception.handling"> [lib.res.on.exception.handling]</a> from:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; "may strengthen the
exception-specification for a function"</p>
@@ -3063,8 +3392,107 @@ exception-specification for a function"</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; "may strengthen the
exception-specification for a non-virtual function". </p>
<hr>
-<a name="122"><h3>122.&nbsp;streambuf/wstreambuf description should not say they are specializations</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf"> [lib.streambuf]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
+<a name="120"><h3>120.&nbsp;Can an implementor add specializations?</h3></a><p><b>Section:</b>&nbsp;17.4.3.1 <a href="lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
+
+<p>The original issue asked whether a library implementor could
+specialize standard library templates for built-in types. (This was
+an issue because users are permitted to explicitly instantiate
+standard library templates.)</p>
+
+<p>Specializations are no longer a problem, because of the resolution
+to core issue 259. Under the proposed resolution, it will be legal
+for a translation unit to contain both a specialization and an
+explicit instantiation of the same template, provided that the
+specialization comes first. In such a case, the explicit
+instantiation will be ignored. Further discussion of library issue
+120 assumes that the core 259 resolution will be adopted.</p>
+
+<p>However, as noted in lib-7047, one piece of this issue still
+remains: what happens if a standard library implementor explicitly
+instantiates a standard library templates? It's illegal for a program
+to contain two different explicit instantiations of the same template
+for the same type in two different translation units (ODR violation),
+and the core working group doesn't believe it is practical to relax
+that restriction.</p>
+
+<p>The issue, then, is: are users allowed to explicitly instantiate
+standard library templates for non-user defined types? The status quo
+answer is 'yes'. Changing it to 'no' would give library implementors
+more freedom.</p>
+
+<p>This is an issue because, for performance reasons, library
+implementors often need to explicitly instantiate standard library
+templates. (for example, std::basic_string&lt;char&gt;) Does giving
+users freedom to explicitly instantiate standard library templates for
+non-user defined types make it impossible or painfully difficult for
+library implementors to do this?</p>
+
+<p>John Spicer suggests, in lib-8957, that library implementors have a
+mechanism they can use for explicit instantiations that doesn't
+prevent users from performing their own explicit instantiations: put
+each explicit instantiation in its own object file. (Different
+solutions might be necessary for Unix DSOs or MS-Windows DLLs.) On
+some platforms, library implementors might not need to do anything
+special: the "undefined behavior" that results from having two
+different explicit instantiations might be harmless.</p>
+
+<p><b>Proposed resolution:</b></p>
+ <p>Append to 17.4.3.1 <a href="lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a> paragraph 1: </p>
+ <blockquote>
+ A program may explicitly instantiate any templates in the standard
+ library only if the declaration depends on the name of a user-defined
+ type of external linkage and the instantiation meets the standard library
+ requirements for the original template.
+ </blockquote>
+
+<p><i>[Kona: changed the wording from "a user-defined name" to "the name of
+ a user-defined type"]</i></p>
+
+<p><b>Rationale:</b></p>
+<p>The LWG considered another possible resolution:</p>
+<blockquote>
+ <p>In light of the resolution to core issue 259, no normative changes
+ in the library clauses are necessary. Add the following non-normative
+ note to the end of 17.4.3.1 <a href="lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a> paragraph 1:</p>
+ <blockquote>
+ [<i>Note:</i> A program may explicitly instantiate standard library
+ templates, even when an explicit instantiation does not depend on
+ a user-defined name. <i>--end note</i>]
+ </blockquote>
+</blockquote>
+
+<p>The LWG rejected this because it was believed that it would make
+ it unnecessarily difficult for library implementors to write
+ high-quality implementations. A program may not include an
+ explicit instantiation of the same template, for the same template
+ arguments, in two different translation units. If users are
+ allowed to provide explicit instantiations of Standard Library
+ templates for built-in types, then library implementors aren't,
+ at least not without nonportable tricks.</p>
+
+<p>The most serious problem is a class template that has writeable
+ static member variables. Unfortunately, such class templates are
+ important and, in existing Standard Library implementations, are
+ often explicitly specialized by library implementors: locale facets,
+ which have a writeable static member variable <tt>id</tt>. If a
+ user's explicit instantiation collided with the implementations
+ explicit instantiation, iostream initialization could cause locales
+ to be constructed in an inconsistent state.</p>
+
+<p>One proposed implementation technique was for Standard Library
+ implementors to provide explicit instantiations in separate object
+ files, so that they would not be picked up by the linker when the
+ user also provides an explicit instantiation. However, this
+ technique only applies for Standard Library implementations that
+ are packaged as static archives. Most Standard Library
+ implementations nowadays are packaged as dynamic libraries, so this
+ technique would not apply.</p>
+
+<p>The Committee is now considering standardization of dynamic
+ linking. If there are such changes in the future, it may be
+ appropriate to revisit this issue later.</p>
+<hr>
+<a name="122"><h3>122.&nbsp;streambuf/wstreambuf description should not say they are specializations</h3></a><p><b>Section:</b>&nbsp;27.5.2 <a href="lib-iostreams.html#lib.streambuf"> [lib.streambuf]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
<p>Section 27.5.2 describes the streambuf classes this way: </p>
<blockquote>
@@ -3081,117 +3509,131 @@ specialized for the type wchar_t. </p>
<p>It doesn't seem this was intended, since Section 27.5 has them declared as typedefs. </p>
<p><b>Proposed resolution:</b></p>
-<p>Remove 27.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf"> [lib.streambuf]</a> paragraphs 2 and 3 (the above two
+<p>Remove 27.5.2 <a href="lib-iostreams.html#lib.streambuf"> [lib.streambuf]</a> paragraphs 2 and 3 (the above two
sentences). </p>
<p><b>Rationale:</b></p>
<p>The <tt>streambuf</tt> synopsis already has a declaration for the
typedefs and that is sufficient. </p>
<hr>
-<a name="123"><h3>123.&nbsp;Should valarray helper arrays fill functions be const?</h3></a><p>
-<b>Section:</b>&nbsp;26.3.5.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.slice.arr.fill"> [lib.slice.arr.fill]</a>, 26.3.7.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.gslice.array.fill"> [lib.gslice.array.fill]</a>, 26.3.8.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.mask.array.fill"> [lib.mask.array.fill]</a>, 26.3.9.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.indirect.array.fill"> [lib.indirect.array.fill]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998 </p>
+<a name="123"><h3>123.&nbsp;Should valarray helper arrays fill functions be const?</h3></a><p><b>Section:</b>&nbsp;26.3.5.4 <a href="lib-numerics.html#lib.slice.arr.fill"> [lib.slice.arr.fill]</a>, 26.3.7.4 <a href="lib-numerics.html#lib.gslice.array.fill"> [lib.gslice.array.fill]</a>, 26.3.8.4 <a href="lib-numerics.html#lib.mask.array.fill"> [lib.mask.array.fill]</a>, 26.3.9.4 <a href="lib-numerics.html#lib.indirect.array.fill"> [lib.indirect.array.fill]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998 </p>
<p>One of the operator= in the valarray helper arrays is const and one
is not. For example, look at slice_array. This operator= in Section
-26.3.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.slice.arr.assign"> [lib.slice.arr.assign]</a> is const: </p>
+26.3.5.2 <a href="lib-numerics.html#lib.slice.arr.assign"> [lib.slice.arr.assign]</a> is const: </p>
<p>&nbsp;&nbsp;&nbsp; <tt>void operator=(const valarray&lt;T&gt;&amp;) const;</tt> </p>
-<p>but this one in Section 26.3.5.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.slice.arr.fill"> [lib.slice.arr.fill]</a> is not: </p>
+<p>but this one in Section 26.3.5.4 <a href="lib-numerics.html#lib.slice.arr.fill"> [lib.slice.arr.fill]</a> is not: </p>
-<p>&nbsp;&nbsp;&nbsp; <tt>void operator=(const T&amp;); </tt>
-</p>
+<p>&nbsp;&nbsp;&nbsp; <tt>void operator=(const T&amp;); </tt></p>
<p>The description of the semantics for these two functions is similar. </p>
<p><b>Proposed resolution:</b></p>
-<p>26.3.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.slice.array"> [lib.template.slice.array]</a> Template class slice_array</p>
+<p>26.3.5 <a href="lib-numerics.html#lib.template.slice.array"> [lib.template.slice.array]</a> Template class slice_array</p>
<blockquote>
<p>In the class template definition for slice_array, replace the member
function declaration</p>
- <pre> void operator=(const T&amp;);
+ <pre>
+ void operator=(const T&amp;);
</pre>
<p>with</p>
- <pre> void operator=(const T&amp;) const;
+ <pre>
+ void operator=(const T&amp;) const;
</pre>
</blockquote>
-<p>26.3.5.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.slice.arr.fill"> [lib.slice.arr.fill]</a> slice_array fill function</p>
+<p>26.3.5.4 <a href="lib-numerics.html#lib.slice.arr.fill"> [lib.slice.arr.fill]</a> slice_array fill function</p>
<blockquote>
<p>Change the function declaration</p>
- <pre> void operator=(const T&amp;);
+ <pre>
+ void operator=(const T&amp;);
</pre>
<p>to</p>
- <pre> void operator=(const T&amp;) const;
+ <pre>
+ void operator=(const T&amp;) const;
</pre>
</blockquote>
-<p>26.3.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.gslice.array"> [lib.template.gslice.array]</a> Template class gslice_array</p>
+<p>26.3.7 <a href="lib-numerics.html#lib.template.gslice.array"> [lib.template.gslice.array]</a> Template class gslice_array</p>
<blockquote>
<p>In the class template definition for gslice_array, replace the member
function declaration</p>
- <pre> void operator=(const T&amp;);
+ <pre>
+ void operator=(const T&amp;);
</pre>
<p>with</p>
- <pre> void operator=(const T&amp;) const;
+ <pre>
+ void operator=(const T&amp;) const;
</pre>
</blockquote>
-<p>26.3.7.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.gslice.array.fill"> [lib.gslice.array.fill]</a> gslice_array fill function</p>
+<p>26.3.7.4 <a href="lib-numerics.html#lib.gslice.array.fill"> [lib.gslice.array.fill]</a> gslice_array fill function</p>
<blockquote>
<p>Change the function declaration</p>
- <pre> void operator=(const T&amp;);
+ <pre>
+ void operator=(const T&amp;);
</pre>
<p>to</p>
- <pre> void operator=(const T&amp;) const;
+ <pre>
+ void operator=(const T&amp;) const;
</pre>
</blockquote>
-<p>26.3.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.mask.array"> [lib.template.mask.array]</a> Template class mask_array</p>
+<p>26.3.8 <a href="lib-numerics.html#lib.template.mask.array"> [lib.template.mask.array]</a> Template class mask_array</p>
<blockquote>
<p>In the class template definition for mask_array, replace the member
function declaration</p>
- <pre> void operator=(const T&amp;);
+ <pre>
+ void operator=(const T&amp;);
</pre>
<p>with</p>
- <pre> void operator=(const T&amp;) const;
+ <pre>
+ void operator=(const T&amp;) const;
</pre>
</blockquote>
-<p>26.3.8.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.mask.array.fill"> [lib.mask.array.fill]</a> mask_array fill function</p>
+<p>26.3.8.4 <a href="lib-numerics.html#lib.mask.array.fill"> [lib.mask.array.fill]</a> mask_array fill function</p>
<blockquote>
<p>Change the function declaration</p>
- <pre> void operator=(const T&amp;);
+ <pre>
+ void operator=(const T&amp;);
</pre>
<p>to</p>
- <pre> void operator=(const T&amp;) const;
+ <pre>
+ void operator=(const T&amp;) const;
</pre>
</blockquote>
-<p>26.3.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.indirect.array"> [lib.template.indirect.array]</a> Template class indirect_array</p>
+<p>26.3.9 <a href="lib-numerics.html#lib.template.indirect.array"> [lib.template.indirect.array]</a> Template class indirect_array</p>
<blockquote>
<p>In the class template definition for indirect_array, replace the member
function declaration</p>
- <pre> void operator=(const T&amp;);
+ <pre>
+ void operator=(const T&amp;);
</pre>
<p>with</p>
- <pre> void operator=(const T&amp;) const;
+ <pre>
+ void operator=(const T&amp;) const;
</pre>
</blockquote>
-<p>26.3.9.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.indirect.array.fill"> [lib.indirect.array.fill]</a> indirect_array fill function</p>
+<p>26.3.9.4 <a href="lib-numerics.html#lib.indirect.array.fill"> [lib.indirect.array.fill]</a> indirect_array fill function</p>
<blockquote>
<p>Change the function declaration</p>
- <pre> void operator=(const T&amp;);
+ <pre>
+ void operator=(const T&amp;);
</pre>
<p>to</p>
- <pre> void operator=(const T&amp;) const;
+ <pre>
+ void operator=(const T&amp;) const;
</pre>
</blockquote>
@@ -3200,35 +3642,32 @@ is not. For example, look at slice_array. This operator= in Section
<p><b>Rationale:</b></p>
<p>There's no good reason for one version of operator= being const and
-another one not. Because of issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#253">253</a>, this now
+another one not. Because of issue <a href="lwg-defects.html#253">253</a>, this now
matters: these functions are now callable in more circumstances. In
many existing implementations, both versions are already const.</p>
<hr>
-<a name="124"><h3>124.&nbsp;ctype_byname&lt;charT&gt;::do_scan_is &amp; do_scan_not return type should be const charT*</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.ctype.byname"> [lib.locale.ctype.byname]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
-<p>In Section 22.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.ctype.byname"> [lib.locale.ctype.byname]</a>
+<a name="124"><h3>124.&nbsp;ctype_byname&lt;charT&gt;::do_scan_is &amp; do_scan_not return type should be const charT*</h3></a><p><b>Section:</b>&nbsp;22.2.1.2 <a href="lib-locales.html#lib.locale.ctype.byname"> [lib.locale.ctype.byname]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
+<p>In Section 22.2.1.2 <a href="lib-locales.html#lib.locale.ctype.byname"> [lib.locale.ctype.byname]</a>
ctype_byname&lt;charT&gt;::do_scan_is() and do_scan_not() are declared
to return a const char* not a const charT*. </p>
<p><b>Proposed resolution:</b></p>
-<p>Change Section 22.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.ctype.byname"> [lib.locale.ctype.byname]</a> <tt>do_scan_is()</tt> and
+<p>Change Section 22.2.1.2 <a href="lib-locales.html#lib.locale.ctype.byname"> [lib.locale.ctype.byname]</a> <tt>do_scan_is()</tt> and
<tt>do_scan_not()</tt> to return a <tt> const
charT*</tt>. </p>
<hr>
-<a name="125"><h3>125.&nbsp;valarray&lt;T&gt;::operator!() return type is inconsistent</h3></a><p>
-<b>Section:</b>&nbsp;26.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.valarray"> [lib.template.valarray]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
-<p>In Section 26.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.valarray"> [lib.template.valarray]</a> valarray&lt;T&gt;::operator!() is
-declared to return a valarray&lt;T&gt;, but in Section 26.3.2.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.valarray.unary"> [lib.valarray.unary]</a> it is declared to return a valarray&lt;bool&gt;. The
+<a name="125"><h3>125.&nbsp;valarray&lt;T&gt;::operator!() return type is inconsistent</h3></a><p><b>Section:</b>&nbsp;26.3.2 <a href="lib-numerics.html#lib.template.valarray"> [lib.template.valarray]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
+<p>In Section 26.3.2 <a href="lib-numerics.html#lib.template.valarray"> [lib.template.valarray]</a> valarray&lt;T&gt;::operator!() is
+declared to return a valarray&lt;T&gt;, but in Section 26.3.2.5 <a href="lib-numerics.html#lib.valarray.unary"> [lib.valarray.unary]</a> it is declared to return a valarray&lt;bool&gt;. The
latter appears to be correct. </p>
<p><b>Proposed resolution:</b></p>
-<p>Change in Section 26.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.template.valarray"> [lib.template.valarray]</a> the declaration of
+<p>Change in Section 26.3.2 <a href="lib-numerics.html#lib.template.valarray"> [lib.template.valarray]</a> the declaration of
<tt>operator!()</tt> so that the return type is
<tt>valarray&lt;bool&gt;</tt>. </p>
<hr>
-<a name="126"><h3>126.&nbsp;typos in Effects clause of ctype::do_narrow()</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
+<a name="126"><h3>126.&nbsp;typos in Effects clause of ctype::do_narrow()</h3></a><p><b>Section:</b>&nbsp;22.2.1.1.2 <a href="lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;15 Dec 1998</p>
<p>Typos in 22.2.1.1.2 need to be fixed.</p>
<p><b>Proposed resolution:</b></p>
-<p>In Section 22.2.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a> change: </p>
+<p>In Section 22.2.1.1.2 <a href="lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a> change: </p>
<pre> do_widen(do_narrow(c),0) == c</pre>
@@ -3244,16 +3683,14 @@ latter appears to be correct. </p>
<pre> (is(M,c) || !ctc.is(M, do_narrow(c,dfault)) )</pre>
<hr>
-<a name="127"><h3>127.&nbsp;auto_ptr&lt;&gt; conversion issues</h3></a><p>
-<b>Section:</b>&nbsp;20.4.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.auto.ptr"> [lib.auto.ptr]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Greg Colvin&nbsp; <b>Date:</b>&nbsp;17 Feb 1999</p>
+<a name="127"><h3>127.&nbsp;auto_ptr&lt;&gt; conversion issues</h3></a><p><b>Section:</b>&nbsp;20.4.5 <a href="lib-utilities.html#lib.auto.ptr"> [lib.auto.ptr]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Greg Colvin&nbsp; <b>Date:</b>&nbsp;17 Feb 1999</p>
<p>There are two problems with the current <tt>auto_ptr</tt> wording
in the standard: </p>
<p>First, the <tt>auto_ptr_ref</tt> definition cannot be nested
because <tt>auto_ptr&lt;Derived&gt;::auto_ptr_ref</tt> is unrelated to
<tt>auto_ptr&lt;Base&gt;::auto_ptr_ref</tt>. <i>Also submitted by
-Nathan Myers, with the same proposed resolution.</i>
-</p>
+Nathan Myers, with the same proposed resolution.</i></p>
<p>Second, there is no <tt>auto_ptr</tt> assignment operator taking an
<tt>auto_ptr_ref</tt> argument. </p>
@@ -3283,23 +3720,23 @@ object parameter may be bound to an rvalue [13.3.3.1.4/3]
<p>Tokyo: The LWG removed the following from the proposed resolution:</p>
- <p>In 20.4.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.auto.ptr"> [lib.auto.ptr]</a>, paragraph 2, and 20.4.5.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.auto.ptr.conv"> [lib.auto.ptr.conv]</a>,
+ <p>In 20.4.5 <a href="lib-utilities.html#lib.auto.ptr"> [lib.auto.ptr]</a>, paragraph 2, and 20.4.5.3 <a href="lib-utilities.html#lib.auto.ptr.conv"> [lib.auto.ptr.conv]</a>,
paragraph 2, make the conversion to auto_ptr_ref const:</p>
<blockquote>
<pre>template&lt;class Y&gt; operator auto_ptr_ref&lt;Y&gt;() const throw();</pre>
</blockquote>
<p><b>Proposed resolution:</b></p>
-<p>In 20.4.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.auto.ptr"> [lib.auto.ptr]</a>, paragraph 2, move
+<p>In 20.4.5 <a href="lib-utilities.html#lib.auto.ptr"> [lib.auto.ptr]</a>, paragraph 2, move
the <tt>auto_ptr_ref</tt> definition to namespace scope.</p>
-<p>In 20.4.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.auto.ptr"> [lib.auto.ptr]</a>, paragraph 2, add
+<p>In 20.4.5 <a href="lib-utilities.html#lib.auto.ptr"> [lib.auto.ptr]</a>, paragraph 2, add
a public assignment operator to the <tt>auto_ptr</tt> definition: </p>
<blockquote>
<pre>auto_ptr&amp; operator=(auto_ptr_ref&lt;X&gt; r) throw();</pre>
</blockquote>
-<p>Also add the assignment operator to 20.4.5.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.auto.ptr.conv"> [lib.auto.ptr.conv]</a>: </p>
+<p>Also add the assignment operator to 20.4.5.3 <a href="lib-utilities.html#lib.auto.ptr.conv"> [lib.auto.ptr.conv]</a>: </p>
<blockquote>
<pre>auto_ptr&amp; operator=(auto_ptr_ref&lt;X&gt; r) throw()</pre>
@@ -3310,8 +3747,7 @@ a public assignment operator to the <tt>auto_ptr</tt> definition: </p>
</blockquote>
<hr>
-<a name="129"><h3>129.&nbsp;Need error indication from seekp() and seekg()</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>, 27.6.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.seeks"> [lib.ostream.seeks]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;22 Feb 1999</p>
+<a name="129"><h3>129.&nbsp;Need error indication from seekp() and seekg()</h3></a><p><b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>, 27.6.2.4 <a href="lib-iostreams.html#lib.ostream.seeks"> [lib.ostream.seeks]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;22 Feb 1999</p>
<p>Currently, the standard does not specify how seekg() and seekp()
indicate failure. They are not required to set failbit, and they can't
return an error indication because they must return *this, i.e. the
@@ -3324,8 +3760,8 @@ stream must perform a state-dependent code conversion, etc. </p>
stream state in case of failure.</p>
<p><b>Proposed resolution:</b></p>
<p>Add to the Effects: clause of&nbsp; seekg() in
-27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a> and to the Effects: clause of seekp() in
-27.6.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.seeks"> [lib.ostream.seeks]</a>: </p>
+27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a> and to the Effects: clause of seekp() in
+27.6.2.4 <a href="lib-iostreams.html#lib.ostream.seeks"> [lib.ostream.seeks]</a>: </p>
<blockquote>
<p>In case of failure, the function calls <tt>setstate(failbit)</tt> (which may throw <tt>ios_base::failure</tt>).
@@ -3334,8 +3770,7 @@ stream state in case of failure.</p>
<p><b>Rationale:</b></p>
<p>Setting failbit is the usual error reporting mechanism for streams</p>
<hr>
-<a name="132"></a><h3><a name="132">132.&nbsp;list::resize description uses random access iterators</a></h3><p>
-<b>Section:</b>&nbsp;23.2.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.list.capacity"> [lib.list.capacity]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;6 Mar 1999</p>
+<a name="132"><h3>132.&nbsp;list::resize description uses random access iterators</h3></a><p><b>Section:</b>&nbsp;23.2.2.2 <a href="lib-containers.html#lib.list.capacity"> [lib.list.capacity]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;6 Mar 1999</p>
<p>The description reads:</p>
<p>-1- Effects:</p>
@@ -3366,24 +3801,22 @@ stream state in case of failure.</p>
with David Abrahams. They had a discussion and believe there is
no issue of exception safety with the proposed resolution.]</i></p>
<hr>
-<a name="133"><h3>133.&nbsp;map missing get_allocator()</h3></a><p>
-<b>Section:</b>&nbsp;23.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.map"> [lib.map]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;6 Mar 1999</p>
+<a name="133"><h3>133.&nbsp;map missing get_allocator()</h3></a><p><b>Section:</b>&nbsp;23.3.1 <a href="lib-containers.html#lib.map"> [lib.map]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;6 Mar 1999</p>
<p>The title says it all.</p>
<p><b>Proposed resolution:</b></p>
-<p>Insert in 23.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.map"> [lib.map]</a>, paragraph 2,
+<p>Insert in 23.3.1 <a href="lib-containers.html#lib.map"> [lib.map]</a>, paragraph 2,
after operator= in the map declaration:</p>
<pre> allocator_type get_allocator() const;</pre>
<hr>
-<a name="134"><h3>134.&nbsp;vector constructors over specified</h3></a><p>
-<b>Section:</b>&nbsp;23.2.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.cons"> [lib.vector.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;6 Mar 1999</p>
+<a name="134"><h3>134.&nbsp;vector constructors over specified</h3></a><p><b>Section:</b>&nbsp;23.2.4.1 <a href="lib-containers.html#lib.vector.cons"> [lib.vector.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;6 Mar 1999</p>
<p>The complexity description says: "It does at most 2N calls to the copy constructor
of T and logN reallocations if they are just input iterators ...".</p>
<p>This appears to be overly restrictive, dictating the precise memory/performance
tradeoff for the implementor.</p>
<p><b>Proposed resolution:</b></p>
-<p>Change 23.2.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.cons"> [lib.vector.cons]</a>, paragraph 1 to:</p>
+<p>Change 23.2.4.1 <a href="lib-containers.html#lib.vector.cons"> [lib.vector.cons]</a>, paragraph 1 to:</p>
<p>-1- Complexity: The constructor template &lt;class
InputIterator&gt; vector(InputIterator first, InputIterator last)
@@ -3398,8 +3831,7 @@ order logN reallocations if they are just input iterators.
is greater than or equal to 2.
</p>
<hr>
-<a name="136"><h3>136.&nbsp;seekp, seekg setting wrong streams?</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;6 Mar 1999</p>
+<a name="136"><h3>136.&nbsp;seekp, seekg setting wrong streams?</h3></a><p><b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;6 Mar 1999</p>
<p>I may be misunderstanding the intent, but should not seekg set only
the input stream and seekp set only the output stream? The description
seems to say that each should set both input and output streams. If
@@ -3441,7 +3873,7 @@ Effects: If fail() != true, executes rdbuf()-&gt;pubseekoff(off, dir, ios_base::
<pre>-4- Effects: If fail() != true, executes rdbuf()-&gt;pubseekoff(off, dir, ios_base::out). </pre>
-<p><i>[Dublin: Dietmar Kühl thinks this is probably correct, but would
+<p><i>[Dublin: Dietmar K&uuml;hl thinks this is probably correct, but would
like the opinion of more iostream experts before taking action.]</i></p>
<p><i>[Tokyo: Reviewed by the LWG. PJP noted that although his docs are
@@ -3460,9 +3892,8 @@ This requirement is a bit weird. There's no similar requirement
for basic_streambuf&lt;&gt;::seekpos, or for basic_filebuf&lt;&gt;::seekoff or
basic_filebuf&lt;&gt;::seekpos.]</i></p>
<hr>
-<a name="137"><h3>137.&nbsp;Do use_facet and has_facet look in the global locale?</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;17 Mar 1999</p>
-<p>Section 22.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale"> [lib.locale]</a> says:</p>
+<a name="137"><h3>137.&nbsp;Do use_facet and has_facet look in the global locale?</h3></a><p><b>Section:</b>&nbsp;22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;17 Mar 1999</p>
+<p>Section 22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a> says:</p>
<p>-4- In the call to use_facet&lt;Facet&gt;(loc), the type argument
chooses a facet, making available all members of the named type. If
@@ -3472,7 +3903,7 @@ check if a locale implements a particular facet with the template
function has_facet&lt;Facet&gt;(). </p>
<p>This contradicts the specification given in section
-22.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.global.templates"> [lib.locale.global.templates]</a>:
+22.1.2 <a href="lib-locales.html#lib.locale.global.templates"> [lib.locale.global.templates]</a>:
<br><br>
template &lt;class&nbsp; Facet&gt; const&nbsp; Facet&amp; use_facet(const
locale&amp;&nbsp; loc); <br>
@@ -3489,8 +3920,7 @@ from section 22.1.1. </p>
<p>Needed for consistency with the way locales are handled elsewhere
in the standard.</p>
<hr>
-<a name="139"><h3>139.&nbsp;Optional sequence operation table description unclear</h3></a><p>
-<b>Section:</b>&nbsp;23.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;30 Mar 1999</p>
+<a name="139"><h3>139.&nbsp;Optional sequence operation table description unclear</h3></a><p><b>Section:</b>&nbsp;23.1.1 <a href="lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;30 Mar 1999</p>
<p>The sentence introducing the Optional sequence operation table
(23.1.1 paragraph 12) has two problems:</p>
@@ -3513,13 +3943,11 @@ with:</p>
amortized constant time.</p>
</blockquote>
<hr>
-<a name="141"><h3>141.&nbsp;basic_string::find_last_of, find_last_not_of say pos instead of xpos</h3></a><p>
-<b>Section:</b>&nbsp;21.3.6.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string::find.last.of"> [lib.string::find.last.of]</a>, 21.3.6.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string::find.last.not.of"> [lib.string::find.last.not.of]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Arch Robison&nbsp; <b>Date:</b>&nbsp;28 Apr 1999</p>
+<a name="141"><h3>141.&nbsp;basic_string::find_last_of, find_last_not_of say pos instead of xpos</h3></a><p><b>Section:</b>&nbsp;21.3.6.4 <a href="lib-strings.html#lib.string::find.last.of"> [lib.string::find.last.of]</a>, 21.3.6.6 <a href="lib-strings.html#lib.string::find.last.not.of"> [lib.string::find.last.not.of]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Arch Robison&nbsp; <b>Date:</b>&nbsp;28 Apr 1999</p>
<p>Sections 21.3.6.4 paragraph 1 and 21.3.6.6 paragraph 1 surely have misprints where they
say:<br>
<br>
-&#8212; <tt>xpos &lt;= pos</tt> and <tt>pos &lt; size();</tt>
-</p>
+&#151; <tt>xpos &lt;= pos</tt> and <tt>pos &lt; size();</tt></p>
<p>Surely the document meant to say ``<tt>xpos &lt; size()</tt>'' in both places.</p>
@@ -3528,15 +3956,13 @@ proposed resolution.]</i></p>
<p><b>Proposed resolution:</b></p>
<p>Change Sections 21.3.6.4 paragraph 1 and 21.3.6.6 paragraph 1, the line which says:<br>
<br>
-&#8212; <tt>xpos &lt;= pos</tt> and <tt>pos &lt; size();<br>
+&#151; <tt>xpos &lt;= pos</tt> and <tt>pos &lt; size();<br>
<br>
</tt>to:<br>
<tt><br>
-</tt>&#8212; <tt>xpos &lt;= pos</tt> and <tt>xpos &lt; size();</tt>
-</p>
+</tt>&#151; <tt>xpos &lt;= pos</tt> and <tt>xpos &lt; size();</tt></p>
<hr>
-<a name="142"><h3>142.&nbsp;lexicographical_compare complexity wrong</h3></a><p>
-<b>Section:</b>&nbsp;25.3.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.lex.comparison"> [lib.alg.lex.comparison]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;20 Jun 1999</p>
+<a name="142"><h3>142.&nbsp;lexicographical_compare complexity wrong</h3></a><p><b>Section:</b>&nbsp;25.3.8 <a href="lib-algorithms.html#lib.alg.lex.comparison"> [lib.alg.lex.comparison]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;20 Jun 1999</p>
<p>The lexicographical_compare complexity is specified as:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; "At most min((last1 - first1), (last2 - first2))
@@ -3549,7 +3975,7 @@ equality you have to check both &lt; and &gt;? Yes, IMO you are
right! (and Matt states this complexity in his book)</p>
<p><b>Proposed resolution:</b></p>
-<p>Change 25.3.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.lex.comparison"> [lib.alg.lex.comparison]</a> complexity to:</p>
+<p>Change 25.3.8 <a href="lib-algorithms.html#lib.alg.lex.comparison"> [lib.alg.lex.comparison]</a> complexity to:</p>
<blockquote>
At most <tt>2*min((last1 - first1), (last2 - first2))</tt>
applications of the corresponding comparison.
@@ -3569,8 +3995,7 @@ right! (and Matt states this complexity in his book)</p>
--end example]
</blockquote>
<hr>
-<a name="144"><h3>144.&nbsp;Deque constructor complexity wrong </h3></a><p>
-<b>Section:</b>&nbsp;23.2.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.deque.cons"> [lib.deque.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Herb Sutter&nbsp; <b>Date:</b>&nbsp;9 May 1999</p>
+<a name="144"><h3>144.&nbsp;Deque constructor complexity wrong </h3></a><p><b>Section:</b>&nbsp;23.2.1.1 <a href="lib-containers.html#lib.deque.cons"> [lib.deque.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Herb Sutter&nbsp; <b>Date:</b>&nbsp;9 May 1999</p>
<p>In 23.2.1.1 paragraph 6, the deque ctor that takes an iterator range appears
to have complexity requirements which are incorrect, and which contradict the
complexity requirements for insert(). I suspect that the text in question,
@@ -3601,8 +4026,7 @@ typo):</p>
<p>Complexity: Makes last - first calls to the copy constructor of T.</p>
</blockquote>
<hr>
-<a name="146"><h3>146.&nbsp;complex&lt;T&gt; Inserter and Extractor need sentries</h3></a><p>
-<b>Section:</b>&nbsp;26.2.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex.ops"> [lib.complex.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;12 May 1999</p>
+<a name="146"><h3>146.&nbsp;complex&lt;T&gt; Inserter and Extractor need sentries</h3></a><p><b>Section:</b>&nbsp;26.2.6 <a href="lib-numerics.html#lib.complex.ops"> [lib.complex.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;12 May 1999</p>
<p>The <u> extractor</u> for complex numbers is specified as:&nbsp;</p>
<blockquote>
@@ -3659,7 +4083,7 @@ consistency with the other inserters and extractors in the
library. Regarding the issue of padding in the inserter, I don't know
what the intent was.&nbsp;</p>
<p><b>Proposed resolution:</b></p>
-<p>After 26.2.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.complex.ops"> [lib.complex.ops]</a> paragraph 14 (operator&gt;&gt;), add a
+<p>After 26.2.6 <a href="lib-numerics.html#lib.complex.ops"> [lib.complex.ops]</a> paragraph 14 (operator&gt;&gt;), add a
Notes clause:</p>
<blockquote>
@@ -3676,8 +4100,7 @@ follows an "all-or-none" rule.</p>
<p>For inserters, the LWG believes there is no defect; the standard is correct
as written.</p>
<hr>
-<a name="147"><h3>147.&nbsp;Library Intro refers to global functions that aren't global</h3></a><p>
-<b>Section:</b>&nbsp;17.4.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.global.functions"> [lib.global.functions]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Lois Goldthwaite&nbsp; <b>Date:</b>&nbsp;4 Jun 1999</p>
+<a name="147"><h3>147.&nbsp;Library Intro refers to global functions that aren't global</h3></a><p><b>Section:</b>&nbsp;17.4.4.3 <a href="lib-intro.html#lib.global.functions"> [lib.global.functions]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Lois Goldthwaite&nbsp; <b>Date:</b>&nbsp;4 Jun 1999</p>
<p>The library had many global functions until 17.4.1.1 [lib.contents]
paragraph 2 was added: </p>
@@ -3740,24 +4163,22 @@ Because operator new and delete are global, the proposed resolution
was changed from "non-member" to "global or non-member.
</p>
<hr>
-<a name="148"><h3>148.&nbsp;Functions in the example facet BoolNames should be const</h3></a><p>
-<b>Section:</b>&nbsp;22.2.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Jeremy Siek&nbsp; <b>Date:</b>&nbsp;3 Jun 1999</p>
-<p>In 22.2.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a> paragraph 13, the do_truename() and
+<a name="148"><h3>148.&nbsp;Functions in the example facet BoolNames should be const</h3></a><p><b>Section:</b>&nbsp;22.2.8 <a href="lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Jeremy Siek&nbsp; <b>Date:</b>&nbsp;3 Jun 1999</p>
+<p>In 22.2.8 <a href="lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a> paragraph 13, the do_truename() and
do_falsename() functions in the example facet BoolNames should be
const. The functions they are overriding in
numpunct_byname&lt;char&gt; are const. </p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.2.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a> paragraph 13, insert "const" in
+<p>In 22.2.8 <a href="lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a> paragraph 13, insert "const" in
two places:</p>
<blockquote>
<p><tt>string do_truename() const { return "Oui Oui!"; }<br>
string do_falsename() const { return "Mais Non!"; }</tt></p>
</blockquote>
<hr>
-<a name="150"><h3>150.&nbsp;Find_first_of says integer instead of iterator </h3></a><p>
-<b>Section:</b>&nbsp;25.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.find.first.of"> [lib.alg.find.first.of]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt McClure&nbsp; <b>Date:</b>&nbsp;30 Jun 1999</p>
+<a name="150"><h3>150.&nbsp;Find_first_of says integer instead of iterator </h3></a><p><b>Section:</b>&nbsp;25.1.4 <a href="lib-algorithms.html#lib.alg.find.first.of"> [lib.alg.find.first.of]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt McClure&nbsp; <b>Date:</b>&nbsp;30 Jun 1999</p>
<p><b>Proposed resolution:</b></p>
-<p>Change 25.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.find.first.of"> [lib.alg.find.first.of]</a> paragraph 2 from:</p>
+<p>Change 25.1.4 <a href="lib-algorithms.html#lib.alg.find.first.of"> [lib.alg.find.first.of]</a> paragraph 2 from:</p>
<blockquote>
<p>Returns: The first iterator i in the range [first1, last1) such
@@ -3771,8 +4192,7 @@ that for some <u>integer</u> j in the range [first2, last2) ...</p>
that for some iterator j in the range [first2, last2) ...</p>
</blockquote>
<hr>
-<a name="151"><h3>151.&nbsp;Can't currently clear() empty container</h3></a><p>
-<b>Section:</b>&nbsp;23.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Ed Brey&nbsp; <b>Date:</b>&nbsp;21 Jun 1999</p>
+<a name="151"><h3>151.&nbsp;Can't currently clear() empty container</h3></a><p><b>Section:</b>&nbsp;23.1.1 <a href="lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Ed Brey&nbsp; <b>Date:</b>&nbsp;21 Jun 1999</p>
<p>For both sequences and associative containers, a.clear() has the
semantics of erase(a.begin(),a.end()), which is undefined for an empty
container since erase(q1,q2) requires that q1 be dereferenceable
@@ -3795,8 +4215,7 @@ iterators or certain kinds of iterators is unnecessary.
<p>to:</p>
<blockquote>
<p>p denotes a valid iterator to a, q denotes a valid dereferenceable iterator to a, [q1, q2) denotes a valid range<u>
- in a</u>
-</p>
+ in a</u></p>
</blockquote>
<p>In 23.1.2, paragraph 7, change:</p>
<blockquote>
@@ -3806,18 +4225,16 @@ iterators or certain kinds of iterators is unnecessary.
<p>to</p>
<blockquote>
<p>p is a valid iterator to a, q is a valid dereferenceable iterator to a, [q1, q2) is a valid range
- <u>into a</u>
-</p>
+ <u>into a</u></p>
</blockquote>
<hr>
-<a name="152"><h3>152.&nbsp;Typo in <tt>scan_is()</tt> semantics</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<a name="152"><h3>152.&nbsp;Typo in <tt>scan_is()</tt> semantics</h3></a><p><b>Section:</b>&nbsp;22.2.1.1.2 <a href="lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The semantics of <tt>scan_is()</tt> (paragraphs 4 and 6) is not exactly described
because there is no function <tt>is()</tt> which only takes a character as
argument. Also, in the effects clause (paragraph 3), the semantic is also kept
vague.</p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.2.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a> paragraphs 4 and 6, change the returns
+<p>In 22.2.1.1.2 <a href="lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a> paragraphs 4 and 6, change the returns
clause from:</p>
<blockquote>
<p>"... such that <tt>is(*p)</tt>
@@ -3826,8 +4243,7 @@ would..."</p>
<p>to:&nbsp; "... such that <tt>is(m, *p)</tt>
would...."</p>
<hr>
-<a name="153"><h3>153.&nbsp;Typo in <tt>narrow()</tt> semantics</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.ctype.char.members"> [lib.facet.ctype.char.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<a name="153"><h3>153.&nbsp;Typo in <tt>narrow()</tt> semantics</h3></a><p><b>Section:</b>&nbsp;22.2.1.3.2 <a href="lib-locales.html#lib.facet.ctype.char.members"> [lib.facet.ctype.char.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The description of the array version of <tt>narrow()</tt> (in
paragraph 11) is flawed: There is no member <tt>do_narrow()</tt> which
takes only three arguments because in addition to the range a default
@@ -3838,7 +4254,7 @@ two signatures followed by a <b>Returns</b> clause that only addresses
one of them.</p>
<p><b>Proposed resolution:</b></p>
-<p>Change the returns clause in 22.2.1.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.ctype.char.members"> [lib.facet.ctype.char.members]</a>
+<p>Change the returns clause in 22.2.1.3.2 <a href="lib-locales.html#lib.facet.ctype.char.members"> [lib.facet.ctype.char.members]</a>
paragraph 10 from:</p>
<p>&nbsp;&nbsp;&nbsp; Returns: do_widen(low, high, to).</p>
@@ -3846,7 +4262,7 @@ paragraph 10 from:</p>
<p>&nbsp;&nbsp;&nbsp; Returns: do_widen(c) or do_widen(low, high, to),
respectively.</p>
-<p>Change 22.2.1.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.ctype.char.members"> [lib.facet.ctype.char.members]</a> paragraph 10 and 11 from:</p>
+<p>Change 22.2.1.3.2 <a href="lib-locales.html#lib.facet.ctype.char.members"> [lib.facet.ctype.char.members]</a> paragraph 10 and 11 from:</p>
<pre> char narrow(char c, char /*dfault*/) const;
const char* narrow(const char* low, const char* high,
char /*dfault*/, char* to) const;</pre>
@@ -3868,53 +4284,48 @@ version..." comment above. Perhaps it was a circuitous way of
saying "dfault" needed to be uncommented?]</i></p>
<p><i>[Post-Toronto: the issues list maintainer has merged in the
-proposed resolution from issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#207">207</a>, which addresses the
+proposed resolution from issue <a href="lwg-closed.html#207">207</a>, which addresses the
same paragraphs.]</i></p>
<hr>
-<a name="154"></a><h3><a name="154">154.&nbsp;Missing <tt>double</tt> specifier for <tt>do_get()</tt>
-</a></h3><p>
-<b>Section:</b>&nbsp;22.2.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<a name="154"><h3>154.&nbsp;Missing <tt>double</tt> specifier for <tt>do_get()</tt>
+</h3></a><p><b>Section:</b>&nbsp;22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The table in paragraph 7 for the length modifier does not list the length
modifier <tt>l</tt> to be applied if the type is <tt>double</tt>. Thus, the
standard asks the implementation to do undefined things when using <tt>scanf()</tt>
(the missing length modifier for <tt>scanf()</tt> when scanning <tt>double</tt>s
is actually a problem I found quite often in production code, too).</p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.2.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>, paragraph 7, add a row in the Length
+<p>In 22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>, paragraph 7, add a row in the Length
Modifier table to say that for <tt>double</tt> a length modifier
<tt>l</tt> is to be used.</p>
<p><b>Rationale:</b></p>
<p>The standard makes an embarrassing beginner's mistake.</p>
<hr>
<a name="155"><h3>155.&nbsp;Typo in naming the class defining the class <tt>Init</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;27.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.iostream.objects"> [lib.iostream.objects]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+</h3></a><p><b>Section:</b>&nbsp;27.3 <a href="lib-iostreams.html#lib.iostream.objects"> [lib.iostream.objects]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>There are conflicting statements about where the class
-<tt>Init</tt> is defined. According to 27.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.iostream.objects"> [lib.iostream.objects]</a> paragraph 2
-it is defined as <tt>basic_ios::Init</tt>, according to 27.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a> it is defined as <tt>ios_base::Init</tt>.</p>
+<tt>Init</tt> is defined. According to 27.3 <a href="lib-iostreams.html#lib.iostream.objects"> [lib.iostream.objects]</a> paragraph 2
+it is defined as <tt>basic_ios::Init</tt>, according to 27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a> it is defined as <tt>ios_base::Init</tt>.</p>
<p><b>Proposed resolution:</b></p>
-<p>Change 27.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.iostream.objects"> [lib.iostream.objects]</a> paragraph 2 from
+<p>Change 27.3 <a href="lib-iostreams.html#lib.iostream.objects"> [lib.iostream.objects]</a> paragraph 2 from
"<tt>basic_ios::Init"</tt> to
"<tt>ios_base::Init"</tt>.</p>
<p><b>Rationale:</b></p>
<p>Although not strictly wrong, the standard was misleading enough to warrant
the change.</p>
<hr>
-<a name="156"><h3>156.&nbsp;Typo in <tt>imbue()</tt> description</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<a name="156"><h3>156.&nbsp;Typo in <tt>imbue()</tt> description</h3></a><p><b>Section:</b>&nbsp;27.4.2.3 <a href="lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>There is a small discrepancy between the declarations of
-<tt>imbue()</tt>: in 27.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a> the argument is passed as
-<tt>locale const&amp;</tt> (correct), in 27.4.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a> it
+<tt>imbue()</tt>: in 27.4.2 <a href="lib-iostreams.html#lib.ios.base"> [lib.ios.base]</a> the argument is passed as
+<tt>locale const&amp;</tt> (correct), in 27.4.2.3 <a href="lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a> it
is passed as <tt>locale const</tt> (wrong).</p>
<p><b>Proposed resolution:</b></p>
-<p>In 27.4.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a> change the <tt>imbue</tt> argument
+<p>In 27.4.2.3 <a href="lib-iostreams.html#lib.ios.base.locales"> [lib.ios.base.locales]</a> change the <tt>imbue</tt> argument
from "<tt>locale const" to "locale
-const&amp;".</tt>
-</p>
+const&amp;".</tt></p>
<hr>
<a name="158"><h3>158.&nbsp;Underspecified semantics for <tt>setbuf()</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.virt.buffer"> [lib.streambuf.virt.buffer]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+</h3></a><p><b>Section:</b>&nbsp;27.5.2.4.2 <a href="lib-iostreams.html#lib.streambuf.virt.buffer"> [lib.streambuf.virt.buffer]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The default behavior of <tt>setbuf()</tt> is described only for the
situation that <tt>gptr() != 0 &amp;&amp; gptr() != egptr()</tt>:
namely to do nothing. What has to be done in other situations&nbsp;
@@ -3926,12 +4337,11 @@ buffer management of derived classes unless these classes do it
themselves, the default behavior of <tt>setbuf()</tt> should always be
to do nothing.</p>
<p><b>Proposed resolution:</b></p>
-<p>Change 27.5.2.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.virt.buffer"> [lib.streambuf.virt.buffer]</a>, paragraph 3, Default behavior,
+<p>Change 27.5.2.4.2 <a href="lib-iostreams.html#lib.streambuf.virt.buffer"> [lib.streambuf.virt.buffer]</a>, paragraph 3, Default behavior,
to: "Default behavior: Does nothing. Returns this."</p>
<hr>
<a name="159"><h3>159.&nbsp;Strange use of <tt>underflow()</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.virt.get"> [lib.streambuf.virt.get]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+</h3></a><p><b>Section:</b>&nbsp;27.5.2.4.3 <a href="lib-iostreams.html#lib.streambuf.virt.get"> [lib.streambuf.virt.get]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The description of the meaning of the result of
<tt>showmanyc()</tt> seems to be rather strange: It uses calls to
<tt>underflow()</tt>. Using <tt>underflow()</tt> is strange because
@@ -3939,20 +4349,19 @@ this function only reads the current character but does not extract
it, <tt>uflow()</tt> would extract the current character. This should
be fixed to use <tt>sbumpc()</tt> instead.</p>
<p><b>Proposed resolution:</b></p>
-<p>Change 27.5.2.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.virt.get"> [lib.streambuf.virt.get]</a> paragraph 1,
+<p>Change 27.5.2.4.3 <a href="lib-iostreams.html#lib.streambuf.virt.get"> [lib.streambuf.virt.get]</a> paragraph 1,
<tt>showmanyc()</tt>returns clause, by replacing the word
"supplied" with the words "extracted from the
stream".</p>
<hr>
<a name="160"><h3>160.&nbsp;Typo: Use of non-existing function <tt>exception()</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream"> [lib.istream]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+</h3></a><p><b>Section:</b>&nbsp;27.6.1.1 <a href="lib-iostreams.html#lib.istream"> [lib.istream]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The paragraph 4 refers to the function <tt>exception()</tt> which
is not defined. Probably, the referred function is
<tt>basic_ios&lt;&gt;::exceptions()</tt>.</p>
<p><b>Proposed resolution:</b></p>
-<p>In 27.6.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream"> [lib.istream]</a>, 27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>, paragraph 1,
-27.6.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream"> [lib.ostream]</a>, paragraph 3, and 27.6.2.5.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.formatted.reqmts"> [lib.ostream.formatted.reqmts]</a>,
+<p>In 27.6.1.1 <a href="lib-iostreams.html#lib.istream"> [lib.istream]</a>, 27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>, paragraph 1,
+27.6.2.1 <a href="lib-iostreams.html#lib.ostream"> [lib.ostream]</a>, paragraph 3, and 27.6.2.5.1 <a href="lib-iostreams.html#lib.ostream.formatted.reqmts"> [lib.ostream.formatted.reqmts]</a>,
paragraph 1, change "<tt>exception()" to
"exceptions()"</tt>.</p>
@@ -3960,13 +4369,12 @@ paragraph 1, change "<tt>exception()" to
is the correct spelling.]</i></p>
<hr>
<a name="161"><h3>161.&nbsp;Typo: <tt>istream_iterator</tt> vs. <tt>istreambuf_iterator</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.formatted.arithmetic"> [lib.istream.formatted.arithmetic]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+</h3></a><p><b>Section:</b>&nbsp;27.6.1.2.2 <a href="lib-iostreams.html#lib.istream.formatted.arithmetic"> [lib.istream.formatted.arithmetic]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The note in the second paragraph pretends that the first argument
is an object of type <tt>istream_iterator</tt>. This is wrong: It is
an object of type <tt>istreambuf_iterator</tt>.</p>
<p><b>Proposed resolution:</b></p>
-<p>Change 27.6.1.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.formatted.arithmetic"> [lib.istream.formatted.arithmetic]</a> from:</p>
+<p>Change 27.6.1.2.2 <a href="lib-iostreams.html#lib.istream.formatted.arithmetic"> [lib.istream.formatted.arithmetic]</a> from:</p>
<blockquote>
<p>The first argument provides an object of the istream_iterator class...</p>
</blockquote>
@@ -3975,9 +4383,8 @@ an object of type <tt>istreambuf_iterator</tt>.</p>
<p>The first argument provides an object of the istreambuf_iterator class...</p>
</blockquote>
<hr>
-<a name="164"><h3>164.&nbsp;do_put() has apparently unused fill argument</h3></a><p>
-<b>Section:</b>&nbsp;22.2.5.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.time.put.virtuals"> [lib.locale.time.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
-<p>In 22.2.5.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.time.put.virtuals"> [lib.locale.time.put.virtuals]</a> the do_put() function is specified
+<a name="164"><h3>164.&nbsp;do_put() has apparently unused fill argument</h3></a><p><b>Section:</b>&nbsp;22.2.5.3.2 <a href="lib-locales.html#lib.locale.time.put.virtuals"> [lib.locale.time.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
+<p>In 22.2.5.3.2 <a href="lib-locales.html#lib.locale.time.put.virtuals"> [lib.locale.time.put.virtuals]</a> the do_put() function is specified
as taking a fill character as an argument, but the description of the
function does not say whether the character is used at all and, if so,
in which way. The same holds for any format control parameters that
@@ -3987,7 +4394,7 @@ character in any way? In any case, the specification of
time_put.do_put() looks inconsistent to me.<br> <br> Is the
signature of do_put() wrong, or is the effects clause incomplete?</p>
<p><b>Proposed resolution:</b></p>
-<p>Add the following note after 22.2.5.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.time.put.virtuals"> [lib.locale.time.put.virtuals]</a>
+<p>Add the following note after 22.2.5.3.2 <a href="lib-locales.html#lib.locale.time.put.virtuals"> [lib.locale.time.put.virtuals]</a>
paragraph 2:</p>
<blockquote>
<p> [Note: the <tt>fill</tt> argument may be used in the implementation-defined formats, or by derivations. A space character is a reasonable default
@@ -3998,8 +4405,7 @@ paragraph 2:</p>
users need some guidance on what to pass for the <tt>fill</tt>
argument since the standard doesn't say how it's used.</p>
<hr>
-<a name="165"><h3>165.&nbsp;<tt>xsputn()</tt>, <tt>pubsync()</tt> never called by <tt>basic_ostream</tt> members?</h3></a><p>
-<b>Section:</b>&nbsp;27.6.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream"> [lib.ostream]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<a name="165"><h3>165.&nbsp;<tt>xsputn()</tt>, <tt>pubsync()</tt> never called by <tt>basic_ostream</tt> members?</h3></a><p><b>Section:</b>&nbsp;27.6.2.1 <a href="lib-iostreams.html#lib.ostream"> [lib.ostream]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>Paragraph 2 explicitly states that none of the <tt>basic_ostream</tt>
functions falling into one of the groups "formatted output functions"
and "unformatted output functions" calls any stream buffer function
@@ -4045,13 +4451,77 @@ necessary be explicitly spelling out what virtuals are allowed to be
called from what functions and eg to state specifically that flush()
is allowed to call sync() while other functions are not.]</i></p>
<hr>
-<a name="168"><h3>168.&nbsp;Typo: formatted vs. unformatted</h3></a><p>
-<b>Section:</b>&nbsp;27.6.2.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.unformatted"> [lib.ostream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<a name="167"><h3>167.&nbsp;Improper use of <tt>traits_type::length()</tt>
+</h3></a><p><b>Section:</b>&nbsp;27.6.2.5.4 <a href="lib-iostreams.html#lib.ostream.inserters.character"> [lib.ostream.inserters.character]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<p>Paragraph 4 states that the length is determined using
+<tt>traits::length(s)</tt>. Unfortunately, this function is not
+defined for example if the character type is <tt>wchar_t</tt> and the
+type of <tt>s</tt> is <tt>char const*</tt>. Similar problems exist if
+the character type is <tt>char</tt> and the type of <tt>s</tt> is
+either <tt>signed char const*</tt> or <tt>unsigned char
+const*</tt>.</p>
+<p><b>Proposed resolution:</b></p>
+<p>Change 27.6.2.5.4 <a href="lib-iostreams.html#lib.ostream.inserters.character"> [lib.ostream.inserters.character]</a> paragraph 4 from:</p>
+<blockquote>
+ <p>Effects: Behaves like an formatted inserter (as described in
+ lib.ostream.formatted.reqmts) of out. After a sentry object is
+ constructed it inserts characters. The number of characters starting
+ at s to be inserted is traits::length(s). Padding is determined as
+ described in lib.facet.num.put.virtuals. The traits::length(s)
+ characters starting at s are widened using out.widen
+ (lib.basic.ios.members). The widened characters and any required
+ padding are inserted into out. Calls width(0).</p>
+</blockquote>
+<p>to:</p>
+<blockquote>
+ <p>Effects: Behaves like a formatted inserter (as described in
+ lib.ostream.formatted.reqmts) of out. After a sentry object is
+ constructed it inserts <i>n</i> characters starting at <i>s</i>,
+ where <i>n</i> is the number that would be computed as if by:</p>
+ <ul>
+ <li>traits::length(s) for the overload where the first argument is of
+ type basic_ostream&lt;charT, traits&gt;&amp; and the second is
+ of type const charT*, and also for the overload where the first
+ argument is of type basic_ostream&lt;char, traits&gt;&amp; and
+ the second is of type const char*.</li>
+ <li>std::char_traits&lt;char&gt;::length(s)
+ for the overload where the first argument is of type
+ basic_ostream&lt;charT, traits&gt;&amp; and the second is of type
+ const char*.</li>
+ <li>traits::length(reinterpret_cast&lt;const char*&gt;(s))
+ for the other two overloads.</li>
+ </ul>
+ <p>Padding is determined as described in
+ lib.facet.num.put.virtuals. The <i>n</i> characters starting at
+ <i>s</i> are widened using out.widen (lib.basic.ios.members). The
+ widened characters and any required padding are inserted into
+ out. Calls width(0).</p>
+</blockquote>
+
+<p><i>[Santa Cruz: Matt supplied new wording]</i></p>
+
+<p><i>[Kona: changed "where <i>n</i> is" to " where <i>n</i> is the
+ number that would be computed as if by"]</i></p>
+
+<p><b>Rationale:</b></p>
+<p>We have five separate cases. In two of them we can use the
+user-supplied traits class without any fuss. In the other three we
+try to use something as close to that user-supplied class as possible.
+In two cases we've got a traits class that's appropriate for
+char and what we've got is a const signed char* or a const
+unsigned char*; that's close enough so we can just use a reinterpret
+cast, and continue to use the user-supplied traits class. Finally,
+there's one case where we just have to give up: where we've got a
+traits class for some arbitrary charT type, and we somehow have to
+deal with a const char*. There's nothing better to do but fall back
+to char_traits&lt;char&gt;</p>
+<hr>
+<a name="168"><h3>168.&nbsp;Typo: formatted vs. unformatted</h3></a><p><b>Section:</b>&nbsp;27.6.2.6 <a href="lib-iostreams.html#lib.ostream.unformatted"> [lib.ostream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>The first paragraph begins with a descriptions what has to be done
in <i>formatted</i> output functions. Probably this is a typo and the
paragraph really want to describe unformatted output functions...</p>
<p><b>Proposed resolution:</b></p>
-<p>In 27.6.2.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.unformatted"> [lib.ostream.unformatted]</a> paragraph 1, the first and last
+<p>In 27.6.2.6 <a href="lib-iostreams.html#lib.ostream.unformatted"> [lib.ostream.unformatted]</a> paragraph 1, the first and last
sentences, change the word "formatted" to
"unformatted":</p>
<blockquote>
@@ -4060,19 +4530,18 @@ sentences, change the word "formatted" to
function."</p>
</blockquote>
<hr>
-<a name="169"><h3>169.&nbsp;Bad efficiency of <tt>overflow()</tt> mandated</h3></a><p>
-<b>Section:</b>&nbsp;27.7.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<a name="169"><h3>169.&nbsp;Bad efficiency of <tt>overflow()</tt> mandated</h3></a><p><b>Section:</b>&nbsp;27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
<p>Paragraph 8, Notes, of this section seems to mandate an extremely
inefficient way of buffer handling for <tt>basic_stringbuf</tt>,
especially in view of the restriction that <tt>basic_ostream</tt>
-member functions are not allowed to use <tt>xsputn()</tt> (see 27.6.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream"> [lib.ostream]</a>): For each character to be inserted, a new buffer
+member functions are not allowed to use <tt>xsputn()</tt> (see 27.6.2.1 <a href="lib-iostreams.html#lib.ostream"> [lib.ostream]</a>): For each character to be inserted, a new buffer
is to be created.</p>
<p>Of course, the resolution below requires some handling of
simultaneous input and output since it is no longer possible to update
<tt>egptr()</tt> whenever <tt>epptr()</tt> is changed. A possible
solution is to handle this in <tt>underflow()</tt>.</p>
<p><b>Proposed resolution:</b></p>
-<p>In 27.7.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a> paragraph 8, Notes, insert the words
+<p>In 27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a> paragraph 8, Notes, insert the words
"at least" as in the following:</p>
<blockquote>
<p>To make a write position available, the function reallocates (or initially
@@ -4082,25 +4551,23 @@ solution is to handle this in <tt>underflow()</tt>.</p>
</blockquote>
<hr>
<a name="170"><h3>170.&nbsp;Inconsistent definition of <tt>traits_type</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;27.7.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.stringstream"> [lib.stringstream]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
-<p>The classes <tt>basic_stringstream</tt> (27.7.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.stringstream"> [lib.stringstream]</a>),
-<tt>basic_istringstream</tt> (27.7.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istringstream"> [lib.istringstream]</a>), and
-<tt>basic_ostringstream</tt> (27.7.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostringstream"> [lib.ostringstream]</a>) are inconsistent
+</h3></a><p><b>Section:</b>&nbsp;27.7.4 <a href="lib-iostreams.html#lib.stringstream"> [lib.stringstream]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<p>The classes <tt>basic_stringstream</tt> (27.7.4 <a href="lib-iostreams.html#lib.stringstream"> [lib.stringstream]</a>),
+<tt>basic_istringstream</tt> (27.7.2 <a href="lib-iostreams.html#lib.istringstream"> [lib.istringstream]</a>), and
+<tt>basic_ostringstream</tt> (27.7.3 <a href="lib-iostreams.html#lib.ostringstream"> [lib.ostringstream]</a>) are inconsistent
in their definition of the type <tt>traits_type</tt>: For
<tt>istringstream</tt>, this type is defined, for the other two it is
not. This should be consistent.</p>
<p><b>Proposed resolution:</b></p>
<p><b>Proposed resolution:</b></p> <p>To the declarations of
-<tt>basic_ostringstream</tt> (27.7.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostringstream"> [lib.ostringstream]</a>) and
-<tt>basic_stringstream</tt> (27.7.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.stringstream"> [lib.stringstream]</a>) add:</p>
+<tt>basic_ostringstream</tt> (27.7.3 <a href="lib-iostreams.html#lib.ostringstream"> [lib.ostringstream]</a>) and
+<tt>basic_stringstream</tt> (27.7.4 <a href="lib-iostreams.html#lib.stringstream"> [lib.stringstream]</a>) add:</p>
<blockquote>
<pre>typedef traits traits_type;</pre>
</blockquote>
<hr>
-<a name="171"><h3>171.&nbsp;Strange <tt>seekpos()</tt> semantics due to joint position</h3></a><p>
-<b>Section:</b>&nbsp;27.8.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
-<p>Overridden virtual functions, seekpos()</p> <p>In 27.8.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.filebuf"> [lib.filebuf]</a> paragraph 3, it is stated that a joint input and
+<a name="171"><h3>171.&nbsp;Strange <tt>seekpos()</tt> semantics due to joint position</h3></a><p><b>Section:</b>&nbsp;27.8.1.4 <a href="lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Jul 1999</p>
+<p>Overridden virtual functions, seekpos()</p> <p>In 27.8.1.1 <a href="lib-iostreams.html#lib.filebuf"> [lib.filebuf]</a> paragraph 3, it is stated that a joint input and
output position is maintained by <tt>basic_filebuf</tt>. Still, the
description of <tt>seekpos()</tt> seems to talk about different file
positions. In particular, it is unclear (at least to me) what is
@@ -4152,19 +4619,17 @@ paragraph 14 from:</p>
<p><i>[Post-Tokyo: Dietmar supplied the above wording.]</i></p>
<hr>
<a name="172"><h3>172.&nbsp;Inconsistent types for <tt>basic_istream::ignore()</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Greg Comeau, Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
-<p>In 27.6.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream"> [lib.istream]</a> the function
+</h3></a><p><b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Greg Comeau, Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
+<p>In 27.6.1.1 <a href="lib-iostreams.html#lib.istream"> [lib.istream]</a> the function
<tt>ignore()</tt> gets an object of type <tt>streamsize</tt> as first
-argument. However, in 27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>
-paragraph 23 the first argument is of type <tt>int.</tt>
-</p>
+argument. However, in 27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>
+paragraph 23 the first argument is of type <tt>int.</tt></p>
<p>As far as I can see this is not really a contradiction because
everything is consistent if <tt>streamsize</tt> is typedef to be
<tt>int</tt>. However, this is almost certainly not what was
intended. The same thing happened to <tt>basic_filebuf::setbuf()</tt>,
-as described in issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#173">173</a>.</p>
+as described in issue <a href="lwg-defects.html#173">173</a>.</p>
<p>Darin Adler also
submitted this issue, commenting: Either 27.6.1.1 should be modified
@@ -4172,18 +4637,17 @@ to show a first parameter of type int, or 27.6.1.3 should be modified
to show a first parameter of type streamsize and use
numeric_limits&lt;streamsize&gt;::max.</p>
<p><b>Proposed resolution:</b></p>
-<p>In 27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a> paragraph 23 and 24, change both uses
+<p>In 27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a> paragraph 23 and 24, change both uses
of <tt>int</tt> in the description of <tt>ignore()</tt> to
<tt>streamsize</tt>.</p>
<hr>
<a name="173"><h3>173.&nbsp;Inconsistent types for <tt>basic_filebuf::setbuf()</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;27.8.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Greg Comeau, Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
+</h3></a><p><b>Section:</b>&nbsp;27.8.1.4 <a href="lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Greg Comeau, Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
<p>
-In 27.8.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.filebuf"> [lib.filebuf]</a> the function <tt>setbuf()</tt> gets an
+In 27.8.1.1 <a href="lib-iostreams.html#lib.filebuf"> [lib.filebuf]</a> the function <tt>setbuf()</tt> gets an
object of type <tt>streamsize</tt> as second argument. However, in
-27.8.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a> paragraph 9 the second argument is of type
+27.8.1.4 <a href="lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a> paragraph 9 the second argument is of type
<tt>int</tt>.
</p>
@@ -4192,28 +4656,25 @@ As far as I can see this is not really a contradiction because
everything is consistent if <tt>streamsize</tt> is typedef to be
<tt>int</tt>. However, this is almost certainly not what was
intended. The same thing happened to <tt>basic_istream::ignore()</tt>,
-as described in issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#172">172</a>.
+as described in issue <a href="lwg-defects.html#172">172</a>.
</p>
<p><b>Proposed resolution:</b></p>
-<p>In 27.8.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a> paragraph 9, change all uses of
+<p>In 27.8.1.4 <a href="lib-iostreams.html#lib.filebuf.virtuals"> [lib.filebuf.virtuals]</a> paragraph 9, change all uses of
<tt>int</tt> in the description of <tt>setbuf()</tt> to
<tt>streamsize</tt>.</p>
<hr>
<a name="174"><h3>174.&nbsp;Typo: <tt>OFF_T</tt> vs. <tt>POS_T</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;D.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.ios.members"> [depr.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
+</h3></a><p><b>Section:</b>&nbsp;D.6 <a href="future.html#depr.ios.members"> [depr.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
<p>According to paragraph 1 of this section, <tt>streampos</tt> is the
type <tt>OFF_T</tt>, the same type as <tt>streamoff</tt>. However, in
-paragraph 6 the <tt>streampos</tt> gets the type <tt>POS_T</tt>
-</p>
+paragraph 6 the <tt>streampos</tt> gets the type <tt>POS_T</tt></p>
<p><b>Proposed resolution:</b></p>
-<p>Change D.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.ios.members"> [depr.ios.members]</a> paragraph 1 from "<tt>typedef
+<p>Change D.6 <a href="future.html#depr.ios.members"> [depr.ios.members]</a> paragraph 1 from "<tt>typedef
OFF_T streampos;</tt>" to "<tt>typedef POS_T
streampos;</tt>"</p>
<hr>
-<a name="175"><h3>175.&nbsp;Ambiguity for <tt>basic_streambuf::pubseekpos()</tt> and a few other functions.</h3></a><p>
-<b>Section:</b>&nbsp;D.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.ios.members"> [depr.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
+<a name="175"><h3>175.&nbsp;Ambiguity for <tt>basic_streambuf::pubseekpos()</tt> and a few other functions.</h3></a><p><b>Section:</b>&nbsp;D.6 <a href="future.html#depr.ios.members"> [depr.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
<p>According to paragraph 8 of this section, the methods
<tt>basic_streambuf::pubseekpos()</tt>,
<tt>basic_ifstream::open()</tt>, and <tt>basic_ofstream::open</tt>
@@ -4226,26 +4687,23 @@ three cases. However, this generates an ambiguity with the overloaded
version because now the arguments are absolutely identical if the last
argument is not specified.</p>
<p><b>Proposed resolution:</b></p>
-<p>In D.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.ios.members"> [depr.ios.members]</a> paragraph 8, remove the default arguments for
+<p>In D.6 <a href="future.html#depr.ios.members"> [depr.ios.members]</a> paragraph 8, remove the default arguments for
<tt>basic_streambuf::pubseekpos()</tt>,
<tt>basic_ifstream::open()</tt>, and
-<tt>basic_ofstream::open().</tt>
-</p>
+<tt>basic_ofstream::open().</tt></p>
<hr>
-<a name="176"></a><h3><a name="176">176.&nbsp;<tt>exceptions()</tt> in <tt>ios_base</tt>...?</a></h3><p>
-<b>Section:</b>&nbsp;D.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.ios.members"> [depr.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
+<a name="176"><h3>176.&nbsp;<tt>exceptions()</tt> in <tt>ios_base</tt>...?</h3></a><p><b>Section:</b>&nbsp;D.6 <a href="future.html#depr.ios.members"> [depr.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;23 Jul 1999</p>
<p>The "overload" for the function <tt>exceptions()</tt> in
paragraph 8 gives the impression that there is another function of
this function defined in class <tt>ios_base</tt>. However, this is not
the case. Thus, it is hard to tell how the semantics (paragraph 9) can
be implemented: "Call the corresponding member function specified
-in clause 27 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.input.output"> [lib.input.output]</a>."</p>
+in clause 27 <a href="lib-iostreams.html#lib.input.output"> [lib.input.output]</a>."</p>
<p><b>Proposed resolution:</b></p>
-<p>In D.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/future.html#depr.ios.members"> [depr.ios.members]</a> paragraph 8, move the declaration of the
+<p>In D.6 <a href="future.html#depr.ios.members"> [depr.ios.members]</a> paragraph 8, move the declaration of the
function <tt>exceptions()</tt>into class <tt>basic_ios</tt>.</p>
<hr>
-<a name="179"><h3>179.&nbsp;Comparison of const_iterators to iterators doesn't work</h3></a><p>
-<b>Section:</b>&nbsp;23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;2 Jul 1998</p>
+<a name="179"><h3>179.&nbsp;Comparison of const_iterators to iterators doesn't work</h3></a><p><b>Section:</b>&nbsp;23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;2 Jul 1998</p>
<p>Currently the following will not compile on two well-known standard
library implementations:</p>
@@ -4297,7 +4755,8 @@ return i == ci;
The fix is to make the comparison operators templated on two types.
</p>
- <pre> template &lt;class Iterator1, class Iterator2&gt;
+ <pre>
+ template &lt;class Iterator1, class Iterator2&gt;
bool operator== (reverse_iterator&lt;Iterator1&gt; const&amp; x,
reverse_iterator&lt;Iterator2&gt; const&amp; y);
</pre>
@@ -4318,10 +4777,11 @@ return i == ci;
</p>
</blockquote>
<p><b>Proposed resolution:</b></p>
-<p>Insert this paragraph after 23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> paragraph 7:</p>
+<p>Insert this paragraph after 23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> paragraph 7:</p>
<blockquote>
<p>In the expressions</p>
- <pre> i == j
+ <pre>
+ i == j
i != j
i &lt; j
i &lt;= j
@@ -4349,11 +4809,10 @@ the nested types <tt>X::iterator</tt> and <tt>X::const_iterator</tt>,
where <tt>X</tt> is a container. There is no requirement that
<tt>X::reverse_iterator</tt> and <tt>X::const_reverse_iterator</tt>
can be mixed. If mixing them is considered important, that's a
-separate issue. (Issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#280">280</a>.)
+separate issue. (Issue <a href="lwg-active.html#280">280</a>.)
</p>
<hr>
-<a name="181"><h3>181.&nbsp;make_pair() unintended behavior</h3></a><p>
-<b>Section:</b>&nbsp;20.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.pairs"> [lib.pairs]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;3 Aug 1999</p>
+<a name="181"><h3>181.&nbsp;make_pair() unintended behavior</h3></a><p><b>Section:</b>&nbsp;20.2.2 <a href="lib-utilities.html#lib.pairs"> [lib.pairs]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;3 Aug 1999</p>
<p>The claim has surfaced in Usenet that expressions such as<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tt>make_pair("abc", 3)</tt><br>
@@ -4364,7 +4823,7 @@ parameter to <tt> const char (&amp;)[4]</tt>, which type is uncopyable.<br>
I doubt anyone intended that behavior...
</p>
<p><b>Proposed resolution:</b></p>
-<p>In 20.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.utility"> [lib.utility]</a>, paragraph 1 change the following
+<p>In 20.2 <a href="lib-utilities.html#lib.utility"> [lib.utility]</a>, paragraph 1 change the following
declaration of make_pair():</p>
<blockquote>
<pre>template &lt;class T1, class T2&gt; pair&lt;T1,T2&gt; make_pair(const T1&amp;, const T2&amp;);</pre>
@@ -4373,7 +4832,7 @@ declaration of make_pair():</p>
<blockquote>
<pre>template &lt;class T1, class T2&gt; pair&lt;T1,T2&gt; make_pair(T1, T2);</pre>
</blockquote>
-<p> In 20.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.pairs"> [lib.pairs]</a> paragraph 7 and the line before, change:</p>
+<p> In 20.2.2 <a href="lib-utilities.html#lib.pairs"> [lib.pairs]</a> paragraph 7 and the line before, change:</p>
<blockquote>
<pre>template &lt;class T1, class T2&gt;
pair&lt;T1, T2&gt; make_pair(const T1&amp; x, const T2&amp; y);</pre>
@@ -4391,7 +4850,7 @@ pair&lt;T1, T2&gt; make_pair(T1 x, T2 y);</pre>
</blockquote>
<p><b>Rationale:</b></p>
<p>Two potential fixes were suggested by Matt Austern and Dietmar
-Kühl, respectively, 1) overloading with array arguments, and 2) use of
+K&uuml;hl, respectively, 1) overloading with array arguments, and 2) use of
a reference_traits class with a specialization for arrays. Andy
Koenig suggested changing to pass by value. In discussion, it appeared
that this was a much smaller change to the standard that the other two
@@ -4399,19 +4858,18 @@ suggestions, and any efficiency concerns were more than offset by the
advantages of the solution. Two implementors reported that the
proposed resolution passed their test suites.</p>
<hr>
-<a name="182"><h3>182.&nbsp;Ambiguous references to size_t</h3></a><p>
-<b>Section:</b>&nbsp;17 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.library"> [lib.library]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Al Stevens&nbsp; <b>Date:</b>&nbsp;15 Aug 1999</p>
+<a name="182"><h3>182.&nbsp;Ambiguous references to size_t</h3></a><p><b>Section:</b>&nbsp;17 <a href="lib-intro.html#lib.library"> [lib.library]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Al Stevens&nbsp; <b>Date:</b>&nbsp;15 Aug 1999</p>
<p>Many references to <tt> size_t</tt> throughout the document
omit the <tt> std::</tt> namespace qualification.</p> <p>For
-example, 17.4.3.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.replacement.functions"> [lib.replacement.functions]</a> paragraph 2:</p>
+example, 17.4.3.4 <a href="lib-intro.html#lib.replacement.functions"> [lib.replacement.functions]</a> paragraph 2:</p>
<blockquote>
-<pre>&#8212; operator new(size_t)
-&#8212; operator new(size_t, const std::nothrow_t&amp;)
-&#8212; operator new[](size_t)
-&#8212; operator new[](size_t, const std::nothrow_t&amp;)</pre>
+<pre>&#151; operator new(size_t)
+&#151; operator new(size_t, const std::nothrow_t&amp;)
+&#151; operator new[](size_t)
+&#151; operator new[](size_t, const std::nothrow_t&amp;)</pre>
</blockquote>
<p><b>Proposed resolution:</b></p>
-<p> In 17.4.3.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.replacement.functions"> [lib.replacement.functions]</a> paragraph 2: replace:</p>
+<p> In 17.4.3.4 <a href="lib-intro.html#lib.replacement.functions"> [lib.replacement.functions]</a> paragraph 2: replace:</p>
<blockquote>
<p><tt> - operator new(size_t)<br>
- operator new(size_t, const std::nothrow_t&amp;)<br>
@@ -4474,8 +4932,7 @@ X::length(p): "size_t" by "std::size_t".</p>
&nbsp;&nbsp;&nbsp; typedef ptrdiff_t difference_type;<br>
by:<br>
&nbsp;&nbsp;&nbsp; typedef std::ptrdiff_t difference_type;</p>
-<p> In [lib.locale.ctype] 22.2.1.1 put namespace std { ...} around the
-declaration of template &lt;class charT&gt; class ctype.<br>
+<p> In [lib.locale.ctype] 22.2.1.1 put namespace std { ...} around the declaration of template &lt;class charT&gt; class ctype.<br>
<br>
In [lib.iterator.traits] 24.3.1, paragraph 2 put namespace std { ...} around the declaration of:<br>
<br>
@@ -4486,7 +4943,7 @@ declaration of template &lt;class charT&gt; class ctype.<br>
<p>The LWG believes correcting names like <tt>size_t</tt> and
<tt>ptrdiff_t</tt> to <tt>std::size_t</tt> and <tt>std::ptrdiff_t</tt>
to be essentially editorial. There there can't be another size_t or
-ptrdiff_t meant anyway because, according to 17.4.3.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.extern.types"> [lib.extern.types]</a>,</p>
+ptrdiff_t meant anyway because, according to 17.4.3.1.4 <a href="lib-intro.html#lib.extern.types"> [lib.extern.types]</a>,</p>
<blockquote>
For each type T from the Standard C library, the types ::T and std::T
@@ -4500,7 +4957,7 @@ Editor's authority to make this change.</p>
<p><i>[Post-Tokyo: Nico Josuttis provided the above wording at the
request of the LWG.]</i></p>
-<p><i>[Toronto: This is tangentially related to issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#229">229</a>, but only tangentially: the intent of this issue is to
+<p><i>[Toronto: This is tangentially related to issue <a href="lwg-defects.html#229">229</a>, but only tangentially: the intent of this issue is to
address use of the name <tt>size_t</tt> in contexts outside of
namespace std, such as in the description of <tt>::operator new</tt>.
The proposed changes should be reviewed to make sure they are
@@ -4510,9 +4967,8 @@ correct.]</i></p>
them to be correct.]</i></p>
<hr>
-<a name="183"><h3>183.&nbsp;I/O stream manipulators don't work for wide character streams</h3></a><p>
-<b>Section:</b>&nbsp;27.6.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.std.manip"> [lib.std.manip]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andy Sawyer&nbsp; <b>Date:</b>&nbsp;7 Jul 1999</p>
-<p>27.6.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.std.manip"> [lib.std.manip]</a> paragraph 3 says (clause numbering added for
+<a name="183"><h3>183.&nbsp;I/O stream manipulators don't work for wide character streams</h3></a><p><b>Section:</b>&nbsp;27.6.3 <a href="lib-iostreams.html#lib.std.manip"> [lib.std.manip]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andy Sawyer&nbsp; <b>Date:</b>&nbsp;7 Jul 1999</p>
+<p>27.6.3 <a href="lib-iostreams.html#lib.std.manip"> [lib.std.manip]</a> paragraph 3 says (clause numbering added for
exposition):</p>
<blockquote>
<p>Returns: An object s of unspecified type such that if [1] out is an (instance
@@ -4540,31 +4996,21 @@ ostreams.</p>
that the value of the expression is "the same specialization of
basic_ostream as out"&amp;</p>
<p><b>Proposed resolution:</b></p>
-<p>Replace section 27.6.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.std.manip"> [lib.std.manip]</a> except paragraph 1 with the
+<p>Replace section 27.6.3 <a href="lib-iostreams.html#lib.std.manip"> [lib.std.manip]</a> except paragraph 1 with the
following:</p>
<blockquote>
-<p>2- The type designated smanip in each of the following function
-descriptions is implementation-specified and may be different for each
+<p>2- The type designated smanip in each of the following function descriptions is implementation-specified and may be different for each
function.<br>
<br>
<tt>smanip resetiosflags(ios_base::fmtflags mask);</tt><br>
<br>
--3- Returns: An object s of unspecified type such that if out is an
-instance of basic_ostream&lt;charT,traits&gt; then the expression
-out&lt;&lt;s behaves
-as if f(s, mask) were called, or if in is an instance of
-basic_istream&lt;charT,traits&gt; then the expression in&gt;&gt;s
-behaves as if
+-3- Returns: An object s of unspecified type such that if out is an instance of basic_ostream&lt;charT,traits&gt; then the expression out&lt;&lt;s behaves
+as if f(s, mask) were called, or if in is an instance of basic_istream&lt;charT,traits&gt; then the expression in&gt;&gt;s behaves as if
f(s, mask) were called. The function f can be defined as:*<br>
<br>
-[Footnote: The expression cin &gt;&gt; resetiosflags(ios_base::skipws)
-clears ios_base::skipws in the format flags stored in the
-basic_istream&lt;charT,traits&gt; object cin (the same as cin &gt;&gt;
-noskipws), and the expression cout &lt;&lt;
-resetiosflags(ios_base::showbase) clears
-ios_base::showbase in the format flags stored in the
-basic_ostream&lt;charT,traits&gt; object cout (the same as cout
-&lt;&lt;
+[Footnote: The expression cin &gt;&gt; resetiosflags(ios_base::skipws) clears ios_base::skipws in the format flags stored in the
+basic_istream&lt;charT,traits&gt; object cin (the same as cin &gt;&gt; noskipws), and the expression cout &lt;&lt; resetiosflags(ios_base::showbase) clears
+ios_base::showbase in the format flags stored in the basic_ostream&lt;charT,traits&gt; object cout (the same as cout &lt;&lt;
noshowbase). --- end footnote]<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; <tt>ios_base&amp; f(ios_base&amp; str, ios_base::fmtflags mask)<br>
@@ -4579,12 +5025,8 @@ The expression in&gt;&gt;s has type basic_istream&lt;charT,traits&gt;&amp; and v
<br>
&nbsp;<tt>smanip setiosflags(ios_base::fmtflags mask);</tt><br>
<br>
--4- Returns: An object s of unspecified type such that if out is an
-instance of basic_ostream&lt;charT,traits&gt; then the expression
-out&lt;&lt;s behaves
-as if f(s, mask) were called, or if in is an instance of
-basic_istream&lt;charT,traits&gt; then the expression in&gt;&gt;s
-behaves as if f(s,
+-4- Returns: An object s of unspecified type such that if out is an instance of basic_ostream&lt;charT,traits&gt; then the expression out&lt;&lt;s behaves
+as if f(s, mask) were called, or if in is an instance of basic_istream&lt;charT,traits&gt; then the expression in&gt;&gt;s behaves as if f(s,
mask) were called. The function f can be defined as:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; <tt>ios_base&amp; f(ios_base&amp; str, ios_base::fmtflags mask)<br>
@@ -4599,12 +5041,8 @@ The expression in&gt;&gt;s has type basic_istream&lt;charT,traits&gt;&amp; and v
<br>
<tt>smanip setbase(int base);</tt><br>
<br>
--5- Returns: An object s of unspecified type such that if out is an
-instance of basic_ostream&lt;charT,traits&gt; then the expression
-out&lt;&lt;s behaves
-as if f(s, base) were called, or if in is an instance of
-basic_istream&lt;charT,traits&gt; then the expression in&gt;&gt;s
-behaves as if f(s,
+-5- Returns: An object s of unspecified type such that if out is an instance of basic_ostream&lt;charT,traits&gt; then the expression out&lt;&lt;s behaves
+as if f(s, base) were called, or if in is an instance of basic_istream&lt;charT,traits&gt; then the expression in&gt;&gt;s behaves as if f(s,
base) were called. The function f can be defined as:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; <tt>ios_base&amp; f(ios_base&amp; str, int base)<br>
@@ -4622,11 +5060,8 @@ The expression in&gt;&gt;s has type basic_istream&lt;charT,traits&gt;&amp; and v
<br>
<tt>smanip setfill(char_type c);<br>
</tt><br>
--6- Returns: An object s of unspecified type such that if out is (or is
-derived from) basic_ostream&lt;charT,traits&gt; and c has type charT
-then the
-expression out&lt;&lt;s behaves as if f(s, c) were called. The function
-f can be
+-6- Returns: An object s of unspecified type such that if out is (or is derived from) basic_ostream&lt;charT,traits&gt; and c has type charT then the
+expression out&lt;&lt;s behaves as if f(s, c) were called. The function f can be
defined as:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tt>template&lt;class charT, class traits&gt;<br>
@@ -4641,12 +5076,8 @@ The expression out&lt;&lt;s has type basic_ostream&lt;charT,traits&gt;&amp; and
<br>
<tt>smanip setprecision(int n);</tt><br>
<br>
--7- Returns: An object s of unspecified type such that if out is an
-instance of basic_ostream&lt;charT,traits&gt; then the expression
-out&lt;&lt;s behaves
-as if f(s, n) were called, or if in is an instance of
-basic_istream&lt;charT,traits&gt; then the expression in&gt;&gt;s
-behaves as if f(s, n)
+-7- Returns: An object s of unspecified type such that if out is an instance of basic_ostream&lt;charT,traits&gt; then the expression out&lt;&lt;s behaves
+as if f(s, n) were called, or if in is an instance of basic_istream&lt;charT,traits&gt; then the expression in&gt;&gt;s behaves as if f(s, n)
were called. The function f can be defined as:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tt>ios_base&amp; f(ios_base&amp; str, int n)<br>
@@ -4661,12 +5092,8 @@ The expression in&gt;&gt;s has type basic_istream&lt;charT,traits&gt;&amp; and v
.<br>
<tt>smanip setw(int n);<br>
</tt><br>
--8- Returns: An object s of unspecified type such that if out is an
-instance of basic_ostream&lt;charT,traits&gt; then the expression
-out&lt;&lt;s behaves
-as if f(s, n) were called, or if in is an instance of
-basic_istream&lt;charT,traits&gt; then the expression in&gt;&gt;s
-behaves as if f(s, n)
+-8- Returns: An object s of unspecified type such that if out is an instance of basic_ostream&lt;charT,traits&gt; then the expression out&lt;&lt;s behaves
+as if f(s, n) were called, or if in is an instance of basic_istream&lt;charT,traits&gt; then the expression in&gt;&gt;s behaves as if f(s, n)
were called. The function f can be defined as:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tt>ios_base&amp; f(ios_base&amp; str, int n)<br>
@@ -4686,20 +5113,19 @@ in.
<p><i>[Kona: Andy Sawyer and Beman Dawes will work to improve the wording of
the proposed resolution.]</i></p>
-<p><i>[Tokyo - The LWG noted that issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#216">216</a> involves
+<p><i>[Tokyo - The LWG noted that issue <a href="lwg-closed.html#216">216</a> involves
the same paragraphs.]</i></p>
<p><i>[Post-Tokyo: The issues list maintainer combined the proposed
-resolution of this issue with the proposed resolution for issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#216">216</a> as they both involved the same paragraphs, and were so
+resolution of this issue with the proposed resolution for issue <a href="lwg-closed.html#216">216</a> as they both involved the same paragraphs, and were so
intertwined that dealing with them separately appear fraught with
error. The full text was supplied by Bill Plauger; it was cross
checked against changes supplied by Andy Sawyer. It should be further
checked by the LWG.]</i></p>
<hr>
-<a name="184"><h3>184.&nbsp;numeric_limits&lt;bool&gt; wording problems</h3></a><p>
-<b>Section:</b>&nbsp;18.2.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.numeric.special"> [lib.numeric.special]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Gabriel Dos Reis&nbsp; <b>Date:</b>&nbsp;21 Jul 1999</p>
+<a name="184"><h3>184.&nbsp;numeric_limits&lt;bool&gt; wording problems</h3></a><p><b>Section:</b>&nbsp;18.2.1.5 <a href="lib-support.html#lib.numeric.special"> [lib.numeric.special]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Gabriel Dos Reis&nbsp; <b>Date:</b>&nbsp;21 Jul 1999</p>
<p>bools are defined by the standard to be of integer types, as per
-3.9.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/basic.html#basic.fundamental"> [basic.fundamental]</a> paragraph 7. However "integer types"
+3.9.1 <a href="basic.html#basic.fundamental"> [basic.fundamental]</a> paragraph 7. However "integer types"
seems to have a special meaning for the author of 18.2. The net effect
is an unclear and confusing specification for
numeric_limits&lt;bool&gt; as evidenced below.</p>
@@ -4737,7 +5163,7 @@ types with base representation other than 2.</p>
<p>Furthermore, numeric_limits&lt;bool&gt;::is_modulo and
numeric_limits&lt;bool&gt;::is_signed have similar problems.</p>
<p><b>Proposed resolution:</b></p>
-<p>Append to the end of 18.2.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.numeric.special"> [lib.numeric.special]</a>:</p>
+<p>Append to the end of 18.2.1.5 <a href="lib-support.html#lib.numeric.special"> [lib.numeric.special]</a>:</p>
<blockquote>
<p>The specialization for bool shall be provided as follows:</p>
<pre> namespace std {
@@ -4789,9 +5215,8 @@ resolution.]</i></p>
<p><i>[Post-Tokyo:&nbsp; At the request of the LWG in Tokyo, Nico
Josuttis provided the above wording.]</i></p>
<hr>
-<a name="185"><h3>185.&nbsp;Questionable use of term "inline"</h3></a><p>
-<b>Section:</b>&nbsp;20.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.function.objects"> [lib.function.objects]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;UK Panel&nbsp; <b>Date:</b>&nbsp;26 Jul 1999</p>
-<p>Paragraph 4 of 20.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.function.objects"> [lib.function.objects]</a> says:</p>
+<a name="185"><h3>185.&nbsp;Questionable use of term "inline"</h3></a><p><b>Section:</b>&nbsp;20.3 <a href="lib-utilities.html#lib.function.objects"> [lib.function.objects]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;UK Panel&nbsp; <b>Date:</b>&nbsp;26 Jul 1999</p>
+<p>Paragraph 4 of 20.3 <a href="lib-utilities.html#lib.function.objects"> [lib.function.objects]</a> says:</p>
<blockquote>
<p>&nbsp;[Example: To negate every element of a: transform(a.begin(), a.end(),
a.begin(), negate&lt;double&gt;()); The corresponding functions will inline
@@ -4816,17 +5241,17 @@ any "inlining" will take place in this case.</p>
<p>Thus the example "mandates" behavior that is explicitly
not required elsewhere.</p>
<p><b>Proposed resolution:</b></p>
-<p>In 20.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.function.objects"> [lib.function.objects]</a> paragraph 1, remove the sentence:</p>
+<p>In 20.3 <a href="lib-utilities.html#lib.function.objects"> [lib.function.objects]</a> paragraph 1, remove the sentence:</p>
<blockquote>
<p>They are important for the effective use of the library.</p>
</blockquote>
-<p>Remove 20.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.function.objects"> [lib.function.objects]</a> paragraph 2, which reads:</p>
+<p>Remove 20.3 <a href="lib-utilities.html#lib.function.objects"> [lib.function.objects]</a> paragraph 2, which reads:</p>
<blockquote>
<p> Using function objects together with function templates
increases the expressive power of the library as well as making the
resulting code much more efficient.</p>
</blockquote>
-<p>In 20.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.function.objects"> [lib.function.objects]</a> paragraph 4, remove the sentence:</p>
+<p>In 20.3 <a href="lib-utilities.html#lib.function.objects"> [lib.function.objects]</a> paragraph 4, remove the sentence:</p>
<blockquote>
<p>The corresponding functions will inline the addition and the
negation.</p>
@@ -4835,9 +5260,8 @@ not required elsewhere.</p>
<p><i>[Kona: The LWG agreed there was a defect.]</i></p>
<p><i>[Tokyo: The LWG crafted the proposed resolution.]</i></p>
<hr>
-<a name="186"><h3>186.&nbsp;bitset::set() second parameter should be bool</h3></a><p>
-<b>Section:</b>&nbsp;23.3.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.bitset.members"> [lib.bitset.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Darin Adler&nbsp; <b>Date:</b>&nbsp;13 Aug 1999</p>
-<p>In section 23.3.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.bitset.members"> [lib.bitset.members]</a>, paragraph 13 defines the
+<a name="186"><h3>186.&nbsp;bitset::set() second parameter should be bool</h3></a><p><b>Section:</b>&nbsp;23.3.5.2 <a href="lib-containers.html#lib.bitset.members"> [lib.bitset.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Darin Adler&nbsp; <b>Date:</b>&nbsp;13 Aug 1999</p>
+<p>In section 23.3.5.2 <a href="lib-containers.html#lib.bitset.members"> [lib.bitset.members]</a>, paragraph 13 defines the
bitset::set operation to take a second parameter of type int. The
function tests whether this value is non-zero to determine whether to
set the bit to true or false. The type of this second parameter should
@@ -4847,7 +5271,7 @@ possible to slice an integer that's larger than an int. This can't
happen with bool, since conversion to bool has the semantic of
translating 0 to false and any non-zero value to true.</p>
<p><b>Proposed resolution:</b></p>
-<p>In 23.3.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.template.bitset"> [lib.template.bitset]</a> Para 1 Replace:</p>
+<p>In 23.3.5 <a href="lib-containers.html#lib.template.bitset"> [lib.template.bitset]</a> Para 1 Replace:</p>
<blockquote>
<pre>bitset&lt;N&gt;&amp; set(size_t pos, int val = true ); </pre>
</blockquote>
@@ -4855,7 +5279,7 @@ translating 0 to false and any non-zero value to true.</p>
<blockquote>
<pre>bitset&lt;N&gt;&amp; set(size_t pos, bool val = true );</pre>
</blockquote>
-<p>In 23.3.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.bitset.members"> [lib.bitset.members]</a> Para 12(.5) Replace:</p>
+<p>In 23.3.5.2 <a href="lib-containers.html#lib.bitset.members"> [lib.bitset.members]</a> Para 12(.5) Replace:</p>
<blockquote>
<pre>bitset&lt;N&gt;&amp; set(size_t pos, int val = 1 );</pre>
</blockquote>
@@ -4868,15 +5292,13 @@ translating 0 to false and any non-zero value to true.</p>
on better P/R wording.]</i></p>
<p><i>[Post-Tokyo: Andy provided the above wording.]</i></p>
<p><b>Rationale:</b></p>
-<p>
-<tt>bool</tt> is a better choice. It is believed that binary
+<p><tt>bool</tt> is a better choice. It is believed that binary
compatibility is not an issue, because this member function is
usually implemented as <tt>inline</tt>, and because it is already
the case that users cannot rely on the type of a pointer to a
nonvirtual member of a standard library class.</p>
<hr>
-<a name="187"><h3>187.&nbsp;iter_swap underspecified</h3></a><p>
-<b>Section:</b>&nbsp;25.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.swap"> [lib.alg.swap]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;14 Aug 1999</p>
+<a name="187"><h3>187.&nbsp;iter_swap underspecified</h3></a><p><b>Section:</b>&nbsp;25.2.2 <a href="lib-algorithms.html#lib.alg.swap"> [lib.alg.swap]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;14 Aug 1999</p>
<p>The description of iter_swap in 25.2.2 paragraph 7,says that it
``exchanges the values'' of the objects to which two iterators
refer.<br> <br> What it doesn't say is whether it does so using swap
@@ -4918,8 +5340,7 @@ which are no longer permitted.]</i></p>
</blockquote>
<p>to</p>
<blockquote>
-<p>
-<tt>swap(*a, *b)</tt>.</p>
+<p><tt>swap(*a, *b)</tt>.</p>
</blockquote>
<p><b>Rationale:</b></p>
@@ -4933,8 +5354,7 @@ much more than exchanging the two iterators' values: it would change
predecessor/successor relationships, possibly moving the iterator from
one list to another. That would surely be inappropriate.</p>
<hr>
-<a name="189"><h3>189.&nbsp;setprecision() not specified correctly</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.fmtflags.state"> [lib.fmtflags.state]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;25 Aug 1999</p>
+<a name="189"><h3>189.&nbsp;setprecision() not specified correctly</h3></a><p><b>Section:</b>&nbsp;27.4.2.2 <a href="lib-iostreams.html#lib.fmtflags.state"> [lib.fmtflags.state]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;25 Aug 1999</p>
<p>27.4.2.2 paragraph 9 claims that setprecision() sets the precision,
and includes a parenthetical note saying that it is the number of
digits after the decimal point.<br>
@@ -4947,11 +5367,10 @@ point.<br>
I would like the committee to look at the definition carefully and
correct the statement in 27.4.2.2</p>
<p><b>Proposed resolution:</b></p>
-<p>Remove from 27.4.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.fmtflags.state"> [lib.fmtflags.state]</a>, paragraph 9, the text
+<p>Remove from 27.4.2.2 <a href="lib-iostreams.html#lib.fmtflags.state"> [lib.fmtflags.state]</a>, paragraph 9, the text
"(number of digits after the decimal point)".</p>
<hr>
-<a name="193"><h3>193.&nbsp;Heap operations description incorrect</h3></a><p>
-<b>Section:</b>&nbsp;25.3.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.heap.operations"> [lib.alg.heap.operations]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Markus Mauhart&nbsp; <b>Date:</b>&nbsp;24 Sep 1999</p>
+<a name="193"><h3>193.&nbsp;Heap operations description incorrect</h3></a><p><b>Section:</b>&nbsp;25.3.6 <a href="lib-algorithms.html#lib.alg.heap.operations"> [lib.alg.heap.operations]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Markus Mauhart&nbsp; <b>Date:</b>&nbsp;24 Sep 1999</p>
<p>25.3.6 [lib.alg.heap.operations] states two key properties of a heap [a,b), the first of them
is<br>
<br>
@@ -4963,34 +5382,29 @@ resolution.</p>
<blockquote>
<p>A-"part of largest equivalence class" instead of "largest", cause 25.3
[lib.alg.sorting] asserts "strict weak ordering" for all its sub clauses.</p>
- <p>B-Take
-'an oldest' from that equivalence class, otherwise the heap functions
-could not be used for a priority queue as explained in 23.2.3.2.2
-[lib.priqueue.members] (where I assume that a "priority queue" respects
-priority AND time).</p>
+ <p>B-Take 'an oldest' from that equivalence class, otherwise the heap functions could not be used for a
+ priority queue as explained in 23.2.3.2.2 [lib.priqueue.members] (where I assume that a "priority queue" respects priority AND time).</p>
</blockquote>
<p><b>Proposed resolution:</b></p>
-<p>Change 25.3.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.heap.operations"> [lib.alg.heap.operations]</a> property (1) from:</p>
+<p>Change 25.3.6 <a href="lib-algorithms.html#lib.alg.heap.operations"> [lib.alg.heap.operations]</a> property (1) from:</p>
<blockquote>
<p>(1) *a is the largest element</p>
</blockquote>
<p>to:</p>
<blockquote>
- <p>(1) There is no element greater than <tt>*a</tt>
-</p>
+ <p>(1) There is no element greater than <tt>*a</tt></p>
</blockquote>
<hr>
-<a name="195"><h3>195.&nbsp;Should <tt>basic_istream::sentry</tt>'s constructor ever set eofbit?</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;13 Oct 1999</p>
+<a name="195"><h3>195.&nbsp;Should <tt>basic_istream::sentry</tt>'s constructor ever set eofbit?</h3></a><p><b>Section:</b>&nbsp;27.6.1.1.2 <a href="lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;13 Oct 1999</p>
<p>Suppose that <tt>is.flags() &amp; ios_base::skipws</tt> is nonzero.
What should <tt>basic_istream&lt;&gt;::sentry</tt>'s constructor do if it
reaches eof while skipping whitespace? 27.6.1.1.2/5 suggests it
should set failbit. Should it set eofbit as well? The standard
doesn't seem to answer that question.</p>
-<p>On the one hand, nothing in 27.6.1.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a> says that
+<p>On the one hand, nothing in 27.6.1.1.2 <a href="lib-iostreams.html#lib.istream::sentry"> [lib.istream::sentry]</a> says that
<tt>basic_istream&lt;&gt;::sentry</tt> should ever set eofbit. On the
-other hand, 27.6.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream"> [lib.istream]</a> paragraph 4 says that if
+other hand, 27.6.1.1 <a href="lib-iostreams.html#lib.istream"> [lib.istream]</a> paragraph 4 says that if
extraction from a <tt>streambuf</tt> "returns
<tt>traits::eof()</tt>, then the input function, except as explicitly
noted otherwise, completes its actions and does
@@ -5029,8 +5443,7 @@ returns <tt>traits::eof()</tt>, the function calls
</p>
</blockquote>
<hr>
-<a name="198"><h3>198.&nbsp;Validity of pointers and references unspecified after iterator destruction</h3></a><p>
-<b>Section:</b>&nbsp;24.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;3 Nov 1999</p>
+<a name="198"><h3>198.&nbsp;Validity of pointers and references unspecified after iterator destruction</h3></a><p><b>Section:</b>&nbsp;24.1 <a href="lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;3 Nov 1999</p>
<p>
Is a pointer or reference obtained from an iterator still valid after
destruction of the iterator?
@@ -5040,7 +5453,8 @@ Is a pointer or reference obtained from an iterator still valid after the value
of the iterator changes?
</p>
<blockquote>
-<pre>#include &lt;iostream&gt;
+<pre>
+#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;iterator&gt;
@@ -5077,14 +5491,14 @@ elements of containers.</p>
<p>The standard itself assumes that pointers and references obtained
from an iterator are still valid after iterator destruction or
-change. The definition of reverse_iterator::operator*(), 24.4.1.3.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.reverse.iter.op.star"> [lib.reverse.iter.op.star]</a>, which returns a reference, defines
+change. The definition of reverse_iterator::operator*(), 24.4.1.3.3 <a href="lib-iterators.html#lib.reverse.iter.op.star"> [lib.reverse.iter.op.star]</a>, which returns a reference, defines
effects:</p>
<blockquote>
<pre>Iterator tmp = current;
return *--tmp;</pre>
</blockquote>
-<p>The definition of reverse_iterator::operator-&gt;(), 24.4.1.3.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.reverse.iter.opref"> [lib.reverse.iter.opref]</a>, which returns a pointer, defines effects:</p>
+<p>The definition of reverse_iterator::operator-&gt;(), 24.4.1.3.4 <a href="lib-iterators.html#lib.reverse.iter.opref"> [lib.reverse.iter.opref]</a>, which returns a pointer, defines effects:</p>
<blockquote>
<pre>return &amp;(operator*());</pre>
</blockquote>
@@ -5095,17 +5509,18 @@ explicitly. This will also reduce the chance of user code breaking
unexpectedly when porting to a different standard library
implementation.</p>
<p><b>Proposed resolution:</b></p>
-<p>Add a new paragraph to 24.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>:</p>
+<p>Add a new paragraph to 24.1 <a href="lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>:</p>
<blockquote>
Destruction of an iterator may invalidate pointers and references
previously obtained from that iterator.
</blockquote>
-<p>Replace paragraph 1 of 24.4.1.3.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.reverse.iter.op.star"> [lib.reverse.iter.op.star]</a> with:</p>
+<p>Replace paragraph 1 of 24.4.1.3.3 <a href="lib-iterators.html#lib.reverse.iter.op.star"> [lib.reverse.iter.op.star]</a> with:</p>
<blockquote>
<p><b>Effects:</b></p>
-<pre> this-&gt;tmp = current;
+<pre>
+ this-&gt;tmp = current;
--this-&gt;tmp;
return *this-&gt;tmp;
</pre>
@@ -5114,7 +5529,7 @@ previously obtained from that iterator.
[<i>Note:</i> This operation must use an auxiliary member variable,
rather than a temporary variable, to avoid returning a reference that
persists beyond the lifetime of its associated iterator. (See
-24.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>.) The name of this member variable is shown for
+24.1 <a href="lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>.) The name of this member variable is shown for
exposition only. <i>--end note</i>]
</p>
</blockquote>
@@ -5130,7 +5545,7 @@ reformulated yet again to reflect this reality.]</i></p>
assumes its underlying iterator has persistent pointers and
references. Andy Koenig pointed out that it is possible to rewrite
reverse_iterator so that it no longer makes such an assupmption.
-However, this issue is related to issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#299">299</a>. If we
+However, this issue is related to issue <a href="lwg-active.html#299">299</a>. If we
decide it is intentional that <tt>p[n]</tt> may return by value
instead of reference when <tt>p</tt> is a Random Access Iterator,
other changes in reverse_iterator will be necessary.]</i></p>
@@ -5153,8 +5568,7 @@ Clause 23 should be reviewed to make sure that guarantees for
predefined iterators are as strong as users expect.</p>
<hr>
-<a name="199"><h3>199.&nbsp;What does <tt>allocate(0)</tt> return?</h3></a><p>
-<b>Section:</b>&nbsp;20.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;19 Nov 1999</p>
+<a name="199"><h3>199.&nbsp;What does <tt>allocate(0)</tt> return?</h3></a><p><b>Section:</b>&nbsp;20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;19 Nov 1999</p>
<p>
Suppose that <tt>A</tt> is a class that conforms to the
Allocator requirements of Table 32, and <tt>a</tt> is an
@@ -5176,8 +5590,7 @@ representation. Since this already implies special case code, it
would be over-specification to mandate the return value.
</p>
<hr>
-<a name="200"><h3>200.&nbsp;Forward iterator requirements don't allow constant iterators</h3></a><p>
-<b>Section:</b>&nbsp;24.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.forward.iterators"> [lib.forward.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;19 Nov 1999</p>
+<a name="200"><h3>200.&nbsp;Forward iterator requirements don't allow constant iterators</h3></a><p><b>Section:</b>&nbsp;24.1.3 <a href="lib-iterators.html#lib.forward.iterators"> [lib.forward.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;19 Nov 1999</p>
<p>
In table 74, the return type of the expression <tt>*a</tt> is given
as <tt>T&amp;</tt>, where <tt>T</tt> is the iterator's value type.
@@ -5199,7 +5612,7 @@ otherwise <tt>const U&amp;</tt>".
<p><i>[Tokyo: The LWG believes this is the tip of a larger iceberg;
there are multiple const problems with the STL portion of the library
and that these should be addressed as a single package.&nbsp; Note
-that issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#180">180</a> has already been declared NAD Future for
+that issue <a href="lwg-closed.html#180">180</a> has already been declared NAD Future for
that very reason.]</i></p>
<p><i>[Redmond: the LWG thinks this is separable from other constness
@@ -5209,8 +5622,7 @@ modified: the original version only discussed *a. It was pointed out
that we also need to worry about *r++ and a-&gt;m.]</i></p>
<hr>
-<a name="202"><h3>202.&nbsp;unique() effects unclear when predicate not an equivalence relation</h3></a><p>
-<b>Section:</b>&nbsp;25.2.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.unique"> [lib.alg.unique]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;13 Jan 2000</p>
+<a name="202"><h3>202.&nbsp;unique() effects unclear when predicate not an equivalence relation</h3></a><p><b>Section:</b>&nbsp;25.2.8 <a href="lib-algorithms.html#lib.alg.unique"> [lib.alg.unique]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andrew Koenig&nbsp; <b>Date:</b>&nbsp;13 Jan 2000</p>
<p>
What should unique() do if you give it a predicate that is not an
equivalence relation? There are at least two plausible answers:
@@ -5277,7 +5689,7 @@ In fact, the SGI implementation of unique() does neither: It yields 1,
3, 7.
</p>
<p><b>Proposed resolution:</b></p>
-<p>Change 25.2.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.unique"> [lib.alg.unique]</a> paragraph 1 to:</p>
+<p>Change 25.2.8 <a href="lib-algorithms.html#lib.alg.unique"> [lib.alg.unique]</a> paragraph 1 to:</p>
<blockquote>
For a nonempty range, eliminates all but the first element from every
consecutive group of equivalent elements referred to by the iterator
@@ -5301,14 +5713,14 @@ pointed out that "i-1" is incorrect, since "i" can refer to the first
iterator in the range. Matt provided wording to address this
problem.]</i></p>
-<p><i>[Curaçao: The LWG changed "... the range (first,
+<p><i>[Cura&ccedil;ao: The LWG changed "... the range (first,
last)..." to "... the range [first+1, last)..." for
clarity. They considered this change close enough to editorial to not
require another round of review.]</i></p>
<p><b>Rationale:</b></p>
<p>The LWG also considered an alternative resolution: change
-25.2.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.unique"> [lib.alg.unique]</a> paragraph 1 to:</p>
+25.2.8 <a href="lib-algorithms.html#lib.alg.unique"> [lib.alg.unique]</a> paragraph 1 to:</p>
<blockquote>
For a nonempty range, eliminates all but the first element from every
@@ -5331,8 +5743,7 @@ that the behavior of unique() for a non-equivalence relation is
specified. Both resolutions are consistent with the behavior of
existing implementations.</p>
<hr>
-<a name="208"><h3>208.&nbsp;Unnecessary restriction on past-the-end iterators</h3></a><p>
-<b>Section:</b>&nbsp;24.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Stephen Cleary&nbsp; <b>Date:</b>&nbsp;02 Feb 2000</p>
+<a name="208"><h3>208.&nbsp;Unnecessary restriction on past-the-end iterators</h3></a><p><b>Section:</b>&nbsp;24.1 <a href="lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Stephen Cleary&nbsp; <b>Date:</b>&nbsp;02 Feb 2000</p>
<p>In 24.1 paragraph 5, it is stated ". . . Dereferenceable and
past-the-end values are always non-singular."</p>
<p>This places an unnecessary restriction on past-the-end iterators for
@@ -5344,7 +5755,7 @@ without a "footer" node.</p>
<p>This would have an impact on existing code that expects past-the-end
iterators obtained from different (generic) containers being not equal.</p>
<p><b>Proposed resolution:</b></p>
-<p>Change 24.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a> paragraph 5, the last sentence, from:</p>
+<p>Change 24.1 <a href="lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a> paragraph 5, the last sentence, from:</p>
<blockquote>
<p>Dereferenceable and past-the-end values are always non-singular.</p>
</blockquote>
@@ -5358,9 +5769,8 @@ zero-length vectors, null pointers are perfectly reasonable past-the-end
iterators. Null pointers are singular.
</p>
<hr>
-<a name="209"><h3>209.&nbsp;basic_string declarations inconsistent</h3></a><p>
-<b>Section:</b>&nbsp;21.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.basic.string"> [lib.basic.string]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Igor Stauder&nbsp; <b>Date:</b>&nbsp;11 Feb 2000</p>
-<p>In Section 21.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.basic.string"> [lib.basic.string]</a> the basic_string member function
+<a name="209"><h3>209.&nbsp;basic_string declarations inconsistent</h3></a><p><b>Section:</b>&nbsp;21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Igor Stauder&nbsp; <b>Date:</b>&nbsp;11 Feb 2000</p>
+<p>In Section 21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a> the basic_string member function
declarations use a consistent style except for the following functions:</p>
<blockquote>
<pre>void push_back(const charT);
@@ -5373,7 +5783,7 @@ not by reference - should be charT or const charT&amp; )<br>
- swap: redundant use of template parameters in argument
basic_string&lt;charT,traits,Allocator&gt;&amp;</p>
<p><b>Proposed resolution:</b></p>
-<p>In Section 21.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.basic.string"> [lib.basic.string]</a> change the basic_string member
+<p>In Section 21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a> change the basic_string member
function declarations push_back, assign, and swap to:</p>
<blockquote>
<pre>void push_back(charT c);
@@ -5388,29 +5798,25 @@ above. The LWG felt that this was sufficient reason to merit the
change.
</p>
<hr>
-<a name="210"></a><h3><a name="210">210.&nbsp;distance first and last confused</a></h3><p>
-<b>Section:</b>&nbsp;25 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Lisa Lippincott&nbsp; <b>Date:</b>&nbsp;15 Feb 2000</p>
-<p>In paragraph 9 of section 25 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a>, it is written:</p>
+<a name="210"><h3>210.&nbsp;distance first and last confused</h3></a><p><b>Section:</b>&nbsp;25 <a href="lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Lisa Lippincott&nbsp; <b>Date:</b>&nbsp;15 Feb 2000</p>
+<p>In paragraph 9 of section 25 <a href="lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a>, it is written:</p>
<blockquote>
<p> In the description of the algorithms operators + and - are used
for some of the iterator categories for which they do not have to
be defined. In these cases the semantics of [...] a-b is the same
as of<br>
<br>
- &nbsp;&nbsp;&nbsp;&nbsp; <tt>return distance(a, b);</tt>
-</p>
+ &nbsp;&nbsp;&nbsp;&nbsp; <tt>return distance(a, b);</tt></p>
</blockquote>
<p><b>Proposed resolution:</b></p>
-<p>On the last line of paragraph 9 of section 25 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a> change
-<tt>"a-b"</tt> to <tt>"b-a".</tt>
-</p>
+<p>On the last line of paragraph 9 of section 25 <a href="lib-algorithms.html#lib.algorithms"> [lib.algorithms]</a> change
+<tt>"a-b"</tt> to <tt>"b-a".</tt></p>
<p><b>Rationale:</b></p>
<p>There are two ways to fix the defect; change the description to b-a
or change the return to distance(b,a). The LWG preferred the
former for consistency.</p>
<hr>
-<a name="211"><h3>211.&nbsp;operator&gt;&gt;(istream&amp;, string&amp;) doesn't set failbit</h3></a><p>
-<b>Section:</b>&nbsp;21.3.7.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Scott Snyder&nbsp; <b>Date:</b>&nbsp;4 Feb 2000</p>
+<a name="211"><h3>211.&nbsp;operator&gt;&gt;(istream&amp;, string&amp;) doesn't set failbit</h3></a><p><b>Section:</b>&nbsp;21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Scott Snyder&nbsp; <b>Date:</b>&nbsp;4 Feb 2000</p>
<p>The description of the stream extraction operator for std::string (section
21.3.7.9 [lib.string.io]) does not contain a requirement that failbit be set in
the case that the operator fails to extract any characters from the input
@@ -5424,12 +5830,12 @@ while (is &gt;&gt; str) ... ;</pre>
</blockquote>
<p>(which tests failbit) is not required to terminate at EOF.</p>
<p>Furthermore, this is inconsistent with other extraction operators,
-which do include this requirement. (See sections 27.6.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.formatted"> [lib.istream.formatted]</a> and 27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>), where this
+which do include this requirement. (See sections 27.6.1.2 <a href="lib-iostreams.html#lib.istream.formatted"> [lib.istream.formatted]</a> and 27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>), where this
requirement is present, either explicitly or implicitly, for the
extraction operators. It is also present explicitly in the description
-of getline (istream&amp;, string&amp;, charT) in section 21.3.7.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.io"> [lib.string.io]</a> paragraph 8.)</p>
+of getline (istream&amp;, string&amp;, charT) in section 21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a> paragraph 8.)</p>
<p><b>Proposed resolution:</b></p>
-<p>Insert new paragraph after paragraph 2 in section 21.3.7.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.io"> [lib.string.io]</a>:</p>
+<p>Insert new paragraph after paragraph 2 in section 21.3.7.9 <a href="lib-strings.html#lib.string.io"> [lib.string.io]</a>:</p>
<blockquote>
<p>If the function extracts no characters, it calls
@@ -5437,14 +5843,13 @@ is.setstate(ios::failbit) which may throw ios_base::failure
(27.4.4.3).</p>
</blockquote>
<hr>
-<a name="212"><h3>212.&nbsp;Empty range behavior unclear for several algorithms</h3></a><p>
-<b>Section:</b>&nbsp;25.3.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.min.max"> [lib.alg.min.max]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;26 Feb 2000</p>
+<a name="212"><h3>212.&nbsp;Empty range behavior unclear for several algorithms</h3></a><p><b>Section:</b>&nbsp;25.3.7 <a href="lib-algorithms.html#lib.alg.min.max"> [lib.alg.min.max]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Nico Josuttis&nbsp; <b>Date:</b>&nbsp;26 Feb 2000</p>
<p>The standard doesn't specify what min_element() and max_element() shall
return if the range is empty (first equals last). The usual implementations
return last. This problem seems also apply to partition(), stable_partition(),
next_permutation(), and prev_permutation().</p>
<p><b>Proposed resolution:</b></p>
-<p>In 25.3.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.min.max"> [lib.alg.min.max]</a> - Minimum and maximum, paragraphs 7 and
+<p>In 25.3.7 <a href="lib-algorithms.html#lib.alg.min.max"> [lib.alg.min.max]</a> - Minimum and maximum, paragraphs 7 and
9, append: Returns last if first==last.</p>
<p><b>Rationale:</b></p>
<p>The LWG looked in some detail at all of the above mentioned
@@ -5452,8 +5857,7 @@ algorithms, but believes that except for min_element() and
max_element() it is already clear that last is returned if first ==
last.</p>
<hr>
-<a name="214"><h3>214.&nbsp;set::find() missing const overload</h3></a><p>
-<b>Section:</b>&nbsp;23.3.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.set"> [lib.set]</a>, 23.3.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.multiset"> [lib.multiset]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;28 Feb 2000</p>
+<a name="214"><h3>214.&nbsp;set::find() missing const overload</h3></a><p><b>Section:</b>&nbsp;23.3.3 <a href="lib-containers.html#lib.set"> [lib.set]</a>, 23.3.4 <a href="lib-containers.html#lib.multiset"> [lib.multiset]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;28 Feb 2000</p>
<p>The specification for the associative container requirements in
Table 69 state that the find member function should "return
iterator; const_iterator for constant a". The map and multimap
@@ -5464,7 +5868,7 @@ and multiset do not, all they have is:</p>
</blockquote>
<p><b>Proposed resolution:</b></p>
<p>Change the prototypes for find(), lower_bound(), upper_bound(), and
-equal_range() in section 23.3.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.set"> [lib.set]</a> and section 23.3.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.multiset"> [lib.multiset]</a> to each have two overloads:</p>
+equal_range() in section 23.3.3 <a href="lib-containers.html#lib.set"> [lib.set]</a> and section 23.3.4 <a href="lib-containers.html#lib.multiset"> [lib.multiset]</a> to each have two overloads:</p>
<blockquote>
<pre>iterator find(const key_type &amp; x);
const_iterator find(const key_type &amp; x) const;</pre>
@@ -5480,8 +5884,7 @@ pair&lt;const_iterator, const_iterator&gt; equal_range(const key_type &amp; x) c
extending the proposed resolution to lower_bound, upper_bound, and
equal_range.]</i></p>
<hr>
-<a name="217"><h3>217.&nbsp;Facets example (Classifying Japanese characters) contains errors</h3></a><p>
-<b>Section:</b>&nbsp;22.2.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;29 Feb 2000</p>
+<a name="217"><h3>217.&nbsp;Facets example (Classifying Japanese characters) contains errors</h3></a><p><b>Section:</b>&nbsp;22.2.8 <a href="lib-locales.html#lib.facets.examples"> [lib.facets.examples]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;29 Feb 2000</p>
<p>The example in 22.2.8, paragraph 11 contains the following errors:</p>
<p>1) The member function `My::JCtype::is_kanji()' is non-const; the function
must be const in order for it to be callable on a const object (a reference to
@@ -5524,8 +5927,7 @@ declared above.</pre>
return 0;
}</pre>
<hr>
-<a name="220"><h3>220.&nbsp;~ios_base() usage valid?</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios.base.cons"> [lib.ios.base.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Jonathan Schilling, Howard Hinnant&nbsp; <b>Date:</b>&nbsp;13 Mar 2000</p>
+<a name="220"><h3>220.&nbsp;~ios_base() usage valid?</h3></a><p><b>Section:</b>&nbsp;27.4.2.7 <a href="lib-iostreams.html#lib.ios.base.cons"> [lib.ios.base.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Jonathan Schilling, Howard Hinnant&nbsp; <b>Date:</b>&nbsp;13 Mar 2000</p>
<p>The pre-conditions for the ios_base destructor are described in 27.4.2.7
paragraph 2:</p>
<blockquote>
@@ -5561,14 +5963,12 @@ behavior.</p>
</blockquote>
<p>to</p>
<blockquote>
- <p>Effects: Each ios_base member has an indeterminate
-value after construction. These members must be initialized by calling
-basic_ios::init. If an ios_base object is destroyed before these
-initializations have taken place, the behavior is undefined.</p>
+ <p>Effects: Each ios_base member has an indeterminate value after
+ construction. These members must be initialized by calling basic_ios::init. If an ios_base object is destroyed before these initializations
+ have taken place, the behavior is undefined.</p>
</blockquote>
<hr>
-<a name="221"><h3>221.&nbsp;num_get&lt;&gt;::do_get stage 2 processing broken</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;14 Mar 2000</p>
+<a name="221"><h3>221.&nbsp;num_get&lt;&gt;::do_get stage 2 processing broken</h3></a><p><b>Section:</b>&nbsp;22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;14 Mar 2000</p>
<p>Stage 2 processing of numeric conversion is broken.</p>
<p>Table 55 in 22.2.2.1.2 says that when basefield is 0 the integral
@@ -5601,8 +6001,7 @@ This technique has the consequence that alternate representations
of digits will not be recognized. This design decision was made
deliberately, with full knowledge of that limitation.</p>
<hr>
-<a name="222"><h3>222.&nbsp;Are throw clauses necessary if a throw is already implied by the effects clause?</h3></a><p>
-<b>Section:</b>&nbsp;17.3.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.structure.specifications"> [lib.structure.specifications]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;17 Mar 2000</p>
+<a name="222"><h3>222.&nbsp;Are throw clauses necessary if a throw is already implied by the effects clause?</h3></a><p><b>Section:</b>&nbsp;17.3.1.3 <a href="lib-intro.html#lib.structure.specifications"> [lib.structure.specifications]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;17 Mar 2000</p>
<p>Section 21.3.6.8 describes the basic_string::compare function this way:</p>
<blockquote>
<pre>21.3.6.8 - basic_string::compare [lib.string::compare]
@@ -5618,7 +6017,7 @@ int compare(size_type pos1, size_type n1,
</blockquote>
<p>and the constructor that's implicitly called by the above is
defined to throw an out-of-range exception if pos &gt; str.size(). See
-section 21.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.cons"> [lib.string.cons]</a> paragraph 4.</p>
+section 21.3.1 <a href="lib-strings.html#lib.string.cons"> [lib.string.cons]</a> paragraph 4.</p>
<p>On the other hand, the compare function descriptions themselves don't have
"Throws: " clauses and according to 17.3.1.3, paragraph 3, elements
@@ -5627,7 +6026,7 @@ that do not apply to a function are omitted.</p>
"Effects" clauses correct, or are the "Throws" clauses
missing?</p>
<p><b>Proposed resolution:</b></p>
-<p>In 17.3.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.structure.specifications"> [lib.structure.specifications]</a> paragraph 3, the footnote 148 attached to
+<p>In 17.3.1.3 <a href="lib-intro.html#lib.structure.specifications"> [lib.structure.specifications]</a> paragraph 3, the footnote 148 attached to
the sentence "Descriptions of function semantics contain the
following elements (as appropriate):", insert the word
"further" so that the foot note reads:</p>
@@ -5643,11 +6042,10 @@ throw. The inconsistent wording is in a footnote, and thus
non-normative. The proposed resolution from the LWG clarifies the
footnote.</p>
<hr>
-<a name="223"><h3>223.&nbsp;reverse algorithm should use iter_swap rather than swap</h3></a><p>
-<b>Section:</b>&nbsp;25.2.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.reverse"> [lib.alg.reverse]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;21 Mar 2000</p>
+<a name="223"><h3>223.&nbsp;reverse algorithm should use iter_swap rather than swap</h3></a><p><b>Section:</b>&nbsp;25.2.9 <a href="lib-algorithms.html#lib.alg.reverse"> [lib.alg.reverse]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;21 Mar 2000</p>
<p>Shouldn't the effects say "applies iter_swap to all pairs..."?</p>
<p><b>Proposed resolution:</b></p>
-<p>In 25.2.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.reverse"> [lib.alg.reverse]</a>, replace:</p>
+<p>In 25.2.9 <a href="lib-algorithms.html#lib.alg.reverse"> [lib.alg.reverse]</a>, replace:</p>
<blockquote>
Effects: For each non-negative integer i &lt;= (last - first)/2,
applies swap to all pairs of iterators first + i, (last - i) - 1.
@@ -5658,8 +6056,7 @@ footnote.</p>
applies iter_swap to all pairs of iterators first + i, (last - i) - 1.
</blockquote>
<hr>
-<a name="224"><h3>224.&nbsp;clear() complexity for associative containers refers to undefined N</h3></a><p>
-<b>Section:</b>&nbsp;23.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Ed Brey&nbsp; <b>Date:</b>&nbsp;23 Mar 2000</p>
+<a name="224"><h3>224.&nbsp;clear() complexity for associative containers refers to undefined N</h3></a><p><b>Section:</b>&nbsp;23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Ed Brey&nbsp; <b>Date:</b>&nbsp;23 Mar 2000</p>
<p>In the associative container requirements table in 23.1.2 paragraph 7,
a.clear() has complexity "log(size()) + N". However, the meaning of N
is not defined.</p>
@@ -5673,8 +6070,7 @@ error: there's no difference between <i>O(N)</i> and <i>O(N +
log(N))</i>. The text in the standard is probably an incorrect
cut-and-paste from the range version of <tt>erase</tt>.</p>
<hr>
-<a name="225"><h3>225.&nbsp;std:: algorithms use of other unqualified algorithms</h3></a><p>
-<b>Section:</b>&nbsp;17.4.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.global.functions"> [lib.global.functions]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;01 Apr 2000</p>
+<a name="225"><h3>225.&nbsp;std:: algorithms use of other unqualified algorithms</h3></a><p><b>Section:</b>&nbsp;17.4.4.3 <a href="lib-intro.html#lib.global.functions"> [lib.global.functions]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;01 Apr 2000</p>
<p>Are algorithms in std:: allowed to use other algorithms without qualification, so functions in
user namespaces might be found through Koenig lookup?</p>
<p>For example, a popular standard library implementation includes this
@@ -5732,16 +6128,15 @@ however, seem to disagree with this notion.</p>
<p> <i>[Tokyo:&nbsp; Steve Adamczyk from
the core working group indicates that "std::" is sufficient;&nbsp;
leading "::" qualification is not required because any namespace
-qualification is sufficient to suppress Koenig lookup.]</i>
-</p>
+qualification is sufficient to suppress Koenig lookup.]</i></p>
<p><b>Proposed resolution:</b></p>
<p>Add a paragraph and a note at the end of
-17.4.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.global.functions"> [lib.global.functions]</a>:</p>
+17.4.4.3 <a href="lib-intro.html#lib.global.functions"> [lib.global.functions]</a>:</p>
<blockquote>
<p>Unless otherwise specified, no global or non-member function in the
standard library shall use a function from another namespace which is
-found through <i>argument-dependent name lookup</i> (3.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/basic.html#basic.lookup.koenig"> [basic.lookup.koenig]</a>).</p>
+found through <i>argument-dependent name lookup</i> (3.4.2 <a href="basic.html#basic.lookup.koenig"> [basic.lookup.koenig]</a>).</p>
<p>[Note: the phrase "unless otherwise specified" is intended to
allow Koenig lookup in cases like that of ostream_iterators:<br>
@@ -5760,9 +6155,9 @@ allow Koenig lookup in cases like that of ostream_iterators:<br>
is as yet unsure if the proposed resolution is the best
solution. Furthermore, the LWG believes that the same problem of
unqualified library names applies to wording in the standard itself,
-and has opened issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#229">229</a> accordingly. Any resolution of
-issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#225">225</a> should be coordinated with the resolution of
-issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#229">229</a>.]</i></p>
+and has opened issue <a href="lwg-defects.html#229">229</a> accordingly. Any resolution of
+issue <a href="lwg-defects.html#225">225</a> should be coordinated with the resolution of
+issue <a href="lwg-defects.html#229">229</a>.]</i></p>
<p><i>[Toronto: The LWG is not sure if this is a defect in the
standard. Most LWG members believe that an implementation of
@@ -5772,7 +6167,7 @@ those specified in the standard. The standard's description of
<tt>unique</tt> does not say that overloading <tt>adjacent_find</tt>
should have any effect.]</i></p>
-<p><i>[Curaçao: An LWG-subgroup spent an afternoon working on issues
+<p><i>[Cura&ccedil;ao: An LWG-subgroup spent an afternoon working on issues
225, 226, and 229. Their conclusion was that the issues should be
separated into an LWG portion (Howard's paper, N1387=02-0045), and a
EWG portion (Dave will write a proposal). The LWG and EWG had
@@ -5787,15 +6182,182 @@ resolution for this issue is in accordance with Howard's paper.]</i></p>
other namespace. However, this is at worst a clarification. It is
surely right that algorithsm shouldn't pick up random names, that
user-defined names should have no effect unless otherwise specified.
- Issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#226">226</a> deals with the question of when it is
+ Issue <a href="lwg-defects.html#226">226</a> deals with the question of when it is
appropriate for the standard to explicitly specify otherwise.</p>
<hr>
-<a name="227"><h3>227.&nbsp;std::swap() should require CopyConstructible or DefaultConstructible arguments</h3></a><p>
-<b>Section:</b>&nbsp;25.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.swap"> [lib.alg.swap]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;09 Apr 2000</p>
+<a name="226"><h3>226.&nbsp;User supplied specializations or overloads of namespace std function templates</h3></a><p><b>Section:</b>&nbsp;17.4.3.1 <a href="lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;01 Apr 2000</p>
+<p>The issues are:&nbsp;</p>
+<p>1. How can a 3rd party library implementor (lib1) write a version of a standard
+algorithm which is specialized to work with his own class template?&nbsp;</p>
+<p>2. How can another library implementor (lib2) write a generic algorithm which
+will take advantage of the specialized algorithm in lib1?</p>
+<p>This appears to be the only viable answer under current language rules:</p>
+<blockquote>
+ <pre>namespace lib1
+{
+ // arbitrary-precision numbers using T as a basic unit
+ template &lt;class T&gt;
+ class big_num { //...
+ };
+ </pre>
+ <pre> // defining this in namespace std is illegal (it would be an
+ // overload), so we hope users will rely on Koenig lookup
+ template &lt;class T&gt;
+ void swap(big_int&lt;T&gt;&amp;, big_int&lt;T&gt;&amp;);
+}</pre>
+ <pre>#include &lt;algorithm&gt;
+namespace lib2
+{
+ template &lt;class T&gt;
+ void generic_sort(T* start, T* end)
+ {
+ ...
+ // using-declaration required so we can work on built-in types
+ using std::swap;
+ // use Koenig lookup to find specialized algorithm if available
+ swap(*x, *y);
+ }
+}</pre>
+</blockquote>
+<p>This answer has some drawbacks. First of all, it makes writing lib2 difficult
+and somewhat slippery. The implementor needs to remember to write the
+using-declaration, or generic_sort will fail to compile when T is a built-in
+type. The second drawback is that the use of this style in lib2 effectively
+"reserves" names in any namespace which defines types which may
+eventually be used with lib2. This may seem innocuous at first when applied to
+names like swap, but consider more ambiguous names like unique_copy() instead.
+It is easy to imagine the user wanting to define these names differently in his
+own namespace. A definition with semantics incompatible with the standard
+library could cause serious problems (see issue <a href="lwg-defects.html#225">225</a>).</p>
+<p>Why, you may ask, can't we just partially specialize std::swap()? It's
+because the language doesn't allow for partial specialization of function
+templates. If you write:</p>
+<blockquote>
+ <pre>namespace std
+{
+ template &lt;class T&gt;
+ void swap(lib1::big_int&lt;T&gt;&amp;, lib1::big_int&lt;T&gt;&amp;);
+}</pre>
+</blockquote>
+<p>You have just overloaded std::swap, which is illegal under the current
+language rules. On the other hand, the following full specialization is legal:</p>
+<blockquote>
+ <pre>namespace std
+{
+ template &lt;&gt;
+ void swap(lib1::other_type&amp;, lib1::other_type&amp;);
+}</pre>
+</blockquote>
+
+<p>This issue reflects concerns raised by the "Namespace issue
+with specialized swap" thread on comp.lang.c++.moderated. A
+similar set of concerns was earlier raised on the boost.org mailing
+list and the ACCU-general mailing list. Also see library reflector
+message c++std-lib-7354.</p>
+
+<p>
+J. C. van Winkel points out (in c++std-lib-9565) another unexpected
+fact: it's impossible to output a container of std::pair's using copy
+and an ostream_iterator, as long as both pair-members are built-in or
+std:: types. That's because a user-defined operator&lt;&lt; for (for
+example) std::pair&lt;const std::string, int&gt; will not be found:
+lookup for operator&lt;&lt; will be performed only in namespace std.
+Opinions differed on whether or not this was a defect, and, if so,
+whether the defect is that something is wrong with user-defined
+functionality and std, or whether it's that the standard library does
+not provide an operator&lt;&lt; for std::pair&lt;&gt;.
+</p>
+
+<p><b>Proposed resolution:</b></p>
+
+<p>Adopt the wording proposed in Howard Hinnant's paper
+ N1523=03-0106, "Proposed Resolution To LWG issues 225, 226, 229".</p>
+
+
+<p><i>[Tokyo: Summary, "There is no conforming way to extend
+std::swap for user defined templates."&nbsp; The LWG agrees that
+there is a problem. Would like more information before
+proceeding. This may be a core issue. Core issue 229 has been opened
+to discuss the core aspects of this problem. It was also noted that
+submissions regarding this issue have been received from several
+sources, but too late to be integrated into the issues list.
+]</i></p>
+
+<p><i>[Post-Tokyo: A paper with several proposed resolutions,
+J16/00-0029==WG21/N1252, "Shades of namespace std functions
+" by Alan Griffiths, is in the Post-Tokyo mailing. It
+should be considered a part of this issue.]</i></p>
+
+<p><i>[Toronto: Dave Abrahams and Peter Dimov have proposed a
+resolution that involves core changes: it would add partial
+specialization of function template. The Core Working Group is
+reluctant to add partial specialization of function templates. It is
+viewed as a large change, CWG believes that proposal presented leaves
+some syntactic issues unanswered; if the CWG does add partial
+specialization of function templates, it wishes to develop its own
+proposal. The LWG continues to believe that there is a serious
+problem: there is no good way for users to force the library to use
+user specializations of generic standard library functions, and in
+certain cases (e.g. transcendental functions called by
+<tt>valarray</tt> and <tt>complex</tt>) this is important. Koenig
+lookup isn't adequate, since names within the library must be
+qualified with <tt>std</tt> (see issue 225), specialization doesn't
+work (we don't have partial specialization of function templates), and
+users aren't permitted to add overloads within namespace std.
+]</i></p>
+
+<p><i>[Copenhagen: Discussed at length, with no consensus. Relevant
+papers in the pre-Copenhagen mailing: N1289, N1295, N1296. Discussion
+focused on four options. (1) Relax restrictions on overloads within
+namespace std. (2) Mandate that the standard library use unqualified
+calls for <tt>swap</tt> and possibly other functions. (3) Introduce
+helper class templates for <tt>swap</tt> and possibly other functions.
+(4) Introduce partial specialization of function templates. Every
+option had both support and opposition. Straw poll (first number is
+support, second is strongly opposed): (1) 6, 4; (2) 6, 7; (3) 3, 8;
+(4) 4, 4.]</i></p>
+
+<p><i>[Redmond: Discussed, again no consensus. Herb presented an
+argument that a user who is defining a type <tt>T</tt> with an
+associated <tt>swap</tt> should not be expected to put that
+<tt>swap</tt> in namespace std, either by overloading or by partial
+specialization. The argument is that <tt>swap</tt> is part of
+<tt>T</tt>'s interface, and thus should to in the same namespace as
+<tt>T</tt> and only in that namespace. If we accept this argument,
+the consequence is that standard library functions should use
+unqualified call of <tt>swap</tt>. (And which other functions? Any?)
+A small group (Nathan, Howard, Jeremy, Dave, Matt, Walter, Marc) will
+try to put together a proposal before the next meeting.]</i></p>
+
+<p><i>[Cura&ccedil;ao: An LWG-subgroup spent an afternoon working on issues
+225, 226, and 229. Their conclusion was that the issues should be
+separated into an LWG portion (Howard's paper, N1387=02-0045), and a
+EWG portion (Dave will write a proposal). The LWG and EWG had
+(separate) discussions of this plan the next day. The proposed
+resolution is the one proposed by Howard.]</i></p>
+
+<p><i>[Santa Cruz: the LWG agreed with the general direction of
+ Howard's paper, N1387. (Roughly: Koenig lookup is disabled unless
+ we say otherwise; this issue is about when we do say otherwise.)
+ However, there were concerns about wording. Howard will provide new
+ wording. Bill and Jeremy will review it.]</i></p>
+
+<p><i>[Kona: Howard proposed the new wording. The LWG accepted his
+ proposed resolution.]</i></p>
+
+<p><b>Rationale:</b></p>
+<p>Informally: introduce a Swappable concept, and specify that the
+ value types of the iterators passed to certain standard algorithms
+ (such as iter_swap, swap_ranges, reverse, rotate, and sort) conform
+ to that concept. The Swappable concept will make it clear that
+ these algorithms use unqualified lookup for the calls
+ to <tt>swap</tt>. Also, in 26.3.3.3 <a href="lib-numerics.html#lib.valarray.transcend"> [lib.valarray.transcend]</a> paragraph 1,
+ state that the valarray transcendentals use unqualified lookup.</p>
+<hr>
+<a name="227"><h3>227.&nbsp;std::swap() should require CopyConstructible or DefaultConstructible arguments</h3></a><p><b>Section:</b>&nbsp;25.2.2 <a href="lib-algorithms.html#lib.alg.swap"> [lib.alg.swap]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#TC">TC</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;09 Apr 2000</p>
<p>25.2.2 reads:</p>
<blockquote>
- <p>
-<tt> template&lt;class T&gt; void swap(T&amp; a, T&amp; b);</tt><br>
+ <p><tt> template&lt;class T&gt; void swap(T&amp; a, T&amp; b);</tt><br>
<br>
Requires: Type T is Assignable (_lib.container.requirements_).<br>
Effects: Exchanges values stored in two locations.</p>
@@ -5833,10 +6395,9 @@ resolution for this issue is in accordance with Howard's paper.]</i></p>
<p> Requires: Type T is CopyConstructible (20.1.3) and Assignable (23.1)</p>
</blockquote>
<hr>
-<a name="228"><h3>228.&nbsp;Incorrect specification of "..._byname" facets</h3></a><p>
-<b>Section:</b>&nbsp;22.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.categories"> [lib.locale.categories]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;20 Apr 2000</p>
-<p>The sections 22.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.ctype.byname"> [lib.locale.ctype.byname]</a>, 22.2.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.ctype.byname.special"> [lib.locale.ctype.byname.special]</a>,
-22.2.1.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.byname"> [lib.locale.codecvt.byname]</a>, 22.2.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.numpunct.byname"> [lib.locale.numpunct.byname]</a>, 22.2.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.collate.byname"> [lib.locale.collate.byname]</a>, 22.2.5.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.time.put.byname"> [lib.locale.time.put.byname]</a>, 22.2.6.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.moneypunct.byname"> [lib.locale.moneypunct.byname]</a>, and 22.2.7.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.messages.byname"> [lib.locale.messages.byname]</a> overspecify the
+<a name="228"><h3>228.&nbsp;Incorrect specification of "..._byname" facets</h3></a><p><b>Section:</b>&nbsp;22.2 <a href="lib-locales.html#lib.locale.categories"> [lib.locale.categories]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;20 Apr 2000</p>
+<p>The sections 22.2.1.2 <a href="lib-locales.html#lib.locale.ctype.byname"> [lib.locale.ctype.byname]</a>, 22.2.1.4 <a href="lib-locales.html#lib.locale.ctype.byname.special"> [lib.locale.ctype.byname.special]</a>,
+22.2.1.6 <a href="lib-locales.html#lib.locale.codecvt.byname"> [lib.locale.codecvt.byname]</a>, 22.2.3.2 <a href="lib-locales.html#lib.locale.numpunct.byname"> [lib.locale.numpunct.byname]</a>, 22.2.4.2 <a href="lib-locales.html#lib.locale.collate.byname"> [lib.locale.collate.byname]</a>, 22.2.5.4 <a href="lib-locales.html#lib.locale.time.put.byname"> [lib.locale.time.put.byname]</a>, 22.2.6.4 <a href="lib-locales.html#lib.locale.moneypunct.byname"> [lib.locale.moneypunct.byname]</a>, and 22.2.7.2 <a href="lib-locales.html#lib.locale.messages.byname"> [lib.locale.messages.byname]</a> overspecify the
definitions of the "..._byname" classes by listing a bunch
of virtual functions. At the same time, no semantics of these
functions are defined. Real implementations do not define these
@@ -5955,19 +6516,18 @@ specialization it is not virtual.</p>
~messages_byname(); // virtual
};
}</pre>
-<p>Remove section 22.2.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.ctype.byname.special"> [lib.locale.ctype.byname.special]</a> completely (because in
+<p>Remove section 22.2.1.4 <a href="lib-locales.html#lib.locale.ctype.byname.special"> [lib.locale.ctype.byname.special]</a> completely (because in
this case only those members are defined to be virtual which are
defined to be virtual in 'ctype&lt;cT&gt;'.)</p>
-<p><i>[Post-Tokyo: Dietmar Kühl submitted this issue at the request of
-the LWG to solve the underlying problems raised by issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#138">138</a>.]</i></p>
+<p><i>[Post-Tokyo: Dietmar K&uuml;hl submitted this issue at the request of
+the LWG to solve the underlying problems raised by issue <a href="lwg-closed.html#138">138</a>.]</i></p>
<p><i>[Copenhagen: proposed resolution was revised slightly, to remove
three last virtual functions from <tt>messages_byname</tt>.]</i></p>
<hr>
-<a name="229"><h3>229.&nbsp;Unqualified references of other library entities</h3></a><p>
-<b>Section:</b>&nbsp;17.4.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.contents"> [lib.contents]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;19 Apr 2000</p>
+<a name="229"><h3>229.&nbsp;Unqualified references of other library entities</h3></a><p><b>Section:</b>&nbsp;17.4.1.1 <a href="lib-intro.html#lib.contents"> [lib.contents]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;19 Apr 2000</p>
<p>Throughout the library chapters, the descriptions of library entities refer
to other library entities without necessarily qualifying the names.</p>
@@ -5981,7 +6541,7 @@ override any ::std::swap function when Koenig lookup applies.</p>
"::std::" throughout, too many lines in the standard would have to be
adjusted to make that change in a Technical Corrigendum.</p>
-<p>Issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#182">182</a>, which addresses qualification of
+<p>Issue <a href="lwg-defects.html#182">182</a>, which addresses qualification of
<tt>size_t</tt>, is a special case of this.
</p>
<p><b>Proposed resolution:</b></p>
@@ -5995,7 +6555,7 @@ adjusted to make that change in a Technical Corrigendum.</p>
<p><i>[Post-Tokyo: Steve Clamage submitted this issue at the request of
the LWG to solve a problem in the standard itself similar to the
-problem within implementations of library identified by issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#225">225</a>. Any resolution of issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#225">225</a> should be
+problem within implementations of library identified by issue <a href="lwg-defects.html#225">225</a>. Any resolution of issue <a href="lwg-defects.html#225">225</a> should be
coordinated with the resolution of this issue.]</i></p>
<p><i>[post-Toronto: Howard is undecided about whether it is
@@ -6009,7 +6569,7 @@ concerned that valarray appears to require argument-dependent lookup,
but that the wording may not be clear enough to fall under
"unless explicitly described otherwise".]</i></p>
-<p><i>[Curaçao: An LWG-subgroup spent an afternoon working on issues
+<p><i>[Cura&ccedil;ao: An LWG-subgroup spent an afternoon working on issues
225, 226, and 229. Their conclusion was that the issues should be
separated into an LWG portion (Howard's paper, N1387=02-0045), and a
EWG portion (Dave will write a proposal). The LWG and EWG had
@@ -6018,9 +6578,8 @@ issues 225 and 226. In light of that resolution, the proposed
resolution for the current issue makes sense.]</i></p>
<hr>
-<a name="230"><h3>230.&nbsp;Assignable specified without also specifying CopyConstructible</h3></a><p>
-<b>Section:</b>&nbsp;17 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.library"> [lib.library]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;26 Apr 2000</p>
-<p>Issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#227">227</a> identified an instance (std::swap) where
+<a name="230"><h3>230.&nbsp;Assignable specified without also specifying CopyConstructible</h3></a><p><b>Section:</b>&nbsp;17 <a href="lib-intro.html#lib.library"> [lib.library]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;26 Apr 2000</p>
+<p>Issue <a href="lwg-defects.html#227">227</a> identified an instance (std::swap) where
Assignable was specified without also specifying
CopyConstructible. The LWG asked that the standard be searched to
determine if the same defect existed elsewhere.</p>
@@ -6028,19 +6587,19 @@ determine if the same defect existed elsewhere.</p>
<p>There are a number of places (see proposed resolution below) where
Assignable is specified without also specifying
CopyConstructible. There are also several cases where both are
-specified. For example, 26.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.accumulate"> [lib.accumulate]</a>.</p>
+specified. For example, 26.4.1 <a href="lib-numerics.html#lib.accumulate"> [lib.accumulate]</a>.</p>
<p><b>Proposed resolution:</b></p>
-<p>In 23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> table 65 for value_type:
+<p>In 23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> table 65 for value_type:
change "T is Assignable" to "T is CopyConstructible and
Assignable"
</p>
-<p>In 23.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a> table 69 X::key_type; change
+<p>In 23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a> table 69 X::key_type; change
"Key is Assignable" to "Key is
CopyConstructible and Assignable"<br>
</p>
-<p>In 24.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.output.iterators"> [lib.output.iterators]</a> paragraph 1, change:
+<p>In 24.1.2 <a href="lib-iterators.html#lib.output.iterators"> [lib.output.iterators]</a> paragraph 1, change:
</p>
<blockquote>
<p> A class or a built-in type X satisfies the requirements of an
@@ -6059,9 +6618,13 @@ Table 73:
</blockquote>
<p><i>[Post-Tokyo: Beman Dawes submitted this issue at the request of
-the LWG. He asks that the 25.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.replace"> [lib.alg.replace]</a> and 25.2.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.fill"> [lib.alg.fill]</a> changes be studied carefully, as it is not clear that
+the LWG. He asks that the 25.2.4 <a href="lib-algorithms.html#lib.alg.replace"> [lib.alg.replace]</a> and 25.2.5 <a href="lib-algorithms.html#lib.alg.fill"> [lib.alg.fill]</a> changes be studied carefully, as it is not clear that
CopyConstructible is really a requirement and may be
overspecification.]</i></p>
+
+<p><i>[Portions of the resolution for issue 230 have been superceded by
+the resolution of issue <a href="lwg-defects.html#276">276</a>.]</i></p>
+
<p><b>Rationale:</b></p>
<p>The original proposed resolution also included changes to input
iterator, fill, and replace. The LWG believes that those changes are
@@ -6070,8 +6633,7 @@ Assignable type was also required to be Copy Constructible, but
decided against this because fill and replace really don't require the
Copy Constructible property.</p>
<hr>
-<a name="231"><h3>231.&nbsp;Precision in iostream?</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;James Kanze, Stephen Clamage&nbsp; <b>Date:</b>&nbsp; 25 Apr 2000</p>
+<a name="231"><h3>231.&nbsp;Precision in iostream?</h3></a><p><b>Section:</b>&nbsp;22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;James Kanze, Stephen Clamage&nbsp; <b>Date:</b>&nbsp; 25 Apr 2000</p>
<p>What is the following program supposed to output?</p>
<pre>#include &lt;iostream&gt;
@@ -6112,7 +6674,7 @@ etc. Plus, of course, if precision == 0 and flags &amp; floatfield ==
of the anomalies of printf:-).</p>
<p><b>Proposed resolution:</b></p>
<p>
-Replace 22.2.2.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>, paragraph 11, with the following
+Replace 22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>, paragraph 11, with the following
sentence:
</p>
<blockquote>
@@ -6135,12 +6697,11 @@ turned into 1. There's no need to call it out as a special
case.</p>
<p>The output of the above program will be "1e+00".</p>
-<p><i>[Post-Curaçao: Howard provided improved wording covering the case
+<p><i>[Post-Cura&ccedil;ao: Howard provided improved wording covering the case
where precision is 0 and mode is %g.]</i></p>
<hr>
-<a name="232"><h3>232.&nbsp;"depends" poorly defined in 17.4.3.1</h3></a><p>
-<b>Section:</b>&nbsp;17.4.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Peter Dimov&nbsp; <b>Date:</b>&nbsp;18 Apr 2000</p>
+<a name="232"><h3>232.&nbsp;"depends" poorly defined in 17.4.3.1</h3></a><p><b>Section:</b>&nbsp;17.4.3.1 <a href="lib-intro.html#lib.reserved.names"> [lib.reserved.names]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Peter Dimov&nbsp; <b>Date:</b>&nbsp;18 Apr 2000</p>
<p>17.4.3.1/1 uses the term "depends" to limit the set of allowed
specializations of standard templates to those that "depend on a
user-defined name of external linkage."</p>
@@ -6172,26 +6733,24 @@ possible way for a user to come up with a specialization for bitset,
for example, that might not have already been specialized by the
implementor?</p>
-<p><i>[Toronto: this may be related to issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#120">120</a>.]</i></p>
+<p><i>[Toronto: this may be related to issue <a href="lwg-defects.html#120">120</a>.]</i></p>
<p><i>[post-Toronto: Judy provided the above proposed resolution and
rationale.]</i></p>
<hr>
-<a name="234"><h3>234.&nbsp;Typos in allocator definition</h3></a><p>
-<b>Section:</b>&nbsp;20.4.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.members"> [lib.allocator.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;24 Apr 2000</p>
+<a name="234"><h3>234.&nbsp;Typos in allocator definition</h3></a><p><b>Section:</b>&nbsp;20.4.1.1 <a href="lib-utilities.html#lib.allocator.members"> [lib.allocator.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;24 Apr 2000</p>
<p>In paragraphs 12 and 13 the effects of <tt>construct()</tt> and
<tt>destruct()</tt> are described as returns but the functions actually
return <tt>void</tt>.</p>
<p><b>Proposed resolution:</b></p>
<p>Substitute "Returns" by "Effect".</p>
<hr>
-<a name="235"><h3>235.&nbsp;No specification of default ctor for reverse_iterator</h3></a><p>
-<b>Section:</b>&nbsp;24.4.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.reverse.iterator"> [lib.reverse.iterator]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;24 Apr 2000</p>
+<a name="235"><h3>235.&nbsp;No specification of default ctor for reverse_iterator</h3></a><p><b>Section:</b>&nbsp;24.4.1.1 <a href="lib-iterators.html#lib.reverse.iterator"> [lib.reverse.iterator]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;24 Apr 2000</p>
<p>The declaration of <tt>reverse_iterator</tt> lists a default
constructor. However, no specification is given what this constructor
should do.</p>
<p><b>Proposed resolution:</b></p>
- <p>In section 24.4.1.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.reverse.iter.cons"> [lib.reverse.iter.cons]</a> add the following
+ <p>In section 24.4.1.3.1 <a href="lib-iterators.html#lib.reverse.iter.cons"> [lib.reverse.iter.cons]</a> add the following
paragraph:</p>
<blockquote>
<p><tt>reverse_iterator()</tt></p>
@@ -6204,8 +6763,7 @@ should do.</p>
<p><i>[pre-Copenhagen: Dietmar provide wording for proposed
resolution.]</i></p>
<hr>
-<a name="237"><h3>237.&nbsp;Undefined expression in complexity specification</h3></a><p>
-<b>Section:</b>&nbsp;23.2.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.list.cons"> [lib.list.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;24 Apr 2000</p>
+<a name="237"><h3>237.&nbsp;Undefined expression in complexity specification</h3></a><p><b>Section:</b>&nbsp;23.2.2.1 <a href="lib-containers.html#lib.list.cons"> [lib.list.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;24 Apr 2000</p>
<p>The complexity specification in paragraph 6 says that the complexity
is linear in <tt>first - last</tt>. Even if <tt>operator-()</tt> is
defined on iterators this term is in general undefined because it
@@ -6216,13 +6774,13 @@ would have to be <tt>last - first</tt>.</p>
<p>to become</p>
<blockquote>Linear in <i>distance(first, last)</i>.</blockquote>
<hr>
-<a name="238"><h3>238.&nbsp;Contradictory results of stringbuf initialization.</h3></a><p>
-<b>Section:</b>&nbsp;27.7.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.stringbuf.cons"> [lib.stringbuf.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar Kühl&nbsp; <b>Date:</b>&nbsp;11 May 2000</p>
+<a name="238"><h3>238.&nbsp;Contradictory results of stringbuf initialization.</h3></a><p><b>Section:</b>&nbsp;27.7.1.1 <a href="lib-iostreams.html#lib.stringbuf.cons"> [lib.stringbuf.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dietmar K&uuml;hl&nbsp; <b>Date:</b>&nbsp;11 May 2000</p>
<p>In 27.7.1.1 paragraph 4 the results of calling the constructor of
'basic_stringbuf' are said to be <tt>str() == str</tt>. This is fine
that far but consider this code:</p>
-<pre> std::basic_stringbuf&lt;char&gt; sbuf("hello, world", std::ios_base::openmode(0));
+<pre>
+ std::basic_stringbuf&lt;char&gt; sbuf("hello, world", std::ios_base::openmode(0));
std::cout &lt;&lt; "'" &lt;&lt; sbuf.str() &lt;&lt; "'\n";
</pre>
@@ -6242,8 +6800,7 @@ defined to be <tt>basic_string&lt;cT&gt;()</tt>.</p>
we fixed it, it would say just the same thing as text that's already
in the standard.</p>
<hr>
-<a name="239"><h3>239.&nbsp;Complexity of unique() and/or unique_copy incorrect</h3></a><p>
-<b>Section:</b>&nbsp;25.2.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.unique"> [lib.alg.unique]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;May 15 2000</p>
+<a name="239"><h3>239.&nbsp;Complexity of unique() and/or unique_copy incorrect</h3></a><p><b>Section:</b>&nbsp;25.2.8 <a href="lib-algorithms.html#lib.alg.unique"> [lib.alg.unique]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;May 15 2000</p>
<p>The complexity of unique and unique_copy are inconsistent with each
other and inconsistent with the implementations.&nbsp; The standard
specifies:</p>
@@ -6270,18 +6827,18 @@ applying the predicate last-first times, especially since it is not
specified to which pair in the sequence the predicate is applied
twice.</p>
<p><b>Proposed resolution:</b></p>
-<p>Change both complexity sections in 25.2.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.unique"> [lib.alg.unique]</a> to:</p>
+<p>Change both complexity sections in 25.2.8 <a href="lib-algorithms.html#lib.alg.unique"> [lib.alg.unique]</a> to:</p>
<blockquote>Complexity: For nonempty ranges, exactly last - first - 1
applications of the corresponding predicate.</blockquote>
<hr>
-<a name="240"><h3>240.&nbsp;Complexity of adjacent_find() is meaningless</h3></a><p>
-<b>Section:</b>&nbsp;25.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.adjacent.find"> [lib.alg.adjacent.find]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;May 15 2000</p>
+<a name="240"><h3>240.&nbsp;Complexity of adjacent_find() is meaningless</h3></a><p><b>Section:</b>&nbsp;25.1.5 <a href="lib-algorithms.html#lib.alg.adjacent.find"> [lib.alg.adjacent.find]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;May 15 2000</p>
<p>The complexity section of adjacent_find is defective:</p>
<blockquote>
-<pre>template &lt;class ForwardIterator&gt;
+<pre>
+template &lt;class ForwardIterator&gt;
ForwardIterator adjacent_find(ForwardIterator first, ForwardIterator last
BinaryPredicate pred);
</pre>
@@ -6312,7 +6869,7 @@ not required of predicates because they can have non-const data
members. For this reason, a specification using a binder could only be
an "as-if" specification.</p>
<p><b>Proposed resolution:</b></p>
-<p>Change the complexity section in 25.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.adjacent.find"> [lib.alg.adjacent.find]</a> to:</p>
+<p>Change the complexity section in 25.1.5 <a href="lib-algorithms.html#lib.alg.adjacent.find"> [lib.alg.adjacent.find]</a> to:</p>
<blockquote>
For a nonempty range, exactly <tt>min((<i>i</i> - <i>first</i>) + 1,
(<i>last</i> - <i>first</i>) - 1)</tt> applications of the
@@ -6324,8 +6881,7 @@ return value.
bound. The LWG preferred an exact count.]</i></p>
<hr>
-<a name="241"><h3>241.&nbsp;Does unique_copy() require CopyConstructible and Assignable?</h3></a><p>
-<b>Section:</b>&nbsp;25.2.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.unique"> [lib.alg.unique]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;May 15 2000</p>
+<a name="241"><h3>241.&nbsp;Does unique_copy() require CopyConstructible and Assignable?</h3></a><p><b>Section:</b>&nbsp;25.2.8 <a href="lib-algorithms.html#lib.alg.unique"> [lib.alg.unique]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;May 15 2000</p>
<p>Some popular implementations of unique_copy() create temporary
copies of values in the input sequence, at least if the input iterator
@@ -6336,7 +6892,7 @@ the value type is CopyConstructible and Assignable.</p>
specify any additional requirements that they impose on any of the
types used by the algorithm. An example of an algorithm that creates
temporary copies and correctly specifies the additional requirements
-is accumulate(), 26.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.accumulate"> [lib.accumulate]</a>.</p>
+is accumulate(), 26.4.1 <a href="lib-numerics.html#lib.accumulate"> [lib.accumulate]</a>.</p>
<p>Since the specifications of unique() and unique_copy() do not
require CopyConstructible and Assignable of the InputIterator's value
@@ -6372,20 +6928,19 @@ requiring assignability, although current implementations do impose
that requirement. Howard provided new wording.]</i></p>
<p><i>[
-Curaçao: The LWG changed the PR editorially to specify
+Cura&ccedil;ao: The LWG changed the PR editorially to specify
"neither...nor...meet..." as clearer than
"both...and...do not meet...". Change believed to be so
minor as not to require re-review.
]</i></p>
<hr>
-<a name="242"><h3>242.&nbsp;Side effects of function objects</h3></a><p>
-<b>Section:</b>&nbsp;25.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.transform"> [lib.alg.transform]</a>, 26.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.numeric.ops"> [lib.numeric.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;May 15 2000</p>
+<a name="242"><h3>242.&nbsp;Side effects of function objects</h3></a><p><b>Section:</b>&nbsp;25.2.3 <a href="lib-algorithms.html#lib.alg.transform"> [lib.alg.transform]</a>, 26.4 <a href="lib-numerics.html#lib.numeric.ops"> [lib.numeric.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Angelika Langer&nbsp; <b>Date:</b>&nbsp;May 15 2000</p>
<p>The algorithms transform(), accumulate(), inner_product(),
partial_sum(), and adjacent_difference() require that the function
object supplied to them shall not have any side effects.</p>
-<p>The standard defines a side effect in 1.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/intro.html#intro.execution"> [intro.execution]</a> as:</p>
+<p>The standard defines a side effect in 1.9 <a href="intro.html#intro.execution"> [intro.execution]</a> as:</p>
<blockquote>-7- Accessing an object designated by a volatile lvalue (basic.lval),
modifying an object, calling a library I/O function, or calling a function
that does any of those operations are all side effects, which are changes
@@ -6558,8 +7113,7 @@ added footnotes pointing out that the use of closed ranges was
intentional.]</i></p>
<hr>
-<a name="243"><h3>243.&nbsp;<tt>get</tt> and <tt>getline</tt> when sentry reports failure</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;May 15 2000</p>
+<a name="243"><h3>243.&nbsp;<tt>get</tt> and <tt>getline</tt> when sentry reports failure</h3></a><p><b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;May 15 2000</p>
<p>basic_istream&lt;&gt;::get(), and basic_istream&lt;&gt;::getline(),
are unclear with respect to the behavior and side-effects of the named
functions in case of an error.</p>
@@ -6606,8 +7160,7 @@ had language that made this an unambiguous requirement; those words
were moved to a place where their context made them less clear. See
Jerry Schwarz's message c++std-lib-7618.</p>
<hr>
-<a name="248"><h3>248.&nbsp;time_get fails to set eofbit</h3></a><p>
-<b>Section:</b>&nbsp;22.2.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.category.time"> [lib.category.time]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;22 June 2000</p>
+<a name="248"><h3>248.&nbsp;time_get fails to set eofbit</h3></a><p><b>Section:</b>&nbsp;22.2.5 <a href="lib-locales.html#lib.category.time"> [lib.category.time]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;22 June 2000</p>
<p>There is no requirement that any of time_get member functions set
ios::eofbit when they reach the end iterator while parsing their input.
Since members of both the num_get and money_get facets are required to
@@ -6625,12 +7178,12 @@ member functions, the member sets ios_base::eofbit in err.
because it was more consistent with the way eof is described for other
input facets.</p>
<hr>
-<a name="250"><h3>250.&nbsp;splicing invalidates iterators</h3></a><p>
-<b>Section:</b>&nbsp;23.2.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.list.ops"> [lib.list.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Brian Parker &nbsp; <b>Date:</b>&nbsp;14 Jul 2000</p>
+<a name="250"><h3>250.&nbsp;splicing invalidates iterators</h3></a><p><b>Section:</b>&nbsp;23.2.2.4 <a href="lib-containers.html#lib.list.ops"> [lib.list.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Brian Parker &nbsp; <b>Date:</b>&nbsp;14 Jul 2000</p>
<p>
Section 23.2.2.4 [lib.list.ops] states that
</p>
-<pre> void splice(iterator position, list&lt;T, Allocator&gt;&amp; x);
+<pre>
+ void splice(iterator position, list&lt;T, Allocator&gt;&amp; x);
</pre>
<p>
<i>invalidates</i> all iterators and references to list <tt>x</tt>.
@@ -6643,14 +7196,14 @@ after <tt>splice</tt>.
</p>
<p><b>Proposed resolution:</b></p>
-<p>Add a footnote to 23.2.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, paragraph 1:</p>
+<p>Add a footnote to 23.2.2.4 <a href="lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, paragraph 1:</p>
<blockquote>
-[<i>Footnote:</i> As specified in 20.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>, paragraphs
+[<i>Footnote:</i> As specified in 20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>, paragraphs
4-5, the semantics described in this clause applies only to the case
where allocators compare equal. --end footnote]
</blockquote>
-<p>In 23.2.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, replace paragraph 4 with:</p>
+<p>In 23.2.2.4 <a href="lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, replace paragraph 4 with:</p>
<blockquote>
Effects: Inserts the contents of x before position and x becomes
empty. Pointers and references to the moved elements of x now refer to
@@ -6659,7 +7212,7 @@ moved elements will continue to refer to their elements, but they now
behave as iterators into *this, not into x.
</blockquote>
-<p>In 23.2.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, replace paragraph 7 with:</p>
+<p>In 23.2.2.4 <a href="lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, replace paragraph 7 with:</p>
<blockquote>
Effects: Inserts an element pointed to by i from list x before
position and removes the element from x. The result is unchanged if
@@ -6669,7 +7222,7 @@ to refer to this same element but as a member of *this. Iterators to *i
behave as iterators into *this, not into x.
</blockquote>
-<p>In 23.2.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, replace paragraph 12 with:</p>
+<p>In 23.2.2.4 <a href="lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, replace paragraph 12 with:</p>
<blockquote>
Requires: [first, last) is a valid range in x. The result is
undefined if position is an iterator in the range [first, last).
@@ -6684,11 +7237,10 @@ iterators into *this, not into x.
<p>The original proposed resolution said that iterators and references
would remain "valid". The new proposed resolution clarifies what that
means. Note that this only applies to the case of equal allocators.
-From 20.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a> paragraph 4, the behavior of list when
+From 20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a> paragraph 4, the behavior of list when
allocators compare nonequal is outside the scope of the standard.</p>
<hr>
-<a name="251"><h3>251.&nbsp;basic_stringbuf missing allocator_type</h3></a><p>
-<b>Section:</b>&nbsp;27.7.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.stringbuf"> [lib.stringbuf]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;28 Jul 2000</p>
+<a name="251"><h3>251.&nbsp;basic_stringbuf missing allocator_type</h3></a><p><b>Section:</b>&nbsp;27.7.1 <a href="lib-iostreams.html#lib.stringbuf"> [lib.stringbuf]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;28 Jul 2000</p>
<p>The synopsis for the template class <tt>basic_stringbuf</tt>
doesn't list a typedef for the template parameter
<tt>Allocator</tt>. This makes it impossible to determine the type of
@@ -6699,11 +7251,11 @@ template classes in the library that do provide a typedef for the
<p>Add to the synopses of the class templates basic_stringbuf (27.7.1),
basic_istringstream (27.7.2), basic_ostringstream (27.7.3), and
basic_stringstream (27.7.4) the typedef:</p>
-<pre> typedef Allocator allocator_type;
+<pre>
+ typedef Allocator allocator_type;
</pre>
<hr>
-<a name="252"><h3>252.&nbsp;missing casts/C-style casts used in iostreams</h3></a><p>
-<b>Section:</b>&nbsp;27.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.string.streams"> [lib.string.streams]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;28 Jul 2000</p>
+<a name="252"><h3>252.&nbsp;missing casts/C-style casts used in iostreams</h3></a><p><b>Section:</b>&nbsp;27.7 <a href="lib-iostreams.html#lib.string.streams"> [lib.string.streams]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;28 Jul 2000</p>
<p>27.7.2.2, p1 uses a C-style cast rather than the more appropriate
const_cast&lt;&gt; in the Returns clause for basic_istringstream&lt;&gt;::rdbuf().
The same C-style cast is being used in 27.7.3.2, p1, D.7.2.2, p1, and
@@ -6738,8 +7290,162 @@ issue is stylistic rather than a matter of correctness.</p>
<p>with</p>
<pre> -2- Returns: const_cast&lt;strstreambuf*&gt;(&amp;sb).</pre>
<hr>
-<a name="256"><h3>256.&nbsp;typo in 27.4.4.2, p17: copy_event does not exist</h3></a><p>
-<b>Section:</b>&nbsp;27.4.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.basic.ios.members"> [lib.basic.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;21 Aug 2000</p>
+<a name="253"><h3>253.&nbsp;valarray helper functions are almost entirely useless</h3></a><p><b>Section:</b>&nbsp;26.3.2.1 <a href="lib-numerics.html#lib.valarray.cons"> [lib.valarray.cons]</a>, 26.3.2.2 <a href="lib-numerics.html#lib.valarray.assign"> [lib.valarray.assign]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Robert Klarer&nbsp; <b>Date:</b>&nbsp;31 Jul 2000</p>
+<p>This discussion is adapted from message c++std-lib-7056 posted
+November 11, 1999. I don't think that anyone can reasonably claim
+that the problem described below is NAD.</p>
+
+<p>These valarray constructors can never be called:</p>
+
+<pre>
+ template &lt;class T&gt;
+ valarray&lt;T&gt;::valarray(const slice_array&lt;T&gt; &amp;);
+ template &lt;class T&gt;
+ valarray&lt;T&gt;::valarray(const gslice_array&lt;T&gt; &amp;);
+ template &lt;class T&gt;
+ valarray&lt;T&gt;::valarray(const mask_array&lt;T&gt; &amp;);
+ template &lt;class T&gt;
+ valarray&lt;T&gt;::valarray(const indirect_array&lt;T&gt; &amp;);
+</pre>
+
+<p>Similarly, these valarray assignment operators cannot be
+called:</p>
+
+<pre>
+ template &lt;class T&gt;
+ valarray&lt;T&gt; valarray&lt;T&gt;::operator=(const slice_array&lt;T&gt; &amp;);
+ template &lt;class T&gt;
+ valarray&lt;T&gt; valarray&lt;T&gt;::operator=(const gslice_array&lt;T&gt; &amp;);
+ template &lt;class T&gt;
+ valarray&lt;T&gt; valarray&lt;T&gt;::operator=(const mask_array&lt;T&gt; &amp;);
+ template &lt;class T&gt;
+ valarray&lt;T&gt; valarray&lt;T&gt;::operator=(const indirect_array&lt;T&gt; &amp;);
+</pre>
+
+<p>Please consider the following example:</p>
+
+<pre>
+ #include &lt;valarray&gt;
+ using namespace std;
+
+ int main()
+ {
+ valarray&lt;double&gt; va1(12);
+ valarray&lt;double&gt; va2(va1[slice(1,4,3)]); // line 1
+ }
+</pre>
+
+
+<p>Since the valarray va1 is non-const, the result of the sub-expression
+va1[slice(1,4,3)] at line 1 is an rvalue of type const
+std::slice_array&lt;double&gt;. This slice_array rvalue is then used to
+construct va2. The constructor that is used to construct va2 is
+declared like this:</p>
+
+<pre>
+ template &lt;class T&gt;
+ valarray&lt;T&gt;::valarray(const slice_array&lt;T&gt; &amp;);
+</pre>
+
+<p>Notice the constructor's const reference parameter. When the
+constructor is called, a slice_array must be bound to this reference.
+The rules for binding an rvalue to a const reference are in 8.5.3,
+paragraph 5 (see also 13.3.3.1.4). Specifically, paragraph 5
+indicates that a second slice_array rvalue is constructed (in this
+case copy-constructed) from the first one; it is this second rvalue
+that is bound to the reference parameter. Paragraph 5 also requires
+that the constructor that is used for this purpose be callable,
+regardless of whether the second rvalue is elided. The
+copy-constructor in this case is not callable, however, because it is
+private. Therefore, the compiler should report an error.</p>
+
+<p>Since slice_arrays are always rvalues, the valarray constructor that has a
+parameter of type const slice_array&lt;T&gt; &amp; can never be called. The
+same reasoning applies to the three other constructors and the four
+assignment operators that are listed at the beginning of this post.
+Furthermore, since these functions cannot be called, the valarray helper
+classes are almost entirely useless.</p>
+<p><b>Proposed resolution:</b></p>
+<p>slice_array:</p>
+<ul>
+<li> Make the copy constructor and copy-assignment operator declarations
+ public in the slice_array class template definition in 26.3.5 <a href="lib-numerics.html#lib.template.slice.array"> [lib.template.slice.array]</a> </li>
+<li> remove paragraph 3 of 26.3.5 <a href="lib-numerics.html#lib.template.slice.array"> [lib.template.slice.array]</a>
+</li>
+<li> remove the copy constructor declaration from 26.3.5.1 <a href="lib-numerics.html#lib.cons.slice.arr"> [lib.cons.slice.arr]</a>
+</li>
+<li> change paragraph 1 of 26.3.5.1 <a href="lib-numerics.html#lib.cons.slice.arr"> [lib.cons.slice.arr]</a> to read "This constructor is declared
+ to be private. This constructor need not be defined."</li>
+<li> remove the first sentence of paragraph 1 of 26.3.5.2 <a href="lib-numerics.html#lib.slice.arr.assign"> [lib.slice.arr.assign]</a>
+</li>
+<li> Change the first three words of the second sentence of paragraph 1 of
+ 26.3.5.2 <a href="lib-numerics.html#lib.slice.arr.assign"> [lib.slice.arr.assign]</a> to "These assignment operators have"</li>
+</ul>
+
+<p>gslice_array:</p>
+<ul>
+<li> Make the copy constructor and copy-assignment operator declarations
+ public in the gslice_array class template definition in 26.3.7 <a href="lib-numerics.html#lib.template.gslice.array"> [lib.template.gslice.array]</a> </li>
+<li> remove the note in paragraph 3 of 26.3.7 <a href="lib-numerics.html#lib.template.gslice.array"> [lib.template.gslice.array]</a>
+</li>
+<li> remove the copy constructor declaration from 26.3.7.1 <a href="lib-numerics.html#lib.gslice.array.cons"> [lib.gslice.array.cons]</a>
+</li>
+<li> change paragraph 1 of 26.3.7.1 <a href="lib-numerics.html#lib.gslice.array.cons"> [lib.gslice.array.cons]</a> to read "This constructor is declared
+ to be private. This constructor need not be defined."</li>
+<li> remove the first sentence of paragraph 1 of 26.3.7.2 <a href="lib-numerics.html#lib.gslice.array.assign"> [lib.gslice.array.assign]</a>
+</li>
+<li> Change the first three words of the second sentence of paragraph 1 of
+ 26.3.7.2 <a href="lib-numerics.html#lib.gslice.array.assign"> [lib.gslice.array.assign]</a> to "These assignment operators have"</li>
+</ul>
+
+<p>mask_array:</p>
+<ul>
+<li> Make the copy constructor and copy-assignment operator declarations
+ public in the mask_array class template definition in 26.3.8 <a href="lib-numerics.html#lib.template.mask.array"> [lib.template.mask.array]</a> </li>
+<li> remove the note in paragraph 2 of 26.3.8 <a href="lib-numerics.html#lib.template.mask.array"> [lib.template.mask.array]</a>
+</li>
+<li> remove the copy constructor declaration from 26.3.8.1 <a href="lib-numerics.html#lib.mask.array.cons"> [lib.mask.array.cons]</a>
+</li>
+<li> change paragraph 1 of 26.3.8.1 <a href="lib-numerics.html#lib.mask.array.cons"> [lib.mask.array.cons]</a> to read "This constructor is declared
+ to be private. This constructor need not be defined."</li>
+<li> remove the first sentence of paragraph 1 of 26.3.8.2 <a href="lib-numerics.html#lib.mask.array.assign"> [lib.mask.array.assign]</a>
+</li>
+<li> Change the first three words of the second sentence of paragraph 1 of
+ 26.3.8.2 <a href="lib-numerics.html#lib.mask.array.assign"> [lib.mask.array.assign]</a> to "These assignment operators have"</li>
+</ul>
+
+<p>indirect_array:</p>
+<ul>
+<li>Make the copy constructor and copy-assignment operator declarations
+ public in the indirect_array class definition in 26.3.9 <a href="lib-numerics.html#lib.template.indirect.array"> [lib.template.indirect.array]</a>
+</li>
+<li> remove the note in paragraph 2 of 26.3.9 <a href="lib-numerics.html#lib.template.indirect.array"> [lib.template.indirect.array]</a>
+</li>
+<li> remove the copy constructor declaration from 26.3.9.1 <a href="lib-numerics.html#lib.indirect.array.cons"> [lib.indirect.array.cons]</a>
+</li>
+<li> change the descriptive text in 26.3.9.1 <a href="lib-numerics.html#lib.indirect.array.cons"> [lib.indirect.array.cons]</a> to read "This constructor is
+ declared to be private. This constructor need not be defined."</li>
+<li> remove the first sentence of paragraph 1 of 26.3.9.2 <a href="lib-numerics.html#lib.indirect.array.assign"> [lib.indirect.array.assign]</a>
+</li>
+<li> Change the first three words of the second sentence of paragraph 1 of
+ 26.3.9.2 <a href="lib-numerics.html#lib.indirect.array.assign"> [lib.indirect.array.assign]</a> to "These assignment operators have"</li>
+</ul>
+<p><i>[Proposed resolution was modified in Santa Cruz: explicitly make
+copy constructor and copy assignment operators public, instead of
+removing them.]</i></p>
+<p><b>Rationale:</b></p>
+<p>Keeping the valarray constructors private is untenable. Merely
+making valarray a friend of the helper classes isn't good enough,
+because access to the copy constructor is checked in the user's
+environment.</p>
+
+<p>Making the assignment operator public is not strictly necessary to
+solve this problem. A majority of the LWG <i>(straw poll: 13-4)</i>
+believed we should make the assignment operators public, in addition
+to the copy constructors, for reasons of symmetry and user
+expectation.</p>
+<hr>
+<a name="256"><h3>256.&nbsp;typo in 27.4.4.2, p17: copy_event does not exist</h3></a><p><b>Section:</b>&nbsp;27.4.4.2 <a href="lib-iostreams.html#lib.basic.ios.members"> [lib.basic.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;21 Aug 2000</p>
<p>
27.4.4.2, p17 says
</p>
@@ -6758,8 +7464,7 @@ copyfmt_event.
<p><b>Proposed resolution:</b></p>
<p>Replace copy_event with copyfmt_event in the named paragraph.</p>
<hr>
-<a name="259"><h3>259.&nbsp;<tt>basic_string::operator[]</tt> and const correctness</h3></a><p>
-<b>Section:</b>&nbsp;21.3.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.access"> [lib.string.access]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Chris Newton &nbsp; <b>Date:</b>&nbsp;27 Aug 2000</p>
+<a name="259"><h3>259.&nbsp;<tt>basic_string::operator[]</tt> and const correctness</h3></a><p><b>Section:</b>&nbsp;21.3.4 <a href="lib-strings.html#lib.string.access"> [lib.string.access]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Chris Newton &nbsp; <b>Date:</b>&nbsp;27 Aug 2000</p>
<p>
<i>Paraphrased from a message that Chris Newton posted to comp.std.c++:</i>
</p>
@@ -6783,8 +7488,7 @@ In section 21.3.4, paragraph 1, change
</p>
<hr>
<a name="260"><h3>260.&nbsp;Inconsistent return type of <tt>istream_iterator::operator++(int)</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;24.5.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.istream.iterator.ops"> [lib.istream.iterator.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;27 Aug 2000</p>
+</h3></a><p><b>Section:</b>&nbsp;24.5.1.2 <a href="lib-iterators.html#lib.istream.iterator.ops"> [lib.istream.iterator.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;27 Aug 2000</p>
<p>The synopsis of istream_iterator::operator++(int) in 24.5.1 shows
it as returning the iterator by value. 24.5.1.2, p5 shows the same
operator as returning the iterator by reference. That's incorrect
@@ -6792,21 +7496,23 @@ given the Effects clause below (since a temporary is returned). The
`&amp;' is probably just a typo.</p>
<p><b>Proposed resolution:</b></p>
<p>Change the declaration in 24.5.1.2, p5 from</p>
- <pre> istream_iterator&lt;T,charT,traits,Distance&gt;&amp; operator++(int);
+ <pre>
+ istream_iterator&lt;T,charT,traits,Distance&gt;&amp; operator++(int);
</pre>
<p>to</p>
- <pre> istream_iterator&lt;T,charT,traits,Distance&gt; operator++(int);
+ <pre>
+ istream_iterator&lt;T,charT,traits,Distance&gt; operator++(int);
</pre>
<p>(that is, remove the `&amp;').</p>
<hr>
<a name="261"><h3>261.&nbsp;Missing description of <tt>istream_iterator::operator!=</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;24.5.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.istream.iterator.ops"> [lib.istream.iterator.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;27 Aug 2000</p>
+</h3></a><p><b>Section:</b>&nbsp;24.5.1.2 <a href="lib-iterators.html#lib.istream.iterator.ops"> [lib.istream.iterator.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;27 Aug 2000</p>
<p>
24.5.1, p3 lists the synopsis for
</p>
-<pre> template &lt;class T, class charT, class traits, class Distance&gt;
+<pre>
+ template &lt;class T, class charT, class traits, class Distance&gt;
bool operator!=(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,
const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);
</pre>
@@ -6820,15 +7526,15 @@ or Returns clause) in 24.5.1.2.
Add paragraph 7 to the end of section 24.5.1.2 with the following text:
</p>
-<pre> template &lt;class T, class charT, class traits, class Distance&gt;
+<pre>
+ template &lt;class T, class charT, class traits, class Distance&gt;
bool operator!=(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,
const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);
</pre>
<p>-7- Returns: !(x == y).</p>
<hr>
-<a name="262"><h3>262.&nbsp;Bitmask operator ~ specified incorrectly</h3></a><p>
-<b>Section:</b>&nbsp;17.3.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.bitmask.types"> [lib.bitmask.types]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;03 Sep 2000</p>
+<a name="262"><h3>262.&nbsp;Bitmask operator ~ specified incorrectly</h3></a><p><b>Section:</b>&nbsp;17.3.2.1.2 <a href="lib-intro.html#lib.bitmask.types"> [lib.bitmask.types]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;03 Sep 2000</p>
<p>
The ~ operation should be applied after the cast to int_type.
</p>
@@ -6837,7 +7543,8 @@ The ~ operation should be applied after the cast to int_type.
Change 17.3.2.1.2 [lib.bitmask.types] operator~ from:
</p>
-<pre> bitmask operator~ ( bitmask X )
+<pre>
+ bitmask operator~ ( bitmask X )
{ return static_cast&lt; bitmask&gt;(static_cast&lt;int_type&gt;(~ X)); }
</pre>
@@ -6845,12 +7552,12 @@ Change 17.3.2.1.2 [lib.bitmask.types] operator~ from:
to:
</p>
-<pre> bitmask operator~ ( bitmask X )
+<pre>
+ bitmask operator~ ( bitmask X )
{ return static_cast&lt; bitmask&gt;(~static_cast&lt;int_type&gt;(X)); }
</pre>
<hr>
-<a name="263"></a><h3><a name="263">263.&nbsp;Severe restriction on <tt>basic_string</tt> reference counting</a></h3><p>
-<b>Section:</b>&nbsp;21.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.basic.string"> [lib.basic.string]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Kevlin Henney&nbsp; <b>Date:</b>&nbsp;04 Sep 2000</p>
+<a name="263"><h3>263.&nbsp;Severe restriction on <tt>basic_string</tt> reference counting</h3></a><p><b>Section:</b>&nbsp;21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Kevlin Henney&nbsp; <b>Date:</b>&nbsp;04 Sep 2000</p>
<p>
The note in paragraph 6 suggests that the invalidation rules for
references, pointers, and iterators in paragraph 5 permit a reference-
@@ -6864,7 +7571,8 @@ implementation unviable. In the following example none of the
conditions for iterator invalidation are satisfied:
</p>
-<pre> // first example: "*******************" should be printed twice
+<pre>
+ // first example: "*******************" should be printed twice
string original = "some arbitrary text", copy = original;
const string &amp; alias = original;
@@ -6881,7 +7589,8 @@ conditions for iterator invalidation are satisfied:
Similarly, in the following example:
</p>
-<pre> // second example: "some arbitrary text" should be printed out
+<pre>
+ // second example: "some arbitrary text" should be printed out
string original = "some arbitrary text", copy = original;
const string &amp; alias = original;
@@ -6920,15 +7629,14 @@ Change the following sentence in 21.3 paragraph 5 from
or rend().
</blockquote>
<hr>
-<a name="264"></a><h3><a name="264">264.&nbsp;Associative container <tt>insert(i, j)</tt> complexity requirements are not feasible.</a></h3><p>
-<b>Section:</b>&nbsp;23.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;John Potter&nbsp; <b>Date:</b>&nbsp;07 Sep 2000</p>
+<a name="264"><h3>264.&nbsp;Associative container <tt>insert(i, j)</tt> complexity requirements are not feasible.</h3></a><p><b>Section:</b>&nbsp;23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;John Potter&nbsp; <b>Date:</b>&nbsp;07 Sep 2000</p>
<p>
Table 69 requires linear time if [i, j) is sorted. Sorted is necessary but not sufficient.
Consider inserting a sorted range of even integers into a set&lt;int&gt; containing the odd
integers in the same range.
</p>
-<p><i>Related issue: <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#102">102</a></i></p>
+<p><i>Related issue: <a href="lwg-closed.html#102">102</a></i></p>
<p><b>Proposed resolution:</b></p>
<p>
In Table 69, in section 23.1.2, change the complexity clause for
@@ -6960,8 +7668,7 @@ inserted is sorted, it's more trouble than it's worth to say that it's
linear in some special cases.
</p>
<hr>
-<a name="265"><h3>265.&nbsp;std::pair::pair() effects overly restrictive</h3></a><p>
-<b>Section:</b>&nbsp;20.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.pairs"> [lib.pairs]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;11 Sep 2000</p>
+<a name="265"><h3>265.&nbsp;std::pair::pair() effects overly restrictive</h3></a><p><b>Section:</b>&nbsp;20.2.2 <a href="lib-utilities.html#lib.pairs"> [lib.pairs]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;11 Sep 2000</p>
<p>
I don't see any requirements on the types of the elements of the
std::pair container in 20.2.2. From the descriptions of the member
@@ -6998,8 +7705,7 @@ default constructor was written the obvious way. This has been
clarified by core issue 178, and there is no longer any doubt that
the straightforward implementation is correct.</p>
<hr>
-<a name="266"><h3>266.&nbsp;bad_exception::~bad_exception() missing Effects clause</h3></a><p>
-<b>Section:</b>&nbsp;18.6.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.bad.exception"> [lib.bad.exception]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;24 Sep 2000</p>
+<a name="266"><h3>266.&nbsp;bad_exception::~bad_exception() missing Effects clause</h3></a><p><b>Section:</b>&nbsp;18.6.2.1 <a href="lib-support.html#lib.bad.exception"> [lib.bad.exception]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;24 Sep 2000</p>
<p>
The synopsis for std::bad_exception lists the function ~bad_exception()
but there is no description of what the function does (the Effects
@@ -7008,10 +7714,10 @@ clause is missing).
<p><b>Proposed resolution:</b></p>
<p>
Remove the destructor from the class synopses of
-<tt>bad_alloc</tt> (18.4.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.bad.alloc"> [lib.bad.alloc]</a>),
-<tt>bad_cast</tt> (18.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.bad.cast"> [lib.bad.cast]</a>),
-<tt>bad_typeid</tt> (18.5.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.bad.typeid"> [lib.bad.typeid]</a>),
-and <tt>bad_exception</tt> (18.6.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.bad.exception"> [lib.bad.exception]</a>).
+<tt>bad_alloc</tt> (18.4.2.1 <a href="lib-support.html#lib.bad.alloc"> [lib.bad.alloc]</a>),
+<tt>bad_cast</tt> (18.5.2 <a href="lib-support.html#lib.bad.cast"> [lib.bad.cast]</a>),
+<tt>bad_typeid</tt> (18.5.3 <a href="lib-support.html#lib.bad.typeid"> [lib.bad.typeid]</a>),
+and <tt>bad_exception</tt> (18.6.2.1 <a href="lib-support.html#lib.bad.exception"> [lib.bad.exception]</a>).
</p>
<p><b>Rationale:</b></p>
<p>
@@ -7022,8 +7728,7 @@ removing them is more consistent with how exception classes are
described in clause 19.
</p>
<hr>
-<a name="268"><h3>268.&nbsp;Typo in locale synopsis</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;5 Oct 2000</p>
+<a name="268"><h3>268.&nbsp;Typo in locale synopsis</h3></a><p><b>Section:</b>&nbsp;22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;5 Oct 2000</p>
<p>The synopsis of the class std::locale in 22.1.1 contains two typos:
the semicolons after the declarations of the default ctor
locale::locale() and the copy ctor locale::locale(const locale&amp;)
@@ -7031,20 +7736,21 @@ are missing.</p>
<p><b>Proposed resolution:</b></p>
<p>Add the missing semicolons, i.e., change</p>
-<pre> // construct/copy/destroy:
+<pre>
+ // construct/copy/destroy:
locale() throw()
locale(const locale&amp; other) throw()
</pre>
<p>in the synopsis in 22.1.1 to</p>
-<pre> // construct/copy/destroy:
+<pre>
+ // construct/copy/destroy:
locale() throw();
locale(const locale&amp; other) throw();
</pre>
<hr>
-<a name="270"><h3>270.&nbsp;Binary search requirements overly strict</h3></a><p>
-<b>Section:</b>&nbsp;25.3.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.binary.search"> [lib.alg.binary.search]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;18 Oct 2000</p>
+<a name="270"><h3>270.&nbsp;Binary search requirements overly strict</h3></a><p><b>Section:</b>&nbsp;25.3.3 <a href="lib-algorithms.html#lib.alg.binary.search"> [lib.alg.binary.search]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;18 Oct 2000</p>
<p>
Each of the four binary search algorithms (lower_bound, upper_bound,
equal_range, binary_search) has a form that allows the user to pass a
@@ -7059,7 +7765,8 @@ large record with an integer key. We might reasonably want to look
up a record by key, in which case we would want to write something
like this:
</p>
-<pre> struct key_comp {
+<pre>
+ struct key_comp {
bool operator()(const X&amp; x, int n) const {
return x.key() &lt; n;
}
@@ -7252,7 +7959,8 @@ The proposed resolution is based on that alternative formulation.</li>
<p>to:</p>
-<pre> -2- Returns:
+<pre>
+ -2- Returns:
make_pair(lower_bound(first, last, value),
upper_bound(first, last, value))
or
@@ -7294,8 +8002,7 @@ that the upper bound is no earlier than the lower bound, that
the pair returned by equal_range is a valid range, and that the first
part of that pair is the lower bound.</p>
<hr>
-<a name="271"><h3>271.&nbsp;basic_iostream missing typedefs</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.iostreamclass"> [lib.iostreamclass]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;02 Nov 2000</p>
+<a name="271"><h3>271.&nbsp;basic_iostream missing typedefs</h3></a><p><b>Section:</b>&nbsp;27.6.1.5 <a href="lib-iostreams.html#lib.iostreamclass"> [lib.iostreamclass]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;02 Nov 2000</p>
<p>
Class template basic_iostream has no typedefs. The typedefs it
inherits from its base classes can't be used, since (for example)
@@ -7304,9 +8011,10 @@ basic_iostream&lt;T&gt;::traits_type is ambiguous.
<p><b>Proposed resolution:</b></p>
<p>Add the following to basic_iostream's class synopsis in
-27.6.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.iostreamclass"> [lib.iostreamclass]</a>, immediately after <tt>public</tt>:</p>
+27.6.1.5 <a href="lib-iostreams.html#lib.iostreamclass"> [lib.iostreamclass]</a>, immediately after <tt>public</tt>:</p>
-<pre> // types:
+<pre>
+ // types:
typedef charT char_type;
typedef typename traits::int_type int_type;
typedef typename traits::pos_type pos_type;
@@ -7314,8 +8022,7 @@ basic_iostream&lt;T&gt;::traits_type is ambiguous.
typedef traits traits_type;
</pre>
<hr>
-<a name="272"><h3>272.&nbsp;Missing parentheses around subexpression</h3></a><p>
-<b>Section:</b>&nbsp;27.4.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.iostate.flags"> [lib.iostate.flags]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;02 Nov 2000</p>
+<a name="272"><h3>272.&nbsp;Missing parentheses around subexpression</h3></a><p><b>Section:</b>&nbsp;27.4.4.3 <a href="lib-iostreams.html#lib.iostate.flags"> [lib.iostate.flags]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;02 Nov 2000</p>
<p>
27.4.4.3, p4 says about the postcondition of the function: If
rdbuf()!=0 then state == rdstate(); otherwise
@@ -7332,8 +8039,7 @@ anything but non-zero.
Add parentheses like so: rdstate()==(state|ios_base::badbit).
</p>
<hr>
-<a name="273"><h3>273.&nbsp;Missing ios_base qualification on members of a dependent class</h3></a><p>
-<b>Section:</b>&nbsp;27 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;02 Nov 2000</p>
+<a name="273"><h3>273.&nbsp;Missing ios_base qualification on members of a dependent class</h3></a><p><b>Section:</b>&nbsp;27 <a href="lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;02 Nov 2000</p>
<p>27.5.2.4.2, p4, and 27.8.1.6, p2, 27.8.1.7, p3, 27.8.1.9, p2,
27.8.1.10, p3 refer to in and/or out w/o ios_base:: qualification.
That's incorrect since the names are members of a dependent base
@@ -7342,8 +8048,7 @@ class (14.6.2 [temp.dep]) and thus not visible.</p>
<p>Qualify the names with the name of the class of which they are
members, i.e., ios_base.</p>
<hr>
-<a name="274"><h3>274.&nbsp;a missing/impossible allocator requirement</h3></a><p>
-<b>Section:</b>&nbsp;20.1.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;02 Nov 2000</p>
+<a name="274"><h3>274.&nbsp;a missing/impossible allocator requirement</h3></a><p><b>Section:</b>&nbsp;20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;02 Nov 2000</p>
<p>
I see that table 31 in 20.1.5, p3 allows T in std::allocator&lt;T&gt; to be of
any type. But the synopsis in 20.4.1 calls for allocator&lt;&gt;::address() to
@@ -7394,12 +8099,11 @@ The original text for proposed resolution 2 was modified so that it
also forbids volatile types and reference types.
</p>
-<p><i>[Curaçao: LWG double checked and believes volatile is correctly
+<p><i>[Cura&ccedil;ao: LWG double checked and believes volatile is correctly
excluded from the PR.]</i></p>
<hr>
-<a name="275"><h3>275.&nbsp;Wrong type in num_get::get() overloads</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.members"> [lib.facet.num.get.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;02 Nov 2000</p>
+<a name="275"><h3>275.&nbsp;Wrong type in num_get::get() overloads</h3></a><p><b>Section:</b>&nbsp;22.2.2.1.1 <a href="lib-locales.html#lib.facet.num.get.members"> [lib.facet.num.get.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;02 Nov 2000</p>
<p>
In 22.2.2.1.1, we have a list of overloads for num_get&lt;&gt;::get().
There are eight overloads, all of which are identical except for the
@@ -7438,20 +8142,21 @@ These two lists are not identical. They should be, since
the arguments it was given.
</p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.2.2.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.members"> [lib.facet.num.get.members]</a>, change</p>
-<pre> iter_type get(iter_type in, iter_type end, ios_base&amp; str,
+<p>In 22.2.2.1.1 <a href="lib-locales.html#lib.facet.num.get.members"> [lib.facet.num.get.members]</a>, change</p>
+<pre>
+ iter_type get(iter_type in, iter_type end, ios_base&amp; str,
ios_base::iostate&amp; err, short&amp; val) const;
</pre>
<p>to</p>
-<pre> iter_type get(iter_type in, iter_type end, ios_base&amp; str,
+<pre>
+ iter_type get(iter_type in, iter_type end, ios_base&amp; str,
ios_base::iostate&amp; err, float&amp; val) const;
</pre>
<hr>
-<a name="276"><h3>276.&nbsp;Assignable requirement for container value type overly strict</h3></a><p>
-<b>Section:</b>&nbsp;23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Peter Dimov&nbsp; <b>Date:</b>&nbsp;07 Nov 2000</p>
+<a name="276"><h3>276.&nbsp;Assignable requirement for container value type overly strict</h3></a><p><b>Section:</b>&nbsp;23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Peter Dimov&nbsp; <b>Date:</b>&nbsp;07 Nov 2000</p>
<p>
23.1/3 states that the objects stored in a container must be
-Assignable. 23.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.map"> [lib.map]</a>, paragraph 2,
+Assignable. 23.3.1 <a href="lib-containers.html#lib.map"> [lib.map]</a>, paragraph 2,
states that map satisfies all requirements for a container, while in
the same time defining value_type as pair&lt;const Key, T&gt; - a type
that is not Assignable.
@@ -7475,14 +8180,14 @@ general.
<p>
For example, the proposed resolution of active library issue
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#103">103</a> is to make set::iterator a constant iterator; this
+<a href="lwg-defects.html#103">103</a> is to make set::iterator a constant iterator; this
means that no set operations can exploit the fact that the stored
objects are Assignable.
</p>
<p>
This is related to, but slightly broader than, closed issue
-<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#140">140</a>.
+<a href="lwg-closed.html#140">140</a>.
</p>
<p><b>Proposed resolution:</b></p>
<p>23.1/3: Strike the trailing part of the sentence:</p>
@@ -7542,7 +8247,8 @@ following methods are instantiated:
[Footnote: Implementors are permitted but not required to take advantage
of T's Assignable properties for these methods. -- end foonote]
</p>
-<pre> list&lt;T,Allocator&gt;&amp; operator=(const list&lt;T,Allocator&gt;&amp; x );
+<pre>
+ list&lt;T,Allocator&gt;&amp; operator=(const list&lt;T,Allocator&gt;&amp; x );
template &lt;class InputIterator&gt;
void assign(InputIterator first, InputIterator last);
void assign(size_type n, const T&amp; t);
@@ -7578,7 +8284,7 @@ to forbid such implementations.</p>
<p>Note that the type stored in a standard container must still satisfy
the requirements of the container's allocator; this rules out, for
-example, such types as "const int". See issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#274">274</a>
+example, such types as "const int". See issue <a href="lwg-defects.html#274">274</a>
for more details.
</p>
@@ -7590,12 +8296,12 @@ implement <tt>vector::push_back</tt> in terms of
<tt>vector::insert</tt>.</p>
<hr>
-<a name="278"><h3>278.&nbsp;What does iterator validity mean?</h3></a><p>
-<b>Section:</b>&nbsp;23.2.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.list.ops"> [lib.list.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;P.J. Plauger&nbsp; <b>Date:</b>&nbsp;27 Nov 2000</p>
+<a name="278"><h3>278.&nbsp;What does iterator validity mean?</h3></a><p><b>Section:</b>&nbsp;23.2.2.4 <a href="lib-containers.html#lib.list.ops"> [lib.list.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;P.J. Plauger&nbsp; <b>Date:</b>&nbsp;27 Nov 2000</p>
<p>
Section 23.2.2.4 [lib.list.ops] states that
</p>
-<pre> void splice(iterator position, list&lt;T, Allocator&gt;&amp; x);
+<pre>
+ void splice(iterator position, list&lt;T, Allocator&gt;&amp; x);
</pre>
<p>
<i>invalidates</i> all iterators and references to list <tt>x</tt>.
@@ -7610,7 +8316,7 @@ validity.
</p>
<p>
-If we accept the proposed resolution to issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#250">250</a>,
+If we accept the proposed resolution to issue <a href="lwg-defects.html#250">250</a>,
then we'd better clarify that a "valid" iterator need no
longer designate an element within the same container as it once did.
We then have to clarify what we mean by invalidating a past-the-end
@@ -7619,7 +8325,7 @@ such an iterator has a different kind of validity. Perhaps we should
introduce separate terms for the two kinds of "validity."
</p>
<p><b>Proposed resolution:</b></p>
-<p>Add the following text to the end of section 24.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>,
+<p>Add the following text to the end of section 24.1 <a href="lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>,
after paragraph 5:</p>
<blockquote>
An <i>invalid</i> iterator is an iterator that may be
@@ -7645,11 +8351,10 @@ the wording. Dave provided new wording.]</i></p>
all iterators pointing into the vector. That doesn't necessarily
mean they all become singular.</p>
<hr>
-<a name="281"><h3>281.&nbsp;std::min() and max() requirements overly restrictive</h3></a><p>
-<b>Section:</b>&nbsp;25.3.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.min.max"> [lib.alg.min.max]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;02 Dec 2000</p>
+<a name="281"><h3>281.&nbsp;std::min() and max() requirements overly restrictive</h3></a><p><b>Section:</b>&nbsp;25.3.7 <a href="lib-algorithms.html#lib.alg.min.max"> [lib.alg.min.max]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;02 Dec 2000</p>
<p>The requirements in 25.3.7, p1 and 4 call for T to satisfy the
-requirements of <tt>LessThanComparable</tt> (20.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.lessthancomparable"> [lib.lessthancomparable]</a>)
-and <tt>CopyConstructible</tt> (20.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.copyconstructible"> [lib.copyconstructible]</a>).
+requirements of <tt>LessThanComparable</tt> (20.1.2 <a href="lib-utilities.html#lib.lessthancomparable"> [lib.lessthancomparable]</a>)
+and <tt>CopyConstructible</tt> (20.1.3 <a href="lib-utilities.html#lib.copyconstructible"> [lib.copyconstructible]</a>).
Since the functions take and return their arguments and result by
const reference, I believe the <tt>CopyConstructible</tt> requirement
is unnecessary.
@@ -7657,18 +8362,15 @@ is unnecessary.
<p><b>Proposed resolution:</b></p>
<p>Remove the <tt>CopyConstructible</tt> requirement. Specifically, replace
25.3.7, p1 with</p>
-<p>
-<b>-1- Requires:</b> Type T is <tt>LessThanComparable</tt>
-(20.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.lessthancomparable"> [lib.lessthancomparable]</a>).
+<p><b>-1- Requires:</b> Type T is <tt>LessThanComparable</tt>
+(20.1.2 <a href="lib-utilities.html#lib.lessthancomparable"> [lib.lessthancomparable]</a>).
</p>
<p>and replace 25.3.7, p4 with</p>
-<p>
-<b>-4- Requires:</b> Type T is <tt>LessThanComparable</tt>
-(20.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.lessthancomparable"> [lib.lessthancomparable]</a>).
+<p><b>-4- Requires:</b> Type T is <tt>LessThanComparable</tt>
+(20.1.2 <a href="lib-utilities.html#lib.lessthancomparable"> [lib.lessthancomparable]</a>).
</p>
<hr>
-<a name="282"><h3>282.&nbsp;What types does numpunct grouping refer to?</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;5 Dec 2000</p>
+<a name="282"><h3>282.&nbsp;What types does numpunct grouping refer to?</h3></a><p><b>Section:</b>&nbsp;22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;5 Dec 2000</p>
<p>
Paragraph 16 mistakenly singles out integral types for inserting
thousands_sep() characters. This conflicts with the syntax for floating
@@ -7680,7 +8382,7 @@ point numbers described under 22.2.3.1/2.
<blockquote>
For integral types, punct.thousands_sep() characters are inserted into
the sequence as determined by the value returned by punct.do_grouping()
-using the method described in 22.2.3.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.numpunct.virtuals"> [lib.facet.numpunct.virtuals]</a>.
+using the method described in 22.2.3.1.2 <a href="lib-locales.html#lib.facet.numpunct.virtuals"> [lib.facet.numpunct.virtuals]</a>.
</blockquote>
<p>To:</p>
@@ -7688,7 +8390,7 @@ using the method described in 22.2.3.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc
<blockquote>
For arithmetic types, punct.thousands_sep() characters are inserted into
the sequence as determined by the value returned by punct.do_grouping()
-using the method described in 22.2.3.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.numpunct.virtuals"> [lib.facet.numpunct.virtuals]</a>.
+using the method described in 22.2.3.1.2 <a href="lib-locales.html#lib.facet.numpunct.virtuals"> [lib.facet.numpunct.virtuals]</a>.
</blockquote>
<p><i>[
@@ -7708,27 +8410,173 @@ floating-point input even though this is unambiguously required by the
standard.
]</i></p>
-<p><i>[Post-Curaçao: the above proposed resolution is the consensus of
+<p><i>[Post-Cura&ccedil;ao: the above proposed resolution is the consensus of
Howard, Bill, Pete, Benjamin, Nathan, Dietmar, Boris, and Martin.]</i></p>
<hr>
-<a name="284"><h3>284.&nbsp;unportable example in 20.3.7, p6</h3></a><p>
-<b>Section:</b>&nbsp;20.3.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.function.pointer.adaptors"> [lib.function.pointer.adaptors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;26 Dec 2000</p>
-<p>The example in 20.3.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.function.pointer.adaptors"> [lib.function.pointer.adaptors]</a>, p6 shows how to use the C
+<a name="283"><h3>283.&nbsp;std::replace() requirement incorrect/insufficient</h3></a><p><b>Section:</b>&nbsp;25.2.4 <a href="lib-algorithms.html#lib.alg.replace"> [lib.alg.replace]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;15 Dec 2000</p>
+<p>
+(revision of the further discussion)
+There are a number of problems with the requires clauses for the
+algorithms in 25.1 and 25.2. The requires clause of each algorithm
+should describe the necessary and sufficient requirements on the inputs
+to the algorithm such that the algorithm compiles and runs properly.
+Many of the requires clauses fail to do this. Here is a summary of the kinds
+of mistakes:
+</p>
+
+<ol>
+<li>
+Use of EqualityComparable, which only puts requirements on a single
+type, when in fact an equality operator is required between two
+different types, typically either T and the iterator's value type
+or between the value types of two different iterators.
+</li>
+<li>
+Use of Assignable for T when in fact what was needed is Assignable
+for the value_type of the iterator, and convertability from T to the
+value_type of the iterator. Or for output iterators, the requirement
+should be that T is writable to the iterator (output iterators do
+not have value types).
+</li>
+</ol>
+
+<p>
+Here is the list of algorithms that contain mistakes:
+</p>
+
+<ul>
+<li>25.1.2 std::find</li>
+<li>25.1.6 std::count</li>
+<li>25.1.8 std::equal</li>
+<li>25.1.9 std::search, std::search_n</li>
+<li>25.2.4 std::replace, std::replace_copy</li>
+<li>25.2.5 std::fill</li>
+<li>25.2.7 std::remove, std::remove_copy</li>
+</ul>
+
+<p>
+Also, in the requirements for EqualityComparable, the requirement that
+the operator be defined for const objects is lacking.
+</p>
+
+<p><b>Proposed resolution:</b></p>
+
+<p>20.1.1 Change p1 from</p>
+
+<p>In Table 28, <tt>T</tt> is a type to be supplied by a C++ program
+instantiating a template, <tt>a</tt>, <tt>b</tt>, and <tt>c</tt> are
+values of type <tt>T</tt>.
+</p>
+
+<p>to</p>
+
+<p>
+In Table 28, <tt>T</tt> is a type to be supplied by a C++ program
+instantiating a template, <tt>a</tt>, <tt>b</tt>, and <tt>c</tt> are
+values of type <tt>const T</tt>.
+</p>
+
+<p>25 Between p8 and p9</p>
+
+<p>Add the following sentence:</p>
+
+<p>When the description of an algorithm gives an expression such as
+<tt>*first == value</tt> for a condition, it is required that the expression
+evaluate to either true or false in boolean contexts.</p>
+
+<p>25.1.2 Change p1 by deleting the requires clause.</p>
+
+<p>25.1.6 Change p1 by deleting the requires clause.</p>
+
+<p>25.1.9</p>
+
+<p>Change p4 from</p>
+
+<p>-4- Requires: Type <tt>T</tt> is <tt>EqualityComparable</tt>
+(20.1.1), type Size is convertible to integral type (4.7.12.3).
+</p>
+
+<p>to</p>
+
+<p>-4- Requires: The type <tt>Size</tt> is convertible to integral
+type (4.7.12.3).</p>
+
+<p>25.2.4 Change p1 from</p>
+
+<p>-1- Requires: Type <tt>T</tt> is <tt>Assignable</tt> (23.1 ) (and, for <tt>replace()</tt>, <tt>EqualityComparable</tt> (20.1.1 )).</p>
+
+<p>to</p>
+
+<p>-1- Requires: The expression <tt>*first = new_value</tt> must be valid.</p>
+
+<p>and change p4 from</p>
+
+<p>-4- Requires: Type <tt>T</tt> is <tt>Assignable</tt> (23.1) (and,
+for <tt>replace_copy()</tt>, <tt>EqualityComparable</tt>
+(20.1.1)). The ranges <tt>[first, last)</tt> and <tt>[result, result +
+(last - first))</tt> shall not overlap.</p>
+
+<p>to</p>
+
+<p>-4- Requires: The results of the expressions <tt>*first</tt> and
+<tt>new_value</tt> must be writable to the result output iterator. The
+ranges <tt>[first, last)</tt> and <tt>[result, result + (last -
+first))</tt> shall not overlap.</p>
+
+
+<p>25.2.5 Change p1 from</p>
+
+<p>-1- Requires: Type <tt>T</tt> is <tt>Assignable</tt> (23.1). The
+type <tt>Size</tt> is convertible to an integral type (4.7.12.3).</p>
+
+<p>to</p>
+
+<p>-1- Requires: The expression <tt>value</tt> must be is writable to
+the output iterator. The type <tt>Size</tt> is convertible to an
+integral type (4.7.12.3).</p>
+
+<p>25.2.7 Change p1 from</p>
+
+<p>-1- Requires: Type <tt>T</tt> is <tt>EqualityComparable</tt> (20.1.1).</p>
+
+<p>to</p>
+
+<p>
+-1- Requires: The value type of the iterator must be
+<tt>Assignable</tt> (23.1).
+</p>
+
+<p><b>Rationale:</b></p>
+<p>
+The general idea of the proposed solution is to remove the faulty
+requires clauses and let the returns and effects clauses speak for
+themselves. That is, the returns clauses contain expressions that must
+be valid, and therefore already imply the correct requirements. In
+addition, a sentence is added at the beginning of chapter 25 saying
+that expressions given as conditions must evaluate to true or false in
+a boolean context. An alternative would be to say that the type of
+these condition expressions must be literally bool, but that would be
+imposing a greater restriction that what the standard currently says
+(which is convertible to bool).
+</p>
+<hr>
+<a name="284"><h3>284.&nbsp;unportable example in 20.3.7, p6</h3></a><p><b>Section:</b>&nbsp;20.3.7 <a href="lib-utilities.html#lib.function.pointer.adaptors"> [lib.function.pointer.adaptors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;26 Dec 2000</p>
+<p>The example in 20.3.7 <a href="lib-utilities.html#lib.function.pointer.adaptors"> [lib.function.pointer.adaptors]</a>, p6 shows how to use the C
library function <tt>strcmp()</tt> with the function pointer adapter
<tt>ptr_fun()</tt>. But since it's unspecified whether the C library
functions have <tt>extern "C"</tt> or <tt>extern
-"C++"</tt> linkage [17.4.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.using.linkage"> [lib.using.linkage]</a>], and since
+"C++"</tt> linkage [17.4.2.2 <a href="lib-intro.html#lib.using.linkage"> [lib.using.linkage]</a>], and since
function pointers with different the language linkage specifications
-(7.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/dcl.html#dcl.link"> [dcl.link]</a>) are incompatible, whether this example is
+(7.5 <a href="dcl.html#dcl.link"> [dcl.link]</a>) are incompatible, whether this example is
well-formed is unspecified.
</p>
<p><b>Proposed resolution:</b></p>
-<p>Change 20.3.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.function.pointer.adaptors"> [lib.function.pointer.adaptors]</a> paragraph 6 from:</p>
+<p>Change 20.3.7 <a href="lib-utilities.html#lib.function.pointer.adaptors"> [lib.function.pointer.adaptors]</a> paragraph 6 from:</p>
<blockquote>
- <p>[<i>Example:</i>
-</p>
- <pre> replace_if(v.begin(), v.end(), not1(bind2nd(ptr_fun(strcmp), "C")), "C++");
+ <p>[<i>Example:</i></p>
+ <pre>
+ replace_if(v.begin(), v.end(), not1(bind2nd(ptr_fun(strcmp), "C")), "C++");
</pre>
<p>replaces each <tt>C</tt> with <tt>C++</tt> in sequence <tt>v</tt>.</p>
</blockquote>
@@ -7736,9 +8584,9 @@ well-formed is unspecified.
<p>to:</p>
<blockquote>
- <p>[<i>Example:</i>
-</p>
- <pre> int compare(const char*, const char*);
+ <p>[<i>Example:</i></p>
+ <pre>
+ int compare(const char*, const char*);
replace_if(v.begin(), v.end(),
not1(bind2nd(ptr_fun(compare), "abc")), "def");
</pre>
@@ -7758,10 +8606,9 @@ aren't normative), and changed the sentence after the footnote so that
it corresponds to the new code fragment.]</i></p>
<hr>
-<a name="285"><h3>285.&nbsp;minor editorial errors in fstream ctors</h3></a><p>
-<b>Section:</b>&nbsp;27.8.1.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ifstream.cons"> [lib.ifstream.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;31 Dec 2000</p>
-<p>27.8.1.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ifstream.cons"> [lib.ifstream.cons]</a>, p2, 27.8.1.9 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ofstream.cons"> [lib.ofstream.cons]</a>, p2, and
-27.8.1.12 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.fstream.cons"> [lib.fstream.cons]</a>, p2 say about the effects of each constructor:
+<a name="285"><h3>285.&nbsp;minor editorial errors in fstream ctors</h3></a><p><b>Section:</b>&nbsp;27.8.1.6 <a href="lib-iostreams.html#lib.ifstream.cons"> [lib.ifstream.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;31 Dec 2000</p>
+<p>27.8.1.6 <a href="lib-iostreams.html#lib.ifstream.cons"> [lib.ifstream.cons]</a>, p2, 27.8.1.9 <a href="lib-iostreams.html#lib.ofstream.cons"> [lib.ofstream.cons]</a>, p2, and
+27.8.1.12 <a href="lib-iostreams.html#lib.fstream.cons"> [lib.fstream.cons]</a>, p2 say about the effects of each constructor:
</p>
<p>... If that function returns a null pointer, calls
@@ -7769,7 +8616,7 @@ it corresponds to the new code fragment.]</i></p>
</p>
<p>The parenthetical note doesn't apply since the ctors cannot throw an
-exception due to the requirement in 27.4.4.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a>, p3
+exception due to the requirement in 27.4.4.1 <a href="lib-iostreams.html#lib.basic.ios.cons"> [lib.basic.ios.cons]</a>, p3
that <tt>exceptions()</tt> be initialized to <tt>ios_base::goodbit</tt>.
</p>
<p><b>Proposed resolution:</b></p>
@@ -7778,8 +8625,7 @@ Strike the parenthetical note from the Effects clause in each of the
paragraphs mentioned above.
</p>
<hr>
-<a name="286"><h3>286.&nbsp;&lt;cstdlib&gt; requirements missing size_t typedef</h3></a><p>
-<b>Section:</b>&nbsp;25.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.c.library"> [lib.alg.c.library]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;30 Dec 2000</p>
+<a name="286"><h3>286.&nbsp;&lt;cstdlib&gt; requirements missing size_t typedef</h3></a><p><b>Section:</b>&nbsp;25.4 <a href="lib-algorithms.html#lib.alg.c.library"> [lib.alg.c.library]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;30 Dec 2000</p>
<p>
The &lt;cstdlib&gt; header file contains prototypes for bsearch and
qsort (C++ Standard section 25.4 paragraphs 3 and 4) and other
@@ -7795,8 +8641,7 @@ the type size_t &lt;cstdlib&gt; to Table 97 (section C.2).
<p><b>Rationale:</b></p>
<p>Since size_t is in &lt;stdlib.h&gt;, it must also be in &lt;cstdlib&gt;.</p>
<hr>
-<a name="288"><h3>288.&nbsp;&lt;cerrno&gt; requirements missing macro EILSEQ</h3></a><p>
-<b>Section:</b>&nbsp;19.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-diagnostics.html#lib.errno"> [lib.errno]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;30 Dec 2000</p>
+<a name="288"><h3>288.&nbsp;&lt;cerrno&gt; requirements missing macro EILSEQ</h3></a><p><b>Section:</b>&nbsp;19.3 <a href="lib-diagnostics.html#lib.errno"> [lib.errno]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Judy Ward&nbsp; <b>Date:</b>&nbsp;30 Dec 2000</p>
<p>
ISO/IEC 9899:1990/Amendment1:1994 Section 4.3 States: "The list
of macros defined in &lt;errno.h&gt; is adjusted to include a new
@@ -7814,8 +8659,108 @@ Update Table 26 (section 19.3) "Header &lt;cerrno&gt; synopsis"
and Table 95 (section C.2) "Standard Macros" to include EILSEQ.
</p>
<hr>
-<a name="292"><h3>292.&nbsp;effects of a.copyfmt (a)</h3></a><p>
-<b>Section:</b>&nbsp;27.4.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.basic.ios.members"> [lib.basic.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;05 Jan 2001</p>
+<a name="291"><h3>291.&nbsp;Underspecification of set algorithms</h3></a><p><b>Section:</b>&nbsp;25.3.5 <a href="lib-algorithms.html#lib.alg.set.operations"> [lib.alg.set.operations]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;03 Jan 2001</p>
+<p>
+The standard library contains four algorithms that compute set
+operations on sorted ranges: <tt>set_union</tt>, <tt>set_intersection</tt>,
+<tt>set_difference</tt>, and <tt>set_symmetric_difference</tt>. Each
+of these algorithms takes two sorted ranges as inputs, and writes the
+output of the appropriate set operation to an output range. The elements
+in the output range are sorted.
+</p>
+
+<p>
+The ordinary mathematical definitions are generalized so that they
+apply to ranges containing multiple copies of a given element. Two
+elements are considered to be "the same" if, according to an
+ordering relation provided by the user, neither one is less than the
+other. So, for example, if one input range contains five copies of an
+element and another contains three, the output range of <tt>set_union</tt>
+will contain five copies, the output range of
+<tt>set_intersection</tt> will contain three, the output range of
+<tt>set_difference</tt> will contain two, and the output range of
+<tt>set_symmetric_difference</tt> will contain two.
+</p>
+
+<p>
+Because two elements can be "the same" for the purposes
+of these set algorithms, without being identical in other respects
+(consider, for example, strings under case-insensitive comparison),
+this raises a number of unanswered questions:
+</p>
+
+<ul>
+<li>If we're copying an element that's present in both of the
+input ranges, which one do we copy it from?</li>
+<li>If there are <i>n</i> copies of an element in the relevant
+input range, and the output range will contain fewer copies (say
+<i>m</i>) which ones do we choose? The first <i>m</i>, or the last
+<i>m</i>, or something else?</li>
+<li>Are these operations stable? That is, does a run of equivalent
+elements appear in the output range in the same order as as it
+appeared in the input range(s)?</li>
+</ul>
+
+<p>
+The standard should either answer these questions, or explicitly
+say that the answers are unspecified. I prefer the former option,
+since, as far as I know, all existing implementations behave the
+same way.
+</p>
+
+<p><b>Proposed resolution:</b></p>
+
+<p>Add the following to the end of 25.3.5.2 <a href="lib-algorithms.html#lib.set.union"> [lib.set.union]</a> paragraph 5:</p>
+<blockquote>
+If [first1, last1) contains <i>m</i> elements that are equivalent to
+each other and [first2, last2) contains <i>n</i> elements that are
+equivalent to them, then max(<i>m</i>, <i>n</i>) of these elements
+will be copied to the output range: all <i>m</i> of these elements
+from [first1, last1), and the last max(<i>n-m</i>, 0) of them from
+[first2, last2), in that order.
+</blockquote>
+
+<p>Add the following to the end of 25.3.5.3 <a href="lib-algorithms.html#lib.set.intersection"> [lib.set.intersection]</a> paragraph 5:</p>
+<blockquote>
+If [first1, last1) contains <i>m</i> elements that are equivalent to each
+other and [first2, last2) contains <i>n</i> elements that are
+equivalent to them, the first min(<i>m</i>, <i>n</i>) of those
+elements from [first1, last1) are copied to the output range.
+</blockquote>
+
+<p>Add a new paragraph, <b>Notes</b>, after 25.3.5.4 <a href="lib-algorithms.html#lib.set.difference"> [lib.set.difference]</a>
+paragraph 4:</p>
+<blockquote>
+If [first1, last1) contains <i>m</i> elements that are equivalent to each
+other and [first2, last2) contains <i>n</i> elements that are
+equivalent to them, the last max(<i>m-n</i>, 0) elements from
+[first1, last1) are copied to the output range.
+</blockquote>
+
+<p>Add a new paragraph, <b>Notes</b>, after 25.3.5.5 <a href="lib-algorithms.html#lib.set.symmetric.difference"> [lib.set.symmetric.difference]</a>
+paragraph 4:</p>
+<blockquote>
+If [first1, last1) contains <i>m</i> elements that are equivalent to
+each other and [first2, last2) contains <i>n</i> elements that are
+equivalent to them, then |<i>m - n</i>| of those elements will be
+copied to the output range: the last <i>m - n</i> of these elements
+from [first1, last1) if <i>m</i> &gt; <i>n</i>, and the last <i>n -
+m</i> of these elements from [first2, last2) if <i>m</i> &lt; <i>n</i>.
+</blockquote>
+
+<p><i>[Santa Cruz: it's believed that this language is clearer than
+ what's in the Standard. However, it's also believed that the
+ Standard may already make these guarantees (although not quite in
+ these words). Bill and Howard will check and see whether they think
+ that some or all of these changes may be redundant. If so, we may
+ close this issue as NAD.]</i></p>
+
+<p><b>Rationale:</b></p>
+<p>For simple cases, these descriptions are equivalent to what's
+ already in the Standard. For more complicated cases, they describe
+ the behavior of existing implementations.</p>
+<hr>
+<a name="292"><h3>292.&nbsp;effects of a.copyfmt (a)</h3></a><p><b>Section:</b>&nbsp;27.4.4.2 <a href="lib-iostreams.html#lib.basic.ios.members"> [lib.basic.ios.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;05 Jan 2001</p>
<p>The Effects clause of the member function <tt>copyfmt()</tt> in
27.4.4.2, p15 doesn't consider the case where the left-hand side
argument is identical to the argument on the right-hand side, that is
@@ -7843,8 +8788,7 @@ assigns to the member objects of <tt>*this</tt> the corresponding member
objects of <tt>rhs</tt>, except that...
</blockquote>
<hr>
-<a name="295"><h3>295.&nbsp;Is abs defined in &lt;cmath&gt;?</h3></a><p>
-<b>Section:</b>&nbsp;26.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.c.math"> [lib.c.math]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Jens Maurer&nbsp; <b>Date:</b>&nbsp;12 Jan 2001</p>
+<a name="295"><h3>295.&nbsp;Is abs defined in &lt;cmath&gt;?</h3></a><p><b>Section:</b>&nbsp;26.5 <a href="lib-numerics.html#lib.c.math"> [lib.c.math]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Jens Maurer&nbsp; <b>Date:</b>&nbsp;12 Jan 2001</p>
<p>
Table 80 lists the contents of the &lt;cmath&gt; header. It does not
list <tt>abs()</tt>. However, 26.5, paragraph 6, which lists added
@@ -7854,7 +8798,7 @@ of <tt>abs()</tt> should be defined in &lt;cmath&gt;.
<p><b>Proposed resolution:</b></p>
<p>
Add <tt>abs</tt> to Table 80. Also, remove the parenthetical list
-of functions "(abs(), div(), rand(), srand())" from 26.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-numerics.html#lib.c.math"> [lib.c.math]</a>,
+of functions "(abs(), div(), rand(), srand())" from 26.5 <a href="lib-numerics.html#lib.c.math"> [lib.c.math]</a>,
paragraph 1.
</p>
@@ -7865,10 +8809,9 @@ rid of that vestigial list of functions in paragraph 1.]</i></p>
<p>All this DR does is fix a typo; it's uncontroversial. A
separate question is whether we're doing the right thing in
putting some overloads in &lt;cmath&gt; that we aren't also
-putting in &lt;cstdlib&gt;. That's issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#323">323</a>.</p>
+putting in &lt;cstdlib&gt;. That's issue <a href="lwg-closed.html#323">323</a>.</p>
<hr>
-<a name="297"><h3>297.&nbsp;const_mem_fun_t&lt;&gt;::argument_type should be const T*</h3></a><p>
-<b>Section:</b>&nbsp;20.3.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.member.pointer.adaptors"> [lib.member.pointer.adaptors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;6 Jan 2001</p>
+<a name="297"><h3>297.&nbsp;const_mem_fun_t&lt;&gt;::argument_type should be const T*</h3></a><p><b>Section:</b>&nbsp;20.3.8 <a href="lib-utilities.html#lib.member.pointer.adaptors"> [lib.member.pointer.adaptors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;6 Jan 2001</p>
<p>The class templates <tt>const_mem_fun_t</tt> in 20.3.8, p8 and
<tt>const_mem_fun1_t</tt>
in 20.3.8, p9 derive from <tt>unary_function&lt;T*, S&gt;</tt>, and
@@ -7883,8 +8826,7 @@ example below derived from existing code fails to compile due to the
discrepancy:
</p>
-<p>
-<tt>template &lt;class T&gt;</tt>
+<p><tt>template &lt;class T&gt;</tt>
<br><tt>void foo (typename T::argument_type arg)&nbsp;&nbsp; // #1</tt>
<br><tt>{</tt>
<br><tt>&nbsp;&nbsp;&nbsp; typename T::result_type (T::*pf) (typename
@@ -7896,8 +8838,7 @@ const =&nbsp;&nbsp; // #2</tt>
<p><tt>struct X { /* ... */ };</tt></p>
-<p>
-<tt>int main ()</tt>
+<p><tt>int main ()</tt>
<br><tt>{</tt>
<br><tt>&nbsp;&nbsp;&nbsp; const X x;</tt>
<br><tt>&nbsp;&nbsp;&nbsp; foo&lt;std::const_mem_fun_t&lt;void, X&gt;
@@ -7916,27 +8857,23 @@ function
<p>Replace the top portion of the definition of the class template
const_mem_fun_t in 20.3.8, p8
</p>
-<p>
-<tt>template &lt;class S, class T&gt; class const_mem_fun_t</tt>
+<p><tt>template &lt;class S, class T&gt; class const_mem_fun_t</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : public
unary_function&lt;T*, S&gt; {</tt>
</p>
<p>with</p>
-<p>
-<tt>template &lt;class S, class T&gt; class const_mem_fun_t</tt>
+<p><tt>template &lt;class S, class T&gt; class const_mem_fun_t</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : public
unary_function&lt;<b>const</b> T*, S&gt; {</tt>
</p>
<p>Also replace the top portion of the definition of the class template
const_mem_fun1_t in 20.3.8, p9</p>
-<p>
-<tt>template &lt;class S, class T, class A&gt; class const_mem_fun1_t</tt>
+<p><tt>template &lt;class S, class T, class A&gt; class const_mem_fun1_t</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : public
binary_function&lt;T*, A, S&gt; {</tt>
</p>
<p>with</p>
-<p>
-<tt>template &lt;class S, class T, class A&gt; class const_mem_fun1_t</tt>
+<p><tt>template &lt;class S, class T, class A&gt; class const_mem_fun1_t</tt>
<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : public
binary_function&lt;<b>const</b> T*, A, S&gt; {</tt>
</p>
@@ -7944,8 +8881,7 @@ binary_function&lt;<b>const</b> T*, A, S&gt; {</tt>
<p>This is simply a contradiction: the <tt>argument_type</tt> typedef,
and the argument type itself, are not the same.</p>
<hr>
-<a name="298"><h3>298.&nbsp;::operator delete[] requirement incorrect/insufficient</h3></a><p>
-<b>Section:</b>&nbsp;18.4.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.new.delete.array"> [lib.new.delete.array]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;John A. Pedretti&nbsp; <b>Date:</b>&nbsp;10 Jan 2001</p>
+<a name="298"><h3>298.&nbsp;::operator delete[] requirement incorrect/insufficient</h3></a><p><b>Section:</b>&nbsp;18.4.1.2 <a href="lib-support.html#lib.new.delete.array"> [lib.new.delete.array]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;John A. Pedretti&nbsp; <b>Date:</b>&nbsp;10 Jan 2001</p>
<p>
The default behavior of <tt>operator delete[]</tt> described in 18.4.1.2, p12 -
namely that for non-null value of <i>ptr</i>, the operator reclaims storage
@@ -7968,7 +8904,7 @@ For a null value of <i><tt>ptr</tt></i> , does nothing.
Any other value of <i><tt>ptr</tt></i> shall be a value returned
earlier by a call to the default <tt>operator new[](std::size_t)</tt>.
[Footnote: The value must not have been invalidated by an intervening
-call to <tt>operator delete[](void*)</tt> (17.4.3.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.res.on.arguments"> [lib.res.on.arguments]</a>).
+call to <tt>operator delete[](void*)</tt> (17.4.3.7 <a href="lib-intro.html#lib.res.on.arguments"> [lib.res.on.arguments]</a>).
--- end footnote]
For such a non-null value of <i><tt>ptr</tt></i> , reclaims storage
allocated by the earlier call to the default <tt>operator new[]</tt>.
@@ -7985,8 +8921,7 @@ or <tt>operator delete(<i>ptr</i>, std::nothrow)</tt> respectively.
</blockquote>
<p>and expunge paragraph 13.</p>
<hr>
-<a name="300"><h3>300.&nbsp;list::merge() specification incomplete</h3></a><p>
-<b>Section:</b>&nbsp;23.2.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.list.ops"> [lib.list.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;John Pedretti&nbsp; <b>Date:</b>&nbsp;23 Jan 2001</p>
+<a name="300"><h3>300.&nbsp;list::merge() specification incomplete</h3></a><p><b>Section:</b>&nbsp;23.2.2.4 <a href="lib-containers.html#lib.list.ops"> [lib.list.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;John Pedretti&nbsp; <b>Date:</b>&nbsp;23 Jan 2001</p>
<p>
The "Effects" clause for list::merge() (23.2.2.4, p23)
appears to be incomplete: it doesn't cover the case where the argument
@@ -7995,7 +8930,7 @@ note in p24 (below) is that x be empty after the merge which is surely
unintended in this case.
</p>
<p><b>Proposed resolution:</b></p>
-<p>In 23.2.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, replace paragraps 23-25 with:</p>
+<p>In 23.2.2.4 <a href="lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, replace paragraps 23-25 with:</p>
<blockquote>
<p>
23 Effects: if (&amp;x == this) does nothing; otherwise, merges the two
@@ -8024,17 +8959,16 @@ effects.
</blockquote>
<p><i>[Copenhagen: The original proposed resolution did not fix all of
-the problems in 23.2.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, p22-25. Three different
+the problems in 23.2.2.4 <a href="lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, p22-25. Three different
paragraphs (23, 24, 25) describe the effects of <tt>merge</tt>.
Changing p23, without changing the other two, appears to introduce
contradictions. Additionally, "merges the argument list into the
list" is excessively vague.]</i></p>
-<p><i>[Post-Curaçao: Robert Klarer provided new wording.]</i></p>
+<p><i>[Post-Cura&ccedil;ao: Robert Klarer provided new wording.]</i></p>
<hr>
-<a name="301"><h3>301.&nbsp;basic_string template ctor effects clause omits allocator argument</h3></a><p>
-<b>Section:</b>&nbsp;21.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.string.cons"> [lib.string.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;27 Jan 2001</p>
+<a name="301"><h3>301.&nbsp;basic_string template ctor effects clause omits allocator argument</h3></a><p><b>Section:</b>&nbsp;21.3.1 <a href="lib-strings.html#lib.string.cons"> [lib.string.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;27 Jan 2001</p>
<p>
The effects clause for the basic_string template ctor in 21.3.1, p15
leaves out the third argument of type Allocator. I believe this to be
@@ -8044,8 +8978,7 @@ a mistake.
<p>Replace</p>
<blockquote>
- <p>
-<b>-15- Effects:</b> If <i><tt>InputIterator</tt></i> is an integral
+ <p><b>-15- Effects:</b> If <i><tt>InputIterator</tt></i> is an integral
type, equivalent to</p>
<blockquote><tt>basic_string(static_cast&lt;size_type&gt;(begin),
@@ -8055,16 +8988,14 @@ a mistake.
<p>with</p>
<blockquote>
- <p>
-<b>-15- Effects:</b> If <i><tt>InputIterator</tt></i> is an integral
+ <p><b>-15- Effects:</b> If <i><tt>InputIterator</tt></i> is an integral
type, equivalent to</p>
<blockquote><tt>basic_string(static_cast&lt;size_type&gt;(begin),
static_cast&lt;value_type&gt;(end), <b>a</b>)</tt></blockquote>
</blockquote>
<hr>
-<a name="303"><h3>303.&nbsp;Bitset input operator underspecified</h3></a><p>
-<b>Section:</b>&nbsp;23.3.5.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.bitset.operators"> [lib.bitset.operators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;5 Feb 2001</p>
+<a name="303"><h3>303.&nbsp;Bitset input operator underspecified</h3></a><p><b>Section:</b>&nbsp;23.3.5.3 <a href="lib-containers.html#lib.bitset.operators"> [lib.bitset.operators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;5 Feb 2001</p>
<p>
In 23.3.5.3, we are told that <tt>bitset</tt>'s input operator
"Extracts up to <i>N</i> (single-byte) characters from
@@ -8169,8 +9100,7 @@ input. Using <tt>widen</tt> does mean that alternative digit
representations will not be recognized, but this was a known
consequence of the design choice.</p>
<hr>
-<a name="305"><h3>305.&nbsp;Default behavior of codecvt&lt;wchar_t, char, mbstate_t&gt;::length()</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;24 Jan 2001</p>
+<a name="305"><h3>305.&nbsp;Default behavior of codecvt&lt;wchar_t, char, mbstate_t&gt;::length()</h3></a><p><b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;24 Jan 2001</p>
<p>22.2.1.5/3 introduces codecvt in part with:</p>
<blockquote>
@@ -8278,12 +9208,11 @@ single external character), but this would rule out important
encodings that are in common use: it would rule out JIS, for
example, and it would rule out a fixed-width encoding of UCS-4.</p>
-<p><i>[Curaçao: fixed rationale typo at the request of Ichiro Koshida;
+<p><i>[Cura&ccedil;ao: fixed rationale typo at the request of Ichiro Koshida;
"shift-JIS" changed to "JIS".]</i></p>
<hr>
-<a name="306"><h3>306.&nbsp;offsetof macro and non-POD types</h3></a><p>
-<b>Section:</b>&nbsp;18.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.support.types"> [lib.support.types]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;21 Feb 2001</p>
+<a name="306"><h3>306.&nbsp;offsetof macro and non-POD types</h3></a><p><b>Section:</b>&nbsp;18.1 <a href="lib-support.html#lib.support.types"> [lib.support.types]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;21 Feb 2001</p>
<p>Spliced together from reflector messages c++std-lib-8294 and -8295:</p>
<p>18.1, paragraph 5, reads: "The macro <tt>offsetof</tt>
@@ -8294,7 +9223,7 @@ that is a static data member or a function member is
undefined."</p>
<p>For the POD requirement, it doesn't say "no diagnostic
-required" or "undefined behavior". I read 1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/intro.html#intro.compliance"> [intro.compliance]</a>, paragraph 1, to mean that a diagnostic is required.
+required" or "undefined behavior". I read 1.4 <a href="intro.html#intro.compliance"> [intro.compliance]</a>, paragraph 1, to mean that a diagnostic is required.
It's not clear whether this requirement was intended. While it's
possible to provide such a diagnostic, the extra complication doesn't
seem to add any value.
@@ -8309,14 +9238,13 @@ members thought that diagnostics should be required whenever
possible.]</i></p>
<hr>
-<a name="307"><h3>307.&nbsp;Lack of reference typedefs in container adaptors</h3></a><p>
-<b>Section:</b>&nbsp;23.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.adaptors"> [lib.container.adaptors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;13 Mar 2001</p>
+<a name="307"><h3>307.&nbsp;Lack of reference typedefs in container adaptors</h3></a><p><b>Section:</b>&nbsp;23.2.3 <a href="lib-containers.html#lib.container.adaptors"> [lib.container.adaptors]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;13 Mar 2001</p>
<p>From reflector message c++std-lib-8330. See also lib-8317.</p>
<p>
-The standard is currently inconsistent in 23.2.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.priority.queue"> [lib.priority.queue]</a>
-paragraph 1 and 23.2.3.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.stack"> [lib.stack]</a> paragraph 1.
+The standard is currently inconsistent in 23.2.3.2 <a href="lib-containers.html#lib.priority.queue"> [lib.priority.queue]</a>
+paragraph 1 and 23.2.3.3 <a href="lib-containers.html#lib.stack"> [lib.stack]</a> paragraph 1.
23.2.3.3/1, for example, says:
</p>
@@ -8342,7 +9270,7 @@ container's reference type.</p>
<p>
I propose 3. This does not preclude option 2 if we choose to do it
-later (see issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#96">96</a>); the issues are independent. Option
+later (see issue <a href="lwg-active.html#96">96</a>); the issues are independent. Option
3 offers a small step towards support for proxied containers. This
small step fixes a current contradiction, is easy for vendors to
implement, is already implemented in at least one popular lib, and
@@ -8357,7 +9285,8 @@ priority_queue and stack. Change return types of "value_type&amp;" to
<p>Change 23.2.3.1/1 from:</p>
-<pre> namespace std {
+<pre>
+ namespace std {
template &lt;class T, class Container = deque&lt;T&gt; &gt;
class queue {
public:
@@ -8383,7 +9312,8 @@ priority_queue and stack. Change return types of "value_type&amp;" to
<p>to:</p>
-<pre> namespace std {
+<pre>
+ namespace std {
template &lt;class T, class Container = deque&lt;T&gt; &gt;
class queue {
public:
@@ -8412,7 +9342,8 @@ priority_queue and stack. Change return types of "value_type&amp;" to
<p>Change 23.2.3.2/1 from:</p>
-<pre> namespace std {
+<pre>
+ namespace std {
template &lt;class T, class Container = vector&lt;T&gt;,
class Compare = less&lt;typename Container::value_type&gt; &gt;
class priority_queue {
@@ -8444,7 +9375,8 @@ priority_queue and stack. Change return types of "value_type&amp;" to
<p>to:</p>
-<pre> namespace std {
+<pre>
+ namespace std {
template &lt;class T, class Container = vector&lt;T&gt;,
class Compare = less&lt;typename Container::value_type&gt; &gt;
class priority_queue {
@@ -8478,7 +9410,8 @@ priority_queue and stack. Change return types of "value_type&amp;" to
<p>And change 23.2.3.3/1 from:</p>
-<pre> namespace std {
+<pre>
+ namespace std {
template &lt;class T, class Container = deque&lt;T&gt; &gt;
class stack {
public:
@@ -8522,7 +9455,8 @@ priority_queue and stack. Change return types of "value_type&amp;" to
<p>to:</p>
-<pre> namespace std {
+<pre>
+ namespace std {
template &lt;class T, class Container = deque&lt;T&gt; &gt;
class stack {
public:
@@ -8571,15 +9505,14 @@ and it was deliberately not adopted. Nevertheless, the LWG believes
(straw poll: 10-2) that it is a genuine defect.]</i></p>
<hr>
-<a name="308"><h3>308.&nbsp;Table 82 mentions unrelated headers</h3></a><p>
-<b>Section:</b>&nbsp;27 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;15 Mar 2001</p>
+<a name="308"><h3>308.&nbsp;Table 82 mentions unrelated headers</h3></a><p><b>Section:</b>&nbsp;27 <a href="lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;15 Mar 2001</p>
<p>
Table 82 in section 27 mentions the header &lt;cstdlib&gt; for String
-streams (27.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.string.streams"> [lib.string.streams]</a>) and the headers &lt;cstdio&gt; and
-&lt;cwchar&gt; for File streams (27.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.file.streams"> [lib.file.streams]</a>). It's not clear
+streams (27.7 <a href="lib-iostreams.html#lib.string.streams"> [lib.string.streams]</a>) and the headers &lt;cstdio&gt; and
+&lt;cwchar&gt; for File streams (27.8 <a href="lib-iostreams.html#lib.file.streams"> [lib.file.streams]</a>). It's not clear
why these headers are mentioned in this context since they do not
define any of the library entities described by the
-subclauses. According to 17.4.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.contents"> [lib.contents]</a>, only such headers
+subclauses. According to 17.4.1.1 <a href="lib-intro.html#lib.contents"> [lib.contents]</a>, only such headers
are to be listed in the summary.
</p>
<p><b>Proposed resolution:</b></p>
@@ -8589,11 +9522,10 @@ Table 82.</p>
<p><i>[Copenhagen: changed the proposed resolution slightly. The
original proposed resolution also said to remove &lt;cstdio&gt; from
Table 82. However, &lt;cstdio&gt; is mentioned several times within
-section 27.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.file.streams"> [lib.file.streams]</a>, including 27.8.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.c.files"> [lib.c.files]</a>.]</i></p>
+section 27.8 <a href="lib-iostreams.html#lib.file.streams"> [lib.file.streams]</a>, including 27.8.2 <a href="lib-iostreams.html#lib.c.files"> [lib.c.files]</a>.]</i></p>
<hr>
-<a name="310"><h3>310.&nbsp;Is errno a macro?</h3></a><p>
-<b>Section:</b>&nbsp;17.4.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.headers"> [lib.headers]</a>, 19.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-diagnostics.html#lib.errno"> [lib.errno]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;21 Mar 2001</p>
+<a name="310"><h3>310.&nbsp;Is errno a macro?</h3></a><p><b>Section:</b>&nbsp;17.4.1.2 <a href="lib-intro.html#lib.headers"> [lib.headers]</a>, 19.3 <a href="lib-diagnostics.html#lib.errno"> [lib.errno]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Steve Clamage&nbsp; <b>Date:</b>&nbsp;21 Mar 2001</p>
<p>
Exactly how should errno be declared in a conforming C++ header?
</p>
@@ -8677,15 +9609,15 @@ not a name is a macro; it must explicitly specify exactly which names
are required to be macros. The only one that really works is for it
to be a macro.</p>
-<p><i>[Curaçao: additional rationale added.]</i></p>
+<p><i>[Cura&ccedil;ao: additional rationale added.]</i></p>
<hr>
-<a name="311"><h3>311.&nbsp;Incorrect wording in basic_ostream class synopsis</h3></a><p>
-<b>Section:</b>&nbsp;27.6.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream"> [lib.ostream]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andy Sawyer&nbsp; <b>Date:</b>&nbsp;21 Mar 2001</p>
+<a name="311"><h3>311.&nbsp;Incorrect wording in basic_ostream class synopsis</h3></a><p><b>Section:</b>&nbsp;27.6.2.1 <a href="lib-iostreams.html#lib.ostream"> [lib.ostream]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andy Sawyer&nbsp; <b>Date:</b>&nbsp;21 Mar 2001</p>
-<p>In 27.6.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream"> [lib.ostream]</a>, the synopsis of class basic_ostream says:</p>
+<p>In 27.6.2.1 <a href="lib-iostreams.html#lib.ostream"> [lib.ostream]</a>, the synopsis of class basic_ostream says:</p>
-<pre> // partial specializationss
+<pre>
+ // partial specializationss
template&lt;class traits&gt;
basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;( basic_ostream&lt;char,traits&gt;&amp;,
const char * );
@@ -8698,31 +9630,29 @@ to be a macro.</p>
</ul>
<p><b>Proposed resolution:</b></p>
-<p>In the synopsis in 27.6.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream"> [lib.ostream]</a>, remove the
+<p>In the synopsis in 27.6.2.1 <a href="lib-iostreams.html#lib.ostream"> [lib.ostream]</a>, remove the
<i>// partial specializationss</i> comment. Also remove the same
comment (correctly spelled, but still incorrect) from the synopsis in
-27.6.2.5.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.inserters.character"> [lib.ostream.inserters.character]</a>.
+27.6.2.5.4 <a href="lib-iostreams.html#lib.ostream.inserters.character"> [lib.ostream.inserters.character]</a>.
</p>
<p><i>[
-Pre-Redmond: added 27.6.2.5.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.inserters.character"> [lib.ostream.inserters.character]</a> because of Martin's
+Pre-Redmond: added 27.6.2.5.4 <a href="lib-iostreams.html#lib.ostream.inserters.character"> [lib.ostream.inserters.character]</a> because of Martin's
comment in c++std-lib-8939.
]</i></p>
<hr>
-<a name="312"><h3>312.&nbsp;Table 27 is missing headers</h3></a><p>
-<b>Section:</b>&nbsp;20 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.utilities"> [lib.utilities]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;29 Mar 2001</p>
+<a name="312"><h3>312.&nbsp;Table 27 is missing headers</h3></a><p><b>Section:</b>&nbsp;20 <a href="lib-utilities.html#lib.utilities"> [lib.utilities]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;29 Mar 2001</p>
<p>Table 27 in section 20 lists the header &lt;memory&gt; (only) for
Memory (lib.memory) but neglects to mention the headers
-&lt;cstdlib&gt; and &lt;cstring&gt; that are discussed in 20.4.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.c.malloc"> [lib.c.malloc]</a>.</p>
+&lt;cstdlib&gt; and &lt;cstring&gt; that are discussed in 20.4.6 <a href="lib-utilities.html#lib.c.malloc"> [lib.c.malloc]</a>.</p>
<p><b>Proposed resolution:</b></p>
<p>Add &lt;cstdlib&gt; and &lt;cstring&gt; to Table 27, in the same row
as &lt;memory&gt;.</p>
<hr>
-<a name="315"><h3>315.&nbsp;Bad "range" in list::unique complexity</h3></a><p>
-<b>Section:</b>&nbsp;23.2.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.list.ops"> [lib.list.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andy Sawyer&nbsp; <b>Date:</b>&nbsp;1 May 2001</p>
+<a name="315"><h3>315.&nbsp;Bad "range" in list::unique complexity</h3></a><p><b>Section:</b>&nbsp;23.2.2.4 <a href="lib-containers.html#lib.list.ops"> [lib.list.ops]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andy Sawyer&nbsp; <b>Date:</b>&nbsp;1 May 2001</p>
<p>
-23.2.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, Para 21 describes the complexity of
+23.2.2.4 <a href="lib-containers.html#lib.list.ops"> [lib.list.ops]</a>, Para 21 describes the complexity of
list::unique as: "If the range (last - first) is not empty, exactly
(last - first) -1 applications of the corresponding predicate,
otherwise no applications of the predicate)".
@@ -8736,8 +9666,7 @@ otherwise no applications of the predicate)".
Change the "range" from (last - first) to [first, last).
</p>
<hr>
-<a name="316"><h3>316.&nbsp;Vague text in Table 69</h3></a><p>
-<b>Section:</b>&nbsp;23.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;4 May 2001</p>
+<a name="316"><h3>316.&nbsp;Vague text in Table 69</h3></a><p><b>Section:</b>&nbsp;23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;4 May 2001</p>
<p>Table 69 says this about a_uniq.insert(t):</p>
<blockquote>
@@ -8757,8 +9686,7 @@ indicates whether the insertion takes place.</p>
takes place...
</blockquote>
<hr>
-<a name="317"><h3>317.&nbsp;Instantiation vs. specialization of facets</h3></a><p>
-<b>Section:</b>&nbsp;22 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.localization"> [lib.localization]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;4 May 2001</p>
+<a name="317"><h3>317.&nbsp;Instantiation vs. specialization of facets</h3></a><p><b>Section:</b>&nbsp;22 <a href="lib-locales.html#lib.localization"> [lib.localization]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;4 May 2001</p>
<p>
The localization section of the standard refers to specializations of
the facet templates as instantiations even though the required facets
@@ -8807,12 +9735,12 @@ describe templates was clarified during the standardization process,
but the wording in clause 22 was never updated to reflect that
change.</p>
<hr>
-<a name="318"><h3>318.&nbsp;Misleading comment in definition of numpunct_byname</h3></a><p>
-<b>Section:</b>&nbsp;22.2.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.numpunct.byname"> [lib.locale.numpunct.byname]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;12 May 2001</p>
+<a name="318"><h3>318.&nbsp;Misleading comment in definition of numpunct_byname</h3></a><p><b>Section:</b>&nbsp;22.2.3.2 <a href="lib-locales.html#lib.locale.numpunct.byname"> [lib.locale.numpunct.byname]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;12 May 2001</p>
<p>The definition of the numpunct_byname template contains the following
comment:</p>
-<pre> namespace std {
+<pre>
+ namespace std {
template &lt;class charT&gt;
class numpunct_byname : public numpunct&lt;charT&gt; {
// this class is specialized for char and wchar_t.
@@ -8824,15 +9752,14 @@ conceivable that an implementation will not explicitly specialize the
template at all, but simply provide the primary template.</p>
<p><b>Proposed resolution:</b></p>
<p>Remove the comment from the text in 22.2.3.2 and from the proposed
-resolution of library issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#228">228</a>.</p>
+resolution of library issue <a href="lwg-defects.html#228">228</a>.</p>
<hr>
-<a name="319"><h3>319.&nbsp;Storage allocation wording confuses "Required behavior", "Requires"</h3></a><p>
-<b>Section:</b>&nbsp;18.4.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.new.delete.single"> [lib.new.delete.single]</a>, 18.4.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.new.delete.array"> [lib.new.delete.array]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;15 May 2001</p>
-<p>The standard specifies 17.3.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.structure.specifications"> [lib.structure.specifications]</a> that "Required
+<a name="319"><h3>319.&nbsp;Storage allocation wording confuses "Required behavior", "Requires"</h3></a><p><b>Section:</b>&nbsp;18.4.1.1 <a href="lib-support.html#lib.new.delete.single"> [lib.new.delete.single]</a>, 18.4.1.2 <a href="lib-support.html#lib.new.delete.array"> [lib.new.delete.array]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;15 May 2001</p>
+<p>The standard specifies 17.3.1.3 <a href="lib-intro.html#lib.structure.specifications"> [lib.structure.specifications]</a> that "Required
behavior" elements describe "the semantics of a function definition
provided by either the implementation or a C++ program."</p>
-<p>The standard specifies 17.3.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.structure.specifications"> [lib.structure.specifications]</a> that "Requires"
+<p>The standard specifies 17.3.1.3 <a href="lib-intro.html#lib.structure.specifications"> [lib.structure.specifications]</a> that "Requires"
elements describe "the preconditions for calling the function."</p>
<p>In the sections noted below, the current wording specifies
@@ -8841,7 +9768,7 @@ should be specified as "Requires".</p>
<p><b>Proposed resolution:</b></p>
-<p>In 18.4.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.new.delete.single"> [lib.new.delete.single]</a> Para 12 Change:</p>
+<p>In 18.4.1.1 <a href="lib-support.html#lib.new.delete.single"> [lib.new.delete.single]</a> Para 12 Change:</p>
<blockquote>
<p>Required behavior: accept a value of ptr that is null or that was
returned by an earlier call ...</p>
@@ -8852,7 +9779,7 @@ should be specified as "Requires".</p>
earlier call ...</p>
</blockquote>
-<p>In 18.4.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.new.delete.array"> [lib.new.delete.array]</a> Para 11 Change:</p>
+<p>In 18.4.1.2 <a href="lib-support.html#lib.new.delete.array"> [lib.new.delete.array]</a> Para 11 Change:</p>
<blockquote>
<p>Required behavior: accept a value of ptr that is null or that was
returned by an earlier call ...</p>
@@ -8864,8 +9791,7 @@ should be specified as "Requires".</p>
</blockquote>
<hr>
-<a name="320"><h3>320.&nbsp;list::assign overspecified</h3></a><p>
-<b>Section:</b>&nbsp;23.2.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.list.cons"> [lib.list.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;17 May 2001</p>
+<a name="320"><h3>320.&nbsp;list::assign overspecified</h3></a><p><b>Section:</b>&nbsp;23.2.2.1 <a href="lib-containers.html#lib.list.cons"> [lib.list.cons]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Howard Hinnant&nbsp; <b>Date:</b>&nbsp;17 May 2001</p>
<p>
Section 23.2.2.1, paragraphs 6-8 specify that list assign (both forms) have
the "effects" of a call to erase followed by a call to insert.
@@ -8896,7 +9822,8 @@ Metrowerks and SGI recycle nodes, Dinkumware and Rogue Wave don't.
<blockquote>
<p>Effects:</p>
-<pre> erase(begin(), end());
+<pre>
+ erase(begin(), end());
insert(begin(), first, last);
</pre>
</blockquote>
@@ -8907,9 +9834,10 @@ Metrowerks and SGI recycle nodes, Dinkumware and Rogue Wave don't.
<p>Effects: Replaces the contents of the list with the range [first, last).</p>
</blockquote>
-<p>In 23.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>, in Table 67 (sequence requirements),
+<p>In 23.1.1 <a href="lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>, in Table 67 (sequence requirements),
add two new rows:</p>
-<pre> a.assign(i,j) void pre: i,j are not iterators into a.
+<pre>
+ a.assign(i,j) void pre: i,j are not iterators into a.
Replaces elements in a with a copy
of [i, j).
@@ -8922,7 +9850,8 @@ add two new rows:</p>
<blockquote>
<p>Effects:</p>
-<pre> erase(begin(), end());
+<pre>
+ erase(begin(), end());
insert(begin(), n, t);
</pre>
</blockquote>
@@ -8942,14 +9871,13 @@ overspecification; it would effectively mandate that assignment use a
temporary. Howard provided wording.
]</i></p>
-<p><i>[Curaçao: Made editorial improvement in wording; changed
+<p><i>[Cura&ccedil;ao: Made editorial improvement in wording; changed
"Replaces elements in a with copies of elements in [i, j)."
with "Replaces the elements of a with a copy of [i, j)."
Changes not deemed serious enough to requre rereview.]</i></p>
<hr>
-<a name="321"></a><h3><a name="321">321.&nbsp;Typo in num_get</a></h3><p>
-<b>Section:</b>&nbsp;22.2.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Kevin Djang&nbsp; <b>Date:</b>&nbsp;17 May 2001</p>
+<a name="321"><h3>321.&nbsp;Typo in num_get</h3></a><p><b>Section:</b>&nbsp;22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Kevin Djang&nbsp; <b>Date:</b>&nbsp;17 May 2001</p>
<p>
Section 22.2.2.1.2 at p7 states that "A length specifier is added to
the conversion function, if needed, as indicated in Table 56."
@@ -8964,8 +9892,7 @@ to be "A length modifier is added ..."
<p><b>Rationale:</b></p>
<p>C uses the term "length modifier". We should be consistent.</p>
<hr>
-<a name="322"><h3>322.&nbsp;iterator and const_iterator should have the same value type</h3></a><p>
-<b>Section:</b>&nbsp;23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;17 May 2001</p>
+<a name="322"><h3>322.&nbsp;iterator and const_iterator should have the same value type</h3></a><p><b>Section:</b>&nbsp;23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;17 May 2001</p>
<p>
It's widely assumed that, if X is a container,
iterator_traits&lt;X::iterator&gt;::value_type and
@@ -8977,7 +9904,7 @@ iterator_traits&lt;X::const_iterator&gt;::value_type should be "const
X::value_type".
</p>
-<p>Related issue: <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-closed.html#279">279</a>.</p>
+<p>Related issue: <a href="lwg-closed.html#279">279</a>.</p>
<p><b>Proposed resolution:</b></p>
<p>In Table 65 ("Container Requirements"), change the return type for
X::iterator to "iterator type whose value type is T". Change the
@@ -8997,8 +9924,7 @@ the way that const pointers are handled: the standard already
requires that iterator_traits&lt;const int*&gt;::value_type is int.
</p>
<hr>
-<a name="324"><h3>324.&nbsp;Do output iterators have value types?</h3></a><p>
-<b>Section:</b>&nbsp;24.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.output.iterators"> [lib.output.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;7 June 2001</p>
+<a name="324"><h3>324.&nbsp;Do output iterators have value types?</h3></a><p><b>Section:</b>&nbsp;24.1.2 <a href="lib-iterators.html#lib.output.iterators"> [lib.output.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Dave Abrahams&nbsp; <b>Date:</b>&nbsp;7 June 2001</p>
<p>Table 73 suggests that output iterators have value types. It
requires the expression "*a = t". Additionally, although Table 73
@@ -9069,8 +9995,7 @@ the particular iterator type of <tt>i</tt>.
<p>24.1 p9, add</p>
<blockquote>
-<p>
-<tt>o</tt> denotes a value of some type that is writable to the
+<p><tt>o</tt> denotes a value of some type that is writable to the
output iterator.
</p>
</blockquote>
@@ -9078,28 +10003,32 @@ output iterator.
<p>Table 73, change</p>
<blockquote>
-<pre>*a = t
+<pre>
+*a = t
</pre>
</blockquote>
<p>to</p>
<blockquote>
-<pre>*r = o
+<pre>
+*r = o
</pre>
</blockquote>
<p>and change</p>
<blockquote>
-<pre>*r++ = t
+<pre>
+*r++ = t
</pre>
</blockquote>
<p>to</p>
<blockquote>
-<pre>*r++ = o
+<pre>
+*r++ = o
</pre>
</blockquote>
@@ -9117,8 +10046,7 @@ and any language suggesting otherwise is simply a mistake.</p>
<p>A future revision of the standard may wish to revisit this design
decision.</p>
<hr>
-<a name="325"><h3>325.&nbsp;Misleading text in moneypunct&lt;&gt;::do_grouping</h3></a><p>
-<b>Section:</b>&nbsp;22.2.6.3.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.moneypunct.virtuals"> [lib.locale.moneypunct.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;02 Jul 2001</p>
+<a name="325"><h3>325.&nbsp;Misleading text in moneypunct&lt;&gt;::do_grouping</h3></a><p><b>Section:</b>&nbsp;22.2.6.3.2 <a href="lib-locales.html#lib.locale.moneypunct.virtuals"> [lib.locale.moneypunct.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;02 Jul 2001</p>
<p>The Returns clause in 22.2.6.3.2, p3 says about
moneypunct&lt;charT&gt;::do_grouping()
</p>
@@ -9170,8 +10098,7 @@ locale. It is just a reminder that the values are interpreted as small
integers, not ASCII characters.
</p>
<hr>
-<a name="327"><h3>327.&nbsp;Typo in time_get facet in table 52</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.category"> [lib.locale.category]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Tiki Wan&nbsp; <b>Date:</b>&nbsp;06 Jul 2001</p>
+<a name="327"><h3>327.&nbsp;Typo in time_get facet in table 52</h3></a><p><b>Section:</b>&nbsp;22.1.1.1.1 <a href="lib-locales.html#lib.locale.category"> [lib.locale.category]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Tiki Wan&nbsp; <b>Date:</b>&nbsp;06 Jul 2001</p>
<p>The <tt>wchar_t</tt> versions of <tt>time_get</tt> and
<tt>time_get_byname</tt> are listed incorrectly in table 52,
required instantiations. In both cases the second template
@@ -9180,12 +10107,14 @@ InputIterator, since these are input facets.</p>
<p><b>Proposed resolution:</b></p>
<p>
In table 52, required instantiations, in
-22.1.1.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.category"> [lib.locale.category]</a>, change</p>
-<pre> time_get&lt;wchar_t, OutputIterator&gt;
+22.1.1.1.1 <a href="lib-locales.html#lib.locale.category"> [lib.locale.category]</a>, change</p>
+<pre>
+ time_get&lt;wchar_t, OutputIterator&gt;
time_get_byname&lt;wchar_t, OutputIterator&gt;
</pre>
<p>to</p>
-<pre> time_get&lt;wchar_t, InputIterator&gt;
+<pre>
+ time_get&lt;wchar_t, InputIterator&gt;
time_get_byname&lt;wchar_t, InputIterator&gt;
</pre>
@@ -9193,8 +10122,7 @@ In table 52, required instantiations, in
a typo, wchart instead of wchar_t.]</i></p>
<hr>
-<a name="328"><h3>328.&nbsp;Bad sprintf format modifier in money_put&lt;&gt;::do_put()</h3></a><p>
-<b>Section:</b>&nbsp;22.2.6.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.money.put.virtuals"> [lib.locale.money.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;07 Jul 2001</p>
+<a name="328"><h3>328.&nbsp;Bad sprintf format modifier in money_put&lt;&gt;::do_put()</h3></a><p><b>Section:</b>&nbsp;22.2.6.2.2 <a href="lib-locales.html#lib.locale.money.put.virtuals"> [lib.locale.money.put.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;07 Jul 2001</p>
<p>The sprintf format string , "%.01f" (that's the digit one), in the
description of the do_put() member functions of the money_put facet in
22.2.6.2.2, p1 is incorrect. First, the f format specifier is wrong
@@ -9207,12 +10135,11 @@ modifier.</p>
<p><b>Rationale:</b></p>
<p>Fixes an obvious typo</p>
<hr>
-<a name="329"><h3>329.&nbsp;vector capacity, reserve and reallocation</h3></a><p>
-<b>Section:</b>&nbsp;23.2.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.capacity"> [lib.vector.capacity]</a>, 23.2.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.modifiers"> [lib.vector.modifiers]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Anthony Williams&nbsp; <b>Date:</b>&nbsp;13 Jul 2001</p>
+<a name="329"><h3>329.&nbsp;vector capacity, reserve and reallocation</h3></a><p><b>Section:</b>&nbsp;23.2.4.2 <a href="lib-containers.html#lib.vector.capacity"> [lib.vector.capacity]</a>, 23.2.4.3 <a href="lib-containers.html#lib.vector.modifiers"> [lib.vector.modifiers]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Anthony Williams&nbsp; <b>Date:</b>&nbsp;13 Jul 2001</p>
<p>
There is an apparent contradiction about which circumstances can cause
-a reallocation of a vector in Section 23.2.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.capacity"> [lib.vector.capacity]</a> and
-section 23.2.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.modifiers"> [lib.vector.modifiers]</a>.
+a reallocation of a vector in Section 23.2.4.2 <a href="lib-containers.html#lib.vector.capacity"> [lib.vector.capacity]</a> and
+section 23.2.4.3 <a href="lib-containers.html#lib.vector.modifiers"> [lib.vector.modifiers]</a>.
</p>
<p>23.2.4.2p5 says:</p>
@@ -9226,7 +10153,8 @@ greater than the size specified in the most recent call to reserve().
<p>Which implies if I do</p>
-<pre> std::vector&lt;int&gt; vec;
+<pre>
+ std::vector&lt;int&gt; vec;
vec.reserve(23);
vec.reserve(0);
vec.insert(vec.end(),1);
@@ -9264,7 +10192,7 @@ than the old capacity, I think the intent is clear.
</p>
<p><b>Proposed resolution:</b></p>
-<p>Change the wording of 23.2.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.capacity"> [lib.vector.capacity]</a> paragraph 5 to:</p>
+<p>Change the wording of 23.2.4.2 <a href="lib-containers.html#lib.vector.capacity"> [lib.vector.capacity]</a> paragraph 5 to:</p>
<blockquote>
Notes: Reallocation invalidates all the references, pointers, and
@@ -9288,16 +10216,16 @@ the argument to the first, the intent was for the second invocation to
have no effect. Wording implying that such cases have an effect on
reallocation guarantees was inadvertant.</p>
<hr>
-<a name="331"><h3>331.&nbsp;bad declaration of destructor for ios_base::failure</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios::failure"> [lib.ios::failure]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;PremAnand M. Rao&nbsp; <b>Date:</b>&nbsp;23 Aug 2001</p>
+<a name="331"><h3>331.&nbsp;bad declaration of destructor for ios_base::failure</h3></a><p><b>Section:</b>&nbsp;27.4.2.1.1 <a href="lib-iostreams.html#lib.ios::failure"> [lib.ios::failure]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;PremAnand M. Rao&nbsp; <b>Date:</b>&nbsp;23 Aug 2001</p>
<p>
-With the change in 17.4.4.8 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.res.on.exception.handling"> [lib.res.on.exception.handling]</a> to state
+With the change in 17.4.4.8 <a href="lib-intro.html#lib.res.on.exception.handling"> [lib.res.on.exception.handling]</a> to state
"An implementation may strengthen the exception-specification for a
non-virtual function by removing listed exceptions."
-(issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#119">119</a>)
+(issue <a href="lwg-defects.html#119">119</a>)
and the following declaration of ~failure() in ios_base::failure
</p>
-<pre> namespace std {
+<pre>
+ namespace std {
class ios_base::failure : public exception {
public:
...
@@ -9306,9 +10234,10 @@ and the following declaration of ~failure() in ios_base::failure
};
}
</pre>
-<p>the class failure cannot be implemented since in 18.6.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.exception"> [lib.exception]</a> the destructor of class exception has an empty
+<p>the class failure cannot be implemented since in 18.6.1 <a href="lib-support.html#lib.exception"> [lib.exception]</a> the destructor of class exception has an empty
exception specification:</p>
-<pre> namespace std {
+<pre>
+ namespace std {
class exception {
public:
...
@@ -9323,9 +10252,8 @@ exception specification:</p>
<p>The proposed resolution is consistent with the way that destructors
of other classes derived from <tt>exception</tt> are handled.</p>
<hr>
-<a name="333"><h3>333.&nbsp;does endl imply synchronization with the device?</h3></a><p>
-<b>Section:</b>&nbsp;27.6.2.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.manip"> [lib.ostream.manip]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;PremAnand M. Rao&nbsp; <b>Date:</b>&nbsp;27 Aug 2001</p>
-<p>A footnote in 27.6.2.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.manip"> [lib.ostream.manip]</a> states:</p>
+<a name="333"><h3>333.&nbsp;does endl imply synchronization with the device?</h3></a><p><b>Section:</b>&nbsp;27.6.2.7 <a href="lib-iostreams.html#lib.ostream.manip"> [lib.ostream.manip]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;PremAnand M. Rao&nbsp; <b>Date:</b>&nbsp;27 Aug 2001</p>
+<p>A footnote in 27.6.2.7 <a href="lib-iostreams.html#lib.ostream.manip"> [lib.ostream.manip]</a> states:</p>
<blockquote>
[Footnote: The effect of executing cout &lt;&lt; endl is to insert a
newline character in the output sequence controlled by cout, then
@@ -9350,7 +10278,7 @@ I could not find any other statement that explicitly defined
the behavior one way or the other.
</p>
<p><b>Proposed resolution:</b></p>
-<p>Remove footnote 300 from section 27.6.2.7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.manip"> [lib.ostream.manip]</a>.</p>
+<p>Remove footnote 300 from section 27.6.2.7 <a href="lib-iostreams.html#lib.ostream.manip"> [lib.ostream.manip]</a>.</p>
<p><b>Rationale:</b></p>
<p>We already have normative text saying what <tt>endl</tt> does: it
inserts a newline character and calls <tt>flush</tt>. This footnote
@@ -9358,8 +10286,7 @@ is at best redundant, at worst (as this issue says) misleading,
because it appears to make promises about what <tt>flush</tt>
does.</p>
<hr>
-<a name="334"><h3>334.&nbsp;map::operator[] specification forces inefficient implementation</h3></a><p>
-<b>Section:</b>&nbsp;23.3.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.map.access"> [lib.map.access]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andrea Griffini&nbsp; <b>Date:</b>&nbsp;02 Sep 2001</p>
+<a name="334"><h3>334.&nbsp;map::operator[] specification forces inefficient implementation</h3></a><p><b>Section:</b>&nbsp;23.3.1.2 <a href="lib-containers.html#lib.map.access"> [lib.map.access]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andrea Griffini&nbsp; <b>Date:</b>&nbsp;02 Sep 2001</p>
<p>
The current standard describes map::operator[] using a
code example. That code example is however quite
@@ -9371,7 +10298,8 @@ require all those temporary copies.
</p>
<p>Currently map::operator[] behaviour is specified as: </p>
-<pre> Returns:
+<pre>
+ Returns:
(*((insert(make_pair(x, T()))).first)).second.
</pre>
@@ -9398,7 +10326,8 @@ construction for each type).
</p>
<p>A simple (half) solution would be replacing the description with:</p>
-<pre> Returns:
+<pre>
+ Returns:
(*((insert(value_type(x, T()))).first)).second.
</pre>
@@ -9436,7 +10365,7 @@ non-conforming.
<p><b>Proposed resolution:</b></p>
<p>
-Replace 23.3.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.map.access"> [lib.map.access]</a> paragraph 1 with
+Replace 23.3.1.2 <a href="lib-containers.html#lib.map.access"> [lib.map.access]</a> paragraph 1 with
</p>
<blockquote>
<p>
@@ -9455,7 +10384,7 @@ value_type(x, T()) into the map.
wording. We may also wish to have a blanket statement somewhere in
clause 17 saying that we do not intend the semantics of sample code
fragments to be interpreted as specifing exactly how many copies are
-made. See issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#98">98</a> for a similar problem.]</i></p>
+made. See issue <a href="lwg-defects.html#98">98</a> for a similar problem.]</i></p>
<p><b>Rationale:</b></p>
<p>
@@ -9467,13 +10396,13 @@ consistent with existing practice.
we are no longer defining <tt>operator[]</tt> in terms of
<tt>insert</tt>.</p>
<hr>
-<a name="335"><h3>335.&nbsp;minor issue with char_traits, table 37</h3></a><p>
-<b>Section:</b>&nbsp;21.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.char.traits.require"> [lib.char.traits.require]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andy Sawyer&nbsp; <b>Date:</b>&nbsp;06 Sep 2001</p>
+<a name="335"><h3>335.&nbsp;minor issue with char_traits, table 37</h3></a><p><b>Section:</b>&nbsp;21.1.1 <a href="lib-strings.html#lib.char.traits.require"> [lib.char.traits.require]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andy Sawyer&nbsp; <b>Date:</b>&nbsp;06 Sep 2001</p>
<p>
-Table 37, in 21.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.char.traits.require"> [lib.char.traits.require]</a>, descibes char_traits::assign
+Table 37, in 21.1.1 <a href="lib-strings.html#lib.char.traits.require"> [lib.char.traits.require]</a>, descibes char_traits::assign
as:
</p>
-<pre> X::assign(c,d) assigns c = d.
+<pre>
+ X::assign(c,d) assigns c = d.
</pre>
<p>And para 1 says:</p>
@@ -9490,7 +10419,8 @@ assign, at least), 'c' is intended to be a reference type.
<p>I did a quick survey of the four implementations I happened to have
lying around, and sure enough they all have signatures:</p>
-<pre> assign( charT&amp;, const charT&amp; );
+<pre>
+ assign( charT&amp;, const charT&amp; );
</pre>
<p>(or the equivalent). It's also described this way in Nico's book.
@@ -9504,14 +10434,14 @@ and char_traits&lt;wchar_t&gt; in 21.1.3.2...)
</blockquote>
<p>and change the description of assign in the table to:</p>
-<pre> X::assign(r,d) assigns r = d
+<pre>
+ X::assign(r,d) assigns r = d
</pre>
<hr>
-<a name="336"><h3>336.&nbsp;Clause 17 lack of references to deprecated headers</h3></a><p>
-<b>Section:</b>&nbsp;17 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.library"> [lib.library]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Detlef Vollmann&nbsp; <b>Date:</b>&nbsp;05 Sep 2001</p>
+<a name="336"><h3>336.&nbsp;Clause 17 lack of references to deprecated headers</h3></a><p><b>Section:</b>&nbsp;17 <a href="lib-intro.html#lib.library"> [lib.library]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Detlef Vollmann&nbsp; <b>Date:</b>&nbsp;05 Sep 2001</p>
<p>From c++std-edit-873:</p>
-<p>17.4.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.headers"> [lib.headers]</a>, Table 11. In this table, the header
+<p>17.4.1.2 <a href="lib-intro.html#lib.headers"> [lib.headers]</a>, Table 11. In this table, the header
&lt;strstream&gt; is missing.</p>
<p>This shows a general problem: The whole clause 17 refers quite
@@ -9520,49 +10450,47 @@ library (though a deprecated one).</p>
<p><b>Proposed resolution:</b></p>
-<p>To 17.4.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.headers"> [lib.headers]</a> Table 11, C++ Library Headers, add
+<p>To 17.4.1.2 <a href="lib-intro.html#lib.headers"> [lib.headers]</a> Table 11, C++ Library Headers, add
"&lt;strstream&gt;".</p>
<p>In the following places, change "clauses 17 through 27" to "clauses
17 through 27 and Annex D":</p>
<ul>
-<li>1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/intro.html#intro.refs"> [intro.refs]</a> Normative references/1/footnote 1</li>
-<li>1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/intro.html#intro.defs"> [intro.defs]</a> Definitions/1</li>
-<li>7 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/dcl.html#dcl.dcl"> [dcl.dcl]</a> Library introduction/9</li>
-<li>17.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.description"> [lib.description]</a> Method of description (Informative)/1</li>
-<li>17.3.2.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.character.seq"> [lib.character.seq]</a> Character sequences/1/bullet 2</li>
-<li>17.3.2.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.functions.within.classes"> [lib.functions.within.classes]</a> Functions within classes/1</li>
-<li>17.3.2.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.objects.within.classes"> [lib.objects.within.classes]</a> Private members/1/(2 places)</li>
-<li>17.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.requirements"> [lib.requirements]</a> Library-wide requirements/1</li>
-<li>17.4.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.headers"> [lib.headers]</a> Headers/4</li>
-<li>17.4.3.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.replacement.functions"> [lib.replacement.functions]</a> Replacement functions/1</li>
-<li>17.4.4.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.global.functions"> [lib.global.functions]</a> Global or non-member functions/2</li>
-<li>17.4.4.6 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.protection.within.classes"> [lib.protection.within.classes]</a> Protection within classes/1</li>
+<li>1.2 <a href="intro.html#intro.refs"> [intro.refs]</a> Normative references/1/footnote 1</li>
+<li>1.3 <a href="intro.html#intro.defs"> [intro.defs]</a> Definitions/1</li>
+<li>7 <a href="dcl.html#dcl.dcl"> [dcl.dcl]</a> Library introduction/9</li>
+<li>17.3 <a href="lib-intro.html#lib.description"> [lib.description]</a> Method of description (Informative)/1</li>
+<li>17.3.2.1.3 <a href="lib-intro.html#lib.character.seq"> [lib.character.seq]</a> Character sequences/1/bullet 2</li>
+<li>17.3.2.2 <a href="lib-intro.html#lib.functions.within.classes"> [lib.functions.within.classes]</a> Functions within classes/1</li>
+<li>17.3.2.3 <a href="lib-intro.html#lib.objects.within.classes"> [lib.objects.within.classes]</a> Private members/1/(2 places)</li>
+<li>17.4 <a href="lib-intro.html#lib.requirements"> [lib.requirements]</a> Library-wide requirements/1</li>
+<li>17.4.1.2 <a href="lib-intro.html#lib.headers"> [lib.headers]</a> Headers/4</li>
+<li>17.4.3.4 <a href="lib-intro.html#lib.replacement.functions"> [lib.replacement.functions]</a> Replacement functions/1</li>
+<li>17.4.4.3 <a href="lib-intro.html#lib.global.functions"> [lib.global.functions]</a> Global or non-member functions/2</li>
+<li>17.4.4.6 <a href="lib-intro.html#lib.protection.within.classes"> [lib.protection.within.classes]</a> Protection within classes/1</li>
</ul>
<hr>
-<a name="337"><h3>337.&nbsp;replace_copy_if's template parameter should be InputIterator</h3></a><p>
-<b>Section:</b>&nbsp;25.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.replace"> [lib.alg.replace]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Detlef Vollmann&nbsp; <b>Date:</b>&nbsp;07 Sep 2001</p>
+<a name="337"><h3>337.&nbsp;replace_copy_if's template parameter should be InputIterator</h3></a><p><b>Section:</b>&nbsp;25.2.4 <a href="lib-algorithms.html#lib.alg.replace"> [lib.alg.replace]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Detlef Vollmann&nbsp; <b>Date:</b>&nbsp;07 Sep 2001</p>
<p>From c++std-edit-876:</p>
<p>
-In section 25.2.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-algorithms.html#lib.alg.replace"> [lib.alg.replace]</a> before p4: The name of the first
+In section 25.2.4 <a href="lib-algorithms.html#lib.alg.replace"> [lib.alg.replace]</a> before p4: The name of the first
parameter of template replace_copy_if should be "InputIterator"
-instead of "Iterator". According to 17.3.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.type.descriptions"> [lib.type.descriptions]</a> p1 the
+instead of "Iterator". According to 17.3.2.1 <a href="lib-intro.html#lib.type.descriptions"> [lib.type.descriptions]</a> p1 the
parameter name conveys real normative meaning.
</p>
<p><b>Proposed resolution:</b></p>
<p>Change <tt>Iterator</tt> to <tt>InputIterator</tt>.</p>
<hr>
-<a name="338"><h3>338.&nbsp; is whitespace allowed between `-' and a digit?</h3></a><p>
-<b>Section:</b>&nbsp;22.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.categories"> [lib.locale.categories]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;17 Sep 2001</p>
+<a name="338"><h3>338.&nbsp; is whitespace allowed between `-' and a digit?</h3></a><p><b>Section:</b>&nbsp;22.2 <a href="lib-locales.html#lib.locale.categories"> [lib.locale.categories]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;17 Sep 2001</p>
<p>
-From Stage 2 processing in 22.2.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>, p8 and 9 (the
+From Stage 2 processing in 22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>, p8 and 9 (the
original text or the text corrected by the proposed resolution of
-issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#221">221</a>) it seems clear that no whitespace is allowed
-within a number, but 22.2.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.numpunct"> [lib.locale.numpunct]</a>, p2, which gives the
+issue <a href="lwg-defects.html#221">221</a>) it seems clear that no whitespace is allowed
+within a number, but 22.2.3.1 <a href="lib-locales.html#lib.locale.numpunct"> [lib.locale.numpunct]</a>, p2, which gives the
format for integer and floating point values, says that whitespace is
optional between a plusminus and a sign.
</p>
@@ -9572,10 +10500,10 @@ The text needs to be clarified to either consistently allow or
disallow whitespace between a plusminus and a sign. It might be
worthwhile to consider the fact that the C library stdio facility does
not permit whitespace embedded in numbers and neither does the C or
-C++ core language (the syntax of integer-literals is given in 2.13.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lex.html#lex.icon"> [lex.icon]</a>, that of floating-point-literals in 2.13.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lex.html#lex.fcon"> [lex.fcon]</a> of the C++ standard).
+C++ core language (the syntax of integer-literals is given in 2.13.1 <a href="lex.html#lex.icon"> [lex.icon]</a>, that of floating-point-literals in 2.13.3 <a href="lex.html#lex.fcon"> [lex.fcon]</a> of the C++ standard).
</p>
<p><b>Proposed resolution:</b></p>
-<p>Change the first part of 22.2.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.numpunct"> [lib.locale.numpunct]</a> paragraph 2 from:</p>
+<p>Change the first part of 22.2.3.1 <a href="lib-locales.html#lib.locale.numpunct"> [lib.locale.numpunct]</a> paragraph 2 from:</p>
<blockquote>
<p>
The syntax for number formats is as follows, where <tt>digit</tt>
@@ -9586,7 +10514,8 @@ value, <tt>whitespace</tt> is as determined by the facet
<tt>numpunct&lt;charT&gt;</tt> members. Integer values have the
format:
</p>
-<pre> integer ::= [sign] units
+<pre>
+ integer ::= [sign] units
sign ::= plusminus [whitespace]
plusminus ::= '+' | '-'
units ::= digits [thousands-sep units]
@@ -9602,7 +10531,8 @@ value, and <tt>thousands-sep</tt> and <tt>decimal-point</tt> are the
results of corresponding <tt>numpunct&lt;charT&gt;</tt> members.
Integer values have the format:
</p>
-<pre> integer ::= [sign] units
+<pre>
+ integer ::= [sign] units
sign ::= plusminus
plusminus ::= '+' | '-'
units ::= digits [thousands-sep units]
@@ -9610,17 +10540,16 @@ Integer values have the format:
</pre>
</blockquote>
<p><b>Rationale:</b></p>
-<p>It's not clear whether the format described in 22.2.3.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.numpunct"> [lib.locale.numpunct]</a> paragraph 2 has any normative weight: nothing in the
+<p>It's not clear whether the format described in 22.2.3.1 <a href="lib-locales.html#lib.locale.numpunct"> [lib.locale.numpunct]</a> paragraph 2 has any normative weight: nothing in the
standard says how, or whether, it's used. However, there's no reason
for it to differ gratuitously from the very specific description of
-numeric processing in 22.2.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>. The proposed
+numeric processing in 22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>. The proposed
resolution removes all mention of "whitespace" from that format.</p>
<hr>
-<a name="339"><h3>339.&nbsp;definition of bitmask type restricted to clause 27</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.category.ctype"> [lib.category.ctype]</a>, 17.3.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.bitmask.types"> [lib.bitmask.types]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;17 September 2001</p>
+<a name="339"><h3>339.&nbsp;definition of bitmask type restricted to clause 27</h3></a><p><b>Section:</b>&nbsp;22.2.1 <a href="lib-locales.html#lib.category.ctype"> [lib.category.ctype]</a>, 17.3.2.1.2 <a href="lib-intro.html#lib.bitmask.types"> [lib.bitmask.types]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;17 September 2001</p>
<p>
-The ctype_category::mask type is declared to be an enum in 22.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.category.ctype"> [lib.category.ctype]</a> with p1 then stating that it is a bitmask type, most
-likely referring to the definition of bitmask type in 17.3.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.bitmask.types"> [lib.bitmask.types]</a>, p1. However, the said definition only applies to
+The ctype_category::mask type is declared to be an enum in 22.2.1 <a href="lib-locales.html#lib.category.ctype"> [lib.category.ctype]</a> with p1 then stating that it is a bitmask type, most
+likely referring to the definition of bitmask type in 17.3.2.1.2 <a href="lib-intro.html#lib.bitmask.types"> [lib.bitmask.types]</a>, p1. However, the said definition only applies to
clause 27, making the reference in 22.2.1 somewhat dubious.
</p>
<p><b>Proposed resolution:</b></p>
@@ -9628,7 +10557,7 @@ clause 27, making the reference in 22.2.1 somewhat dubious.
<blockquote>
Several types defined in clause 27 are bitmask types. Each bitmask type
can be implemented as an enumerated type that overloads certain operators,
- as an integer type, or as a bitset (23.3.5 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.template.bitset"> [lib.template.bitset]</a>).
+ as an integer type, or as a bitset (23.3.5 <a href="lib-containers.html#lib.template.bitset"> [lib.template.bitset]</a>).
</blockquote>
<p>to read</p>
<blockquote>
@@ -9647,7 +10576,8 @@ following (note, in particluar, the cross-reference to 17.3.2.1.2 in
<blockquote>
<p>22.2.1 The ctype category [lib.category.ctype]</p>
-<pre>namespace std {
+<pre>
+namespace std {
class ctype_base {
public:
typedef <b><i>T</i></b> mask;
@@ -9668,16 +10598,15 @@ following (note, in particluar, the cross-reference to 17.3.2.1.2 in
}
</pre>
-<p>The type <tt>mask</tt> is a bitmask type (17.3.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-intro.html#lib.bitmask.types"> [lib.bitmask.types]</a>).</p>
+<p>The type <tt>mask</tt> is a bitmask type (17.3.2.1.2 <a href="lib-intro.html#lib.bitmask.types"> [lib.bitmask.types]</a>).</p>
</blockquote>
-<p><i>[Curaçao: The LWG notes that T above should be bold-italics to be
+<p><i>[Cura&ccedil;ao: The LWG notes that T above should be bold-italics to be
consistent with the rest of the standard.]</i></p>
<hr>
<a name="340"><h3>340.&nbsp;interpretation of <tt>has_facet&lt;Facet&gt;(loc)</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.category"> [lib.locale.category]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2001</p>
+</h3></a><p><b>Section:</b>&nbsp;22.1.1.1.1 <a href="lib-locales.html#lib.locale.category"> [lib.locale.category]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2001</p>
<p>
It's unclear whether 22.1.1.1.1, p3 says that
<tt>has_facet&lt;Facet&gt;(loc)</tt> returns true for any <tt>Facet</tt>
@@ -9724,7 +10653,7 @@ to hold only for specializations of <tt>Facet</tt> from Table 52 on
}.
</p>
<p><b>Proposed resolution:</b></p>
-<p>In 22.1.1.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.category"> [lib.locale.category]</a>, paragraph 3, change
+<p>In 22.1.1.1.1 <a href="lib-locales.html#lib.locale.category"> [lib.locale.category]</a>, paragraph 3, change
"that is a member of a standard category" to "shown in Table 51".</p>
<p><b>Rationale:</b></p>
<p>The facets in Table 52 are an unbounded set. Locales should not be
@@ -9734,26 +10663,26 @@ required to contain an infinite number of facets.</p>
OutputIterator must be supported. Table 51 already contains a
complete list of the ones we need.</p>
<hr>
-<a name="341"><h3>341.&nbsp;Vector reallocation and swap</h3></a><p>
-<b>Section:</b>&nbsp;23.2.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.capacity"> [lib.vector.capacity]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Anthony Williams&nbsp; <b>Date:</b>&nbsp;27 Sep 2001</p>
+<a name="341"><h3>341.&nbsp;Vector reallocation and swap</h3></a><p><b>Section:</b>&nbsp;23.2.4.2 <a href="lib-containers.html#lib.vector.capacity"> [lib.vector.capacity]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Anthony Williams&nbsp; <b>Date:</b>&nbsp;27 Sep 2001</p>
<p>It is a common idiom to reduce the capacity of a vector by swapping it with
an empty one:</p>
-<pre> std::vector&lt;SomeType&gt; vec;
+<pre>
+ std::vector&lt;SomeType&gt; vec;
// fill vec with data
std::vector&lt;SomeType&gt;().swap(vec);
// vec is now empty, with minimal capacity
</pre>
-<p>However, the wording of 23.2.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.capacity"> [lib.vector.capacity]</a>paragraph 5 prevents
+<p>However, the wording of 23.2.4.2 <a href="lib-containers.html#lib.vector.capacity"> [lib.vector.capacity]</a>paragraph 5 prevents
the capacity of a vector being reduced, following a call to
reserve(). This invalidates the idiom, as swap() is thus prevented
-from reducing the capacity. The proposed wording for issue <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#329">329</a> does not affect this. Consequently, the example above
+from reducing the capacity. The proposed wording for issue <a href="lwg-defects.html#329">329</a> does not affect this. Consequently, the example above
requires the temporary to be expanded to cater for the contents of
vec, and the contents be copied across. This is a linear-time
operation.</p>
<p>However, the container requirements state that swap must have constant
-complexity (23.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> note to table 65).</p>
+complexity (23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> note to table 65).</p>
<p>This is an important issue, as reallocation affects the validity of
references and iterators.</p>
@@ -9775,15 +10704,14 @@ pointing to the same element. Consequently iterators and references that
referred to one vector now refer to the other, and vice-versa.</li>
</ol>
<p><b>Proposed resolution:</b></p>
-<p>Add a new paragraph after 23.2.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.vector.capacity"> [lib.vector.capacity]</a> paragraph 5:</p>
+<p>Add a new paragraph after 23.2.4.2 <a href="lib-containers.html#lib.vector.capacity"> [lib.vector.capacity]</a> paragraph 5:</p>
<blockquote>
-<pre> void swap(vector&lt;T,Allocator&gt;&amp; x);
+<pre>
+ void swap(vector&lt;T,Allocator&gt;&amp; x);
</pre>
-<p>
-<b>Effects:</b> Exchanges the contents and capacity() of <tt>*this</tt>
+<p><b>Effects:</b> Exchanges the contents and capacity() of <tt>*this</tt>
with that of <tt>x</tt>.</p>
-<p>
-<b>Complexity:</b> Constant time.</p>
+<p><b>Complexity:</b> Constant time.</p>
</blockquote>
<p><i>[This solves the problem reported for this issue. We may also
@@ -9797,18 +10725,16 @@ do pointer twiddling, and that it should exchange all properties of
the two vectors, including their reallocation guarantees.
</p>
<hr>
-<a name="345"><h3>345.&nbsp;type tm in &lt;cwchar&gt;</h3></a><p>
-<b>Section:</b>&nbsp;21.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.c.strings"> [lib.c.strings]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Clark Nelson&nbsp; <b>Date:</b>&nbsp;19 Oct 2001</p>
+<a name="345"><h3>345.&nbsp;type tm in &lt;cwchar&gt;</h3></a><p><b>Section:</b>&nbsp;21.4 <a href="lib-strings.html#lib.c.strings"> [lib.c.strings]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Clark Nelson&nbsp; <b>Date:</b>&nbsp;19 Oct 2001</p>
<p>
C99, and presumably amendment 1 to C90, specify that &lt;wchar.h&gt;
-declares struct tm as an incomplete type. However, table 48 in 21.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.c.strings"> [lib.c.strings]</a> does not mention the type tm as being declared in
+declares struct tm as an incomplete type. However, table 48 in 21.4 <a href="lib-strings.html#lib.c.strings"> [lib.c.strings]</a> does not mention the type tm as being declared in
&lt;cwchar&gt;. Is this omission intentional or accidental?
</p>
<p><b>Proposed resolution:</b></p>
-<p>In section 21.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-strings.html#lib.c.strings"> [lib.c.strings]</a>, add "tm" to table 48.</p>
+<p>In section 21.4 <a href="lib-strings.html#lib.c.strings"> [lib.c.strings]</a>, add "tm" to table 48.</p>
<hr>
-<a name="346"><h3>346.&nbsp;Some iterator member functions should be const</h3></a><p>
-<b>Section:</b>&nbsp;24.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Jeremy Siek&nbsp; <b>Date:</b>&nbsp;20 Oct 2001</p>
+<a name="346"><h3>346.&nbsp;Some iterator member functions should be const</h3></a><p><b>Section:</b>&nbsp;24.1 <a href="lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Jeremy Siek&nbsp; <b>Date:</b>&nbsp;20 Oct 2001</p>
<p>Iterator member functions and operators that do not change the state
of the iterator should be defined as const member functions or as
functions that take iterators either by const reference or by
@@ -9820,38 +10746,132 @@ are suggested to make this explicit.</p>
for non-const and a,b for const iterators. The following changes
make this more explicit and also fix a couple problems.</p>
<p><b>Proposed resolution:</b></p>
-<p>In 24.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a> Change the first section of p9 from
+<p>In 24.1 <a href="lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a> Change the first section of p9 from
"In the following sections, a and b denote values of X..." to
"In the following sections, a and b denote values of type const X...".</p>
<p>In Table 73, change</p>
-<pre> a-&gt;m U&amp; ...
+<pre>
+ a-&gt;m U&amp; ...
</pre>
<p>to</p>
-<pre> a-&gt;m const U&amp; ...
+<pre>
+ a-&gt;m const U&amp; ...
r-&gt;m U&amp; ...
</pre>
<p>In Table 73 expression column, change</p>
-<pre> *a = t
+<pre>
+ *a = t
</pre>
<p>to</p>
-<pre> *r = t
+<pre>
+ *r = t
</pre>
<p><i>[Redmond: The container requirements should be reviewed to see if
the same problem appears there.]</i></p>
<hr>
-<a name="349"><h3>349.&nbsp;Minor typographical error in ostream_iterator</h3></a><p>
-<b>Section:</b>&nbsp;24.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.ostream.iterator"> [lib.ostream.iterator]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andy Sawyer&nbsp; <b>Date:</b>&nbsp;24 Oct 2001</p>
+<a name="347"><h3>347.&nbsp;locale::category and bitmask requirements</h3></a><p><b>Section:</b>&nbsp;22.1.1.1.1 <a href="lib-locales.html#lib.locale.category"> [lib.locale.category]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;P.J. Plauger, Nathan Myers&nbsp; <b>Date:</b>&nbsp;23 Oct 2001</p>
+<p>
+In 22.1.1.1.1 <a href="lib-locales.html#lib.locale.category"> [lib.locale.category]</a> paragraph 1, the category members
+are described as bitmask elements. In fact, the bitmask requirements
+in 17.3.2.1.2 <a href="lib-intro.html#lib.bitmask.types"> [lib.bitmask.types]</a> don't seem quite right: <tt>none</tt>
+and <tt>all</tt> are bitmask constants, not bitmask elements.</p>
+
+<p>In particular, the requirements for <tt>none</tt> interact poorly
+with the requirement that the LC_* constants from the C library must
+be recognizable as C++ locale category constants. LC_* values should
+not be mixed with these values to make category values.</p>
+
+<p>We have two options for the proposed resolution. Informally:
+option 1 removes the requirement that LC_* values be recognized as
+category arguments. Option 2 changes the category type so that this
+requirement is implementable, by allowing <tt>none</tt> to be some
+value such as 0x1000 instead of 0.</p>
+
+<p>Nathan writes: "I believe my proposed resolution [Option 2] merely
+re-expresses the status quo more clearly, without introducing any
+changes beyond resolving the DR.</p>
+
+<p><b>Proposed resolution:</b></p>
+<p>Replace the first two paragraphs of 22.1.1.1 <a href="lib-locales.html#lib.locale.types"> [lib.locale.types]</a> with:</p>
+<blockquote>
+<pre>
+ typedef int category;
+</pre>
+
+<p>Valid category values include the <tt>locale</tt> member bitmask
+elements <tt>collate</tt>, <tt>ctype</tt>, <tt>monetary</tt>,
+<tt>numeric</tt>, <tt>time</tt>, and <tt>messages</tt>, each of which
+represents a single locale category. In addition, <tt>locale</tt> member
+bitmask constant <tt>none</tt> is defined as zero and represents no
+category. And locale member bitmask constant <tt>all</tt> is defined such that
+the expression</p>
+<pre>
+ (collate | ctype | monetary | numeric | time | messages | all) == all
+</pre>
+<p>
+is <tt>true</tt>, and represents the union of all categories. Further
+the expression <tt>(X | Y)</tt>, where <tt>X</tt> and <tt>Y</tt> each
+represent a single category, represents the union of the two
+categories.
+</p>
+
+<p>
+<tt>locale</tt> member functions expecting a <tt>category</tt>
+argument require one of the <tt>category</tt> values defined above, or
+the union of two or more such values. Such a <tt>category</tt>
+argument identifies a set of locale categories. Each locale category,
+in turn, identifies a set of locale facets, including at least those
+shown in Table 51:
+</p>
+</blockquote>
+<p><i>[Cura&ccedil;ao: need input from locale experts.]</i></p>
+
+<p><b>Rationale:</b></p>
+
+<p>The LWG considered, and rejected, an alternate proposal (described
+ as "Option 2" in the discussion). The main reason for rejecting it
+ was that library implementors were concerened about implementation
+ difficult, given that getting a C++ library to work smoothly with a
+ separately written C library is already a delicate business. Some
+ library implementers were also concerned about the issue of adding
+ extra locale categories.</p>
+
+<blockquote>
+<p><b>Option 2:</b> <br>
+Replace the first paragraph of 22.1.1.1 <a href="lib-locales.html#lib.locale.types"> [lib.locale.types]</a> with:</p>
+<blockquote>
+<p>
+Valid category values include the enumerated values. In addition, the
+result of applying commutative operators | and &amp; to any two valid
+values is valid, and results in the setwise union and intersection,
+respectively, of the argument categories. The values <tt>all</tt> and
+<tt>none</tt> are defined such that for any valid value <tt>cat</tt>, the
+expressions <tt>(cat | all == all)</tt>, <tt>(cat &amp; all == cat)</tt>,
+<tt>(cat | none == cat)</tt> and <tt>(cat &amp; none == none)</tt> are
+true. For non-equal values <tt>cat1</tt> and <tt>cat2</tt> of the
+remaining enumerated values, <tt>(cat1 &amp; cat2 == none)</tt> is true.
+For any valid categories <tt>cat1</tt> and <tt>cat2</tt>, the result
+of <tt>(cat1 &amp; ~cat2)</tt> is valid, and equals the setwise union of
+those categories found in <tt>cat1</tt> but not found in <tt>cat2</tt>.
+[Footnote: it is not required that <tt>all</tt> equal the setwise union
+of the other enumerated values; implementations may add extra categories.]
+</p>
+</blockquote>
+</blockquote>
+<hr>
+<a name="349"><h3>349.&nbsp;Minor typographical error in ostream_iterator</h3></a><p><b>Section:</b>&nbsp;24.5.2 <a href="lib-iterators.html#lib.ostream.iterator"> [lib.ostream.iterator]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Andy Sawyer&nbsp; <b>Date:</b>&nbsp;24 Oct 2001</p>
<p>24.5.2 [lib.ostream.iterator] states:</p>
-<pre> [...]
+<pre>
+ [...]
private:
// basic_ostream&lt;charT,traits&gt;* out_stream; exposition only
@@ -9862,12 +10882,54 @@ the same problem appears there.]</i></p>
should be of type 'const charT*'.</p>
<p><b>Proposed resolution:</b></p>
<p>
-In 24.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.ostream.iterator"> [lib.ostream.iterator]</a>, replace <tt>const char* delim</tt> with
+In 24.5.2 <a href="lib-iterators.html#lib.ostream.iterator"> [lib.ostream.iterator]</a>, replace <tt>const char* delim</tt> with
<tt>const charT* delim</tt>.
</p>
<hr>
-<a name="354"><h3>354.&nbsp;Associative container lower/upper bound requirements</h3></a><p>
-<b>Section:</b>&nbsp;23.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Hans Aberg&nbsp; <b>Date:</b>&nbsp;17 Dec 2001</p>
+<a name="352"><h3>352.&nbsp;missing fpos requirements</h3></a><p><b>Section:</b>&nbsp;21.1.2 <a href="lib-strings.html#lib.char.traits.typedefs"> [lib.char.traits.typedefs]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;2 Dec 2001</p>
+<p>
+<i>(1)</i>
+There are no requirements on the <tt>stateT</tt> template parameter of
+<tt>fpos</tt> listed in 27.4.3. The interface appears to require that
+the type be at least Assignable and CopyConstructible (27.4.3.1, p1),
+and I think also DefaultConstructible (to implement the operations in
+Table 88).
+</p>
+<p>
+21.1.2, p3, however, only requires that
+<tt>char_traits&lt;charT&gt;::state_type</tt> meet the requirements of
+CopyConstructible types.
+</p>
+<p>
+<i>(2)</i>
+Additionally, the <tt>stateT</tt> template argument has no
+corresponding typedef in fpos which might make it difficult to use in
+generic code.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+Modify 21.1.2, p4 from
+</p>
+<p>
+ Requires: <tt>state_type</tt> shall meet the requirements of
+ CopyConstructible types (20.1.3).
+</p>
+<p>
+ Requires: state_type shall meet the requirements of Assignable
+ (23.1, p4), CopyConstructible (20.1.3), and
+ DefaultConstructible (20.1.4) types.
+</p>
+
+<p><b>Rationale:</b></p>
+<p>The LWG feels this is two issues, as indicated above. The first is
+a defect---std::basic_fstream is unimplementable without these
+additional requirements---and the proposed resolution fixes it. The
+second is questionable; who would use that typedef? The class
+template fpos is used only in a very few places, all of which know the
+state type already. Unless motivation is provided, the second should
+be considered NAD.</p>
+<hr>
+<a name="354"><h3>354.&nbsp;Associative container lower/upper bound requirements</h3></a><p><b>Section:</b>&nbsp;23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Hans Aberg&nbsp; <b>Date:</b>&nbsp;17 Dec 2001</p>
<p>
Discussions in the thread "Associative container lower/upper bound
requirements" on comp.std.c++ suggests that there is a defect in the
@@ -9901,7 +10963,7 @@ the intention (and not possible with the "const" versions).
</p>
<p><b>Proposed resolution:</b></p>
-<p>Change Table 69 of section 23.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a> indicated entries
+<p>Change Table 69 of section 23.1.2 <a href="lib-containers.html#lib.associative.reqmts"> [lib.associative.reqmts]</a> indicated entries
to:</p>
<blockquote>
@@ -9916,12 +10978,80 @@ key greater than k, or a.end() if such an element is not found.
</p>
</blockquote>
-<p><i>[Curaçao: LWG reviewed PR.]</i></p>
+<p><i>[Cura&ccedil;ao: LWG reviewed PR.]</i></p>
+
+<hr>
+<a name="355"><h3>355.&nbsp;Operational semantics for a.back()</h3></a><p><b>Section:</b>&nbsp;23.1.1 <a href="lib-containers.html#lib.sequence.reqmts"> [lib.sequence.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Yaroslav Mironov&nbsp; <b>Date:</b>&nbsp;23 Jan 2002</p>
+
+<p>Table 68 "Optional Sequence Operations" in 23.1.1/12
+specifies operational semantics for "a.back()" as
+"*--a.end()", which may be ill-formed <i>[because calling
+operator-- on a temporary (the return) of a built-in type is
+ill-formed]</i>, provided a.end() returns a simple pointer rvalue
+(this is almost always the case for std::vector::end(), for
+example). Thus, the specification is not only incorrect, it
+demonstrates a dangerous construct: "--a.end()" may
+successfully compile and run as intended, but after changing the type
+of the container or the mode of compilation it may produce
+compile-time error. </p>
+
+<p><b>Proposed resolution:</b></p>
+<p>Change the specification in table 68 "Optional Sequence
+Operations" in 23.1.1/12 for "a.back()" from</p>
+
+
+<blockquote>
+*--a.end()
+</blockquote>
+
+<p>to</p>
+
+<blockquote>
+ { iterator tmp = a.end(); --tmp; return *tmp; }
+</blockquote>
+
+<p>and the specification for "a.pop_back()" from</p>
+
+<blockquote>
+a.erase(--a.end())
+</blockquote>
+
+<p>to</p>
+
+<blockquote>
+ { iterator tmp = a.end(); --tmp; a.erase(tmp); }
+</blockquote>
+
+<p><i>[Cura&ccedil;ao: LWG changed PR from "{ X::iterator tmp =
+a.end(); return *--tmp; }" to "*a.rbegin()", and from
+"{ X::iterator tmp = a.end(); a.erase(--tmp); }" to
+"a.erase(rbegin())".]</i></p>
+
+<p><i>[There is a second possible defect; table 68 "Optional
+Sequence Operations" in the "Operational Semantics"
+column uses operations present only in the "Reversible
+Container" requirements, yet there is no stated dependency
+between these separate requirements tables. Ask in Santa Cruz if the
+LWG would like a new issue opened.]</i></p>
+
+<p><i>[Santa Cruz: the proposed resolution is even worse than what's in
+ the current standard: erase is undefined for reverse iterator. If
+ we're going to make the change, we need to define a temporary and
+ use operator--. Additionally, we don't know how prevalent this is:
+ do we need to make this change in more than one place? Martin has
+ volunteered to review the standard and see if this problem occurs
+ elsewhere.]</i></p>
+
+<p><i>[Oxford: Matt provided new wording to address the concerns raised
+ in Santa Cruz. It does not appear that this problem appears
+ anywhere else in clauses 23 or 24.]</i></p>
+
+<p><i>[Kona: In definition of operational semantics of back(), change
+"*tmp" to "return *tmp;"]</i></p>
<hr>
<a name="358"><h3>358.&nbsp;interpreting <tt>thousands_sep</tt> after a <tt>decimal_point</tt>
-</h3></a><p>
-<b>Section:</b>&nbsp;22.2.2.1.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;12 Mar 2002</p>
+</h3></a><p><b>Section:</b>&nbsp;22.2.2.1.2 <a href="lib-locales.html#lib.facet.num.get.virtuals"> [lib.facet.num.get.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;12 Mar 2002</p>
<p>
I don't think <tt>thousands_sep</tt> is being treated correctly after
decimal_point has been seen. Since grouping applies only to the
@@ -9967,8 +11097,96 @@ Change the first sentence of 22.2.2.1.2, p9 from
support for such conventions, we need to do so explicitly.</p>
<hr>
-<a name="360"><h3>360.&nbsp;locale mandates inefficient implementation</h3></a><p>
-<b>Section:</b>&nbsp;22.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;12 Mar 2002</p>
+<a name="359"><h3>359.&nbsp;num_put&lt;&gt;::do_put (..., bool) undocumented</h3></a><p><b>Section:</b>&nbsp;22.2.2.2.1 <a href="lib-locales.html#lib.facet.num.put.members"> [lib.facet.num.put.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;12 Mar 2002</p>
+<p>22.2.2.2.1, p1:</p>
+
+ <pre>
+ iter_type put (iter_type out, ios_base&amp; str, char_type fill,
+ bool val) const;
+ ...
+
+ 1 Returns: do_put (out, str, fill, val).
+ </pre>
+
+<p>AFAICS, the behavior of do_put (..., bool) is not documented anywhere,
+however, 22.2.2.2.2, p23:</p>
+
+<blockquote>
+<pre>
+iter_type put (iter_type out, ios_base&amp; str, char_type fill,
+ bool val) const;
+</pre>
+
+
+ Effects: If (str.flags() &amp; ios_base::boolalpha) == 0 then do
+ out = do_put(out, str, fill, (int)val)
+ Otherwise do
+<pre>
+ string_type s =
+ val ? use_facet&lt;ctype&lt;charT&gt; &gt;(loc).truename()
+ : use_facet&lt;ctype&lt;charT&gt; &gt;(loc).falsename();
+</pre>
+ and then insert the characters of s into out. <i>out</i>.
+</blockquote>
+
+<p>
+This means that the bool overload of <tt>do_put()</tt> will never be called,
+which contradicts the first paragraph. Perhaps the declaration
+should read <tt>do_put()</tt>, and not <tt>put()</tt>?
+</p>
+
+<p>
+Note also that there is no <b>Returns</b> clause for this function, which
+should probably be corrected, just as should the second occurrence
+of <i>"out."</i> in the text.
+</p>
+
+<p>
+I think the least invasive change to fix it would be something like
+the following:
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>In 22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>, just above paragraph 1, remove
+ the <tt>bool</tt> overload.</p>
+
+<p>
+In 22.2.2.2.2 <a href="lib-locales.html#lib.facet.num.put.virtuals"> [lib.facet.num.put.virtuals]</a>, p23, make the following changes
+</p>
+
+<blockquote>
+ Replace <tt>put()</tt> with <tt>do_put()</tt> in the declaration
+ of the member function.
+</blockquote>
+
+<blockquote>
+ Change the <b>Effects</b> clause to a <b>Returns</b> clause (to
+ avoid the requirement to call <tt>do_put(..., int)</tt> from <tt>
+ do_put (..., bool))</tt>
+ like so:
+</blockquote>
+
+<blockquote>
+ 23 <b>Returns</b>: If <tt>(str.flags() &amp;
+ ios_base::boolalpha) == 0</tt> then
+ <tt>do_put (out, str, fill, (long)val)</tt>
+ Otherwise the function obtains a string <tt>s</tt> as if by
+<pre>
+ string_type s =
+ val ? use_facet&lt;ctype&lt;charT&gt; &gt;(loc).truename()
+ : use_facet&lt;ctype&lt;charT&gt; &gt;(loc).falsename();
+</pre>
+ and then inserts each character <tt>c</tt> of s into out via
+ <tt>*out++ = c</tt>
+ and returns <tt>out</tt>.
+</blockquote>
+
+<p><b>Rationale:</b></p>
+<p>
+This fixes a couple of obvious typos, and also fixes what appears to
+be a requirement of gratuitous inefficiency.
+</p>
+<hr>
+<a name="360"><h3>360.&nbsp;locale mandates inefficient implementation</h3></a><p><b>Section:</b>&nbsp;22.1.1 <a href="lib-locales.html#lib.locale"> [lib.locale]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;12 Mar 2002</p>
<p>
22.1.1, p7 (copied below) allows iostream formatters and extractors
to make assumptions about the values returned from facet members.
@@ -10004,8 +11222,7 @@ prevents locale from being implemented efficiently.
<p>This change is reasonable becuase it clarifies the intent of this
part of the standard.</p>
<hr>
-<a name="363"><h3>363.&nbsp;Missing exception specification in 27.4.2.1.1</h3></a><p>
-<b>Section:</b>&nbsp;27.4.2.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios::failure"> [lib.ios::failure]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Walter Brown and Marc Paterno&nbsp; <b>Date:</b>&nbsp;20 May 2002</p>
+<a name="363"><h3>363.&nbsp;Missing exception specification in 27.4.2.1.1</h3></a><p><b>Section:</b>&nbsp;27.4.2.1.1 <a href="lib-iostreams.html#lib.ios::failure"> [lib.ios::failure]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Walter Brown and Marc Paterno&nbsp; <b>Date:</b>&nbsp;20 May 2002</p>
<p>
The destructor of ios_base::failure should have an empty throw
specification, because the destructor of its base class, exception, is
@@ -10013,15 +11230,15 @@ declared in this way.
</p>
<p><b>Proposed resolution:</b></p>
<p>Change the destructor to</p>
-<pre> virtual ~failure() throw();
+<pre>
+ virtual ~failure() throw();
</pre>
<p><b>Rationale:</b></p>
<p>Fixes an obvious glitch. This is almost editorial.</p>
<hr>
-<a name="364"><h3>364.&nbsp;Inconsistent wording in 27.5.2.4.2</h3></a><p>
-<b>Section:</b>&nbsp;27.5.2.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.virt.buffer"> [lib.streambuf.virt.buffer]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Walter Brown, Marc Paterno&nbsp; <b>Date:</b>&nbsp;10 May 2002</p>
+<a name="364"><h3>364.&nbsp;Inconsistent wording in 27.5.2.4.2</h3></a><p><b>Section:</b>&nbsp;27.5.2.4.2 <a href="lib-iostreams.html#lib.streambuf.virt.buffer"> [lib.streambuf.virt.buffer]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Walter Brown, Marc Paterno&nbsp; <b>Date:</b>&nbsp;10 May 2002</p>
<p>
-27.5.2.4.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.streambuf.virt.buffer"> [lib.streambuf.virt.buffer]</a> paragraph 1 is inconsistent with the Effects
+27.5.2.4.2 <a href="lib-iostreams.html#lib.streambuf.virt.buffer"> [lib.streambuf.virt.buffer]</a> paragraph 1 is inconsistent with the Effects
clause for seekoff.
</p>
<p><b>Proposed resolution:</b></p>
@@ -10051,12 +11268,53 @@ for each class derived from basic_streambuf in this clause
the existing wording and what's in the proposed resolution, but the
change may make the intent clearer.</p>
<hr>
-<a name="370"><h3>370.&nbsp;Minor error in basic_istream::get</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Ray Lischner&nbsp; <b>Date:</b>&nbsp;15 Jul 2002</p>
-<p>Defect report for description of basic_istream::get (section 27.6.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>), paragraph 15. The description for the get function
+<a name="365"><h3>365.&nbsp;Lack of const-qualification in clause 27</h3></a><p><b>Section:</b>&nbsp;27 <a href="lib-iostreams.html#lib.input.output"> [lib.input.output]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Walter Brown, Marc Paterno&nbsp; <b>Date:</b>&nbsp;10 May 2002</p>
+<p>
+Some stream and streambuf member functions are declared non-const,
+even thought they appear only to report information rather than to
+change an object's logical state. They should be declared const. See
+document N1360 for details and rationale.
+</p>
+
+<p>The list of member functions under discussion: <tt>in_avail</tt>,
+<tt>showmanyc</tt>, <tt>tellg</tt>, <tt>tellp</tt>, <tt>is_open</tt>.</p>
+
+<p>Related issue: <a href="lwg-closed.html#73">73</a></p>
+
+<p><b>Proposed resolution:</b></p>
+<p>In 27.8.1.5, 27.8.1.7, 27.8.1.8, 27.8.1.10, 27.8.1.11, and 27.8.1.13</p>
+<p>Replace</p>
+<pre>
+ bool is_open();
+</pre>
+<p>with</p>
+<pre>
+ bool is_open() const;
+</pre>
+<p><b>Rationale:</b></p>
+<p>Of the changes proposed in N1360, the only one that is safe is
+changing the filestreams' is_open to const. The LWG believed that
+this was NAD the first time it considered this issue (issue <a href="lwg-closed.html#73">73</a>), but now thinks otherwise. The corresponding streambuf
+member function, after all,is already const.</p>
+
+<p>The other proposed changes are less safe, because some streambuf
+functions that appear merely to report a value do actually perform
+mutating operations. It's not even clear that they should be
+considered "logically const", because streambuf has two interfaces, a
+public one and a protected one. These functions may, and often do,
+change the state as exposed by the protected interface, even if the
+state exposed by the public interface is unchanged.</p>
+
+<p>Note that implementers can make this change in a binary compatible
+way by providing both overloads; this would be a conforming extension.</p>
+
+<hr>
+<a name="370"><h3>370.&nbsp;Minor error in basic_istream::get</h3></a><p><b>Section:</b>&nbsp;27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Ray Lischner&nbsp; <b>Date:</b>&nbsp;15 Jul 2002</p>
+<p>Defect report for description of basic_istream::get (section 27.6.1.3 <a href="lib-iostreams.html#lib.istream.unformatted"> [lib.istream.unformatted]</a>), paragraph 15. The description for the get function
with the following signature:</p>
-<pre> basic_istream&lt;charT,traits&gt;&amp; get(basic_streambuf&lt;char_type,traits&gt;&amp;
+<pre>
+ basic_istream&lt;charT,traits&gt;&amp; get(basic_streambuf&lt;char_type,traits&gt;&amp;
sb);
</pre>
@@ -10083,28 +11341,26 @@ with the following signature:</p>
<p><b>Rationale:</b></p>
<p>Fixes an obvious typo.</p>
<hr>
-<a name="373"><h3>373.&nbsp;Are basic_istream and basic_ostream to use (exceptions()&amp;badbit) != 0 ?</h3></a><p>
-<b>Section:</b>&nbsp;27.6.1.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a>, 27.6.2.5.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.formatted.reqmts"> [lib.ostream.formatted.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Keith Baker&nbsp; <b>Date:</b>&nbsp;23 Jul 2002</p>
+<a name="373"><h3>373.&nbsp;Are basic_istream and basic_ostream to use (exceptions()&amp;badbit) != 0 ?</h3></a><p><b>Section:</b>&nbsp;27.6.1.2.1 <a href="lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a>, 27.6.2.5.1 <a href="lib-iostreams.html#lib.ostream.formatted.reqmts"> [lib.ostream.formatted.reqmts]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Keith Baker&nbsp; <b>Date:</b>&nbsp;23 Jul 2002</p>
<p>
-In 27.6.1.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a> and 27.6.2.5.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.formatted.reqmts"> [lib.ostream.formatted.reqmts]</a>
+In 27.6.1.2.1 <a href="lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a> and 27.6.2.5.1 <a href="lib-iostreams.html#lib.ostream.formatted.reqmts"> [lib.ostream.formatted.reqmts]</a>
(exception()&amp;badbit) != 0 is used in testing for rethrow, yet
-exception() is the constructor to class std::exception in 18.6.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-support.html#lib.exception"> [lib.exception]</a> that has no return type. Should member function
-exceptions() found in 27.4.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ios"> [lib.ios]</a> be used instead?
+exception() is the constructor to class std::exception in 18.6.1 <a href="lib-support.html#lib.exception"> [lib.exception]</a> that has no return type. Should member function
+exceptions() found in 27.4.4 <a href="lib-iostreams.html#lib.ios"> [lib.ios]</a> be used instead?
</p>
<p><b>Proposed resolution:</b></p>
<p>
-In 27.6.1.2.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a> and 27.6.2.5.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.ostream.formatted.reqmts"> [lib.ostream.formatted.reqmts]</a>, change
+In 27.6.1.2.1 <a href="lib-iostreams.html#lib.istream.formatted.reqmts"> [lib.istream.formatted.reqmts]</a> and 27.6.2.5.1 <a href="lib-iostreams.html#lib.ostream.formatted.reqmts"> [lib.ostream.formatted.reqmts]</a>, change
"(exception()&amp;badbit) != 0" to "(exceptions()&amp;badbit) != 0".
</p>
<p><b>Rationale:</b></p>
<p>Fixes an obvious typo.</p>
<hr>
-<a name="375"><h3>375.&nbsp;basic_ios should be ios_base in 27.7.1.3</h3></a><p>
-<b>Section:</b>&nbsp;27.7.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Ray Lischner&nbsp; <b>Date:</b>&nbsp;14 Aug 2002</p>
+<a name="375"><h3>375.&nbsp;basic_ios should be ios_base in 27.7.1.3</h3></a><p><b>Section:</b>&nbsp;27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Ray Lischner&nbsp; <b>Date:</b>&nbsp;14 Aug 2002</p>
<p>
-In Section 27.7.1.3 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>: Table 90, Table 91, and paragraph
+In Section 27.7.1.3 <a href="lib-iostreams.html#lib.stringbuf.virtuals"> [lib.stringbuf.virtuals]</a>: Table 90, Table 91, and paragraph
14 all contain references to "basic_ios::" which should be
"ios_base::".
</p>
@@ -10116,10 +11372,53 @@ paragraph 14 to "ios_base".
<p><b>Rationale:</b></p>
<p>Fixes an obvious typo.</p>
<hr>
-<a name="380"><h3>380.&nbsp;typos in codecvt tables 53 and 54</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;6 Sep 2002</p>
+<a name="379"><h3>379.&nbsp;nonsensical ctype::do_widen() requirement</h3></a><p><b>Section:</b>&nbsp;22.2.1.1.2 <a href="lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;6 Sep 2002</p>
+<p>
+The last sentence in 22.2.1.1.2, p11 below doesn't seem to make sense.
+</p>
+<pre>
+ charT do_widen (char c) const;
+
+ -11- Effects: Applies the simplest reasonable transformation from
+ a char value or sequence of char values to the corresponding
+ charT value or values. The only characters for which unique
+ transformations are required are those in the basic source
+ character set (2.2). For any named ctype category with a
+ ctype&lt;charT&gt; facet ctw and valid ctype_base::mask value
+ M (is(M, c) || !ctw.is(M, do_widen(c))) is true.
+</pre>
+<p>
+Shouldn't the last sentence instead read
+</p>
+<pre>
+ For any named ctype category with a ctype&lt;char&gt; facet ctc
+ and valid ctype_base::mask value M
+ (ctc.is(M, c) || !is(M, do_widen(c))) is true.
+</pre>
+<p>
+I.e., if the narrow character c is not a member of a class of
+characters then neither is the widened form of c. (To paraphrase
+footnote 224.)
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+Replace the last sentence of 22.2.1.1.2 <a href="lib-locales.html#lib.locale.ctype.virtuals"> [lib.locale.ctype.virtuals]</a>, p11 with the
+following text:
+</p>
+<pre>
+ For any named ctype category with a ctype&lt;char&gt; facet ctc
+ and valid ctype_base::mask value M,
+ (ctc.is(M, c) || !is(M, do_widen(c))) is true.
+</pre>
+
+<p><i>[Kona: Minor edit. Added a comma after the <i>M</i> for clarity.]</i></p>
+
+<p><b>Rationale:</b></p>
+<p>The LWG believes this is just a typo, and that this is the correct fix.</p>
+<hr>
+<a name="380"><h3>380.&nbsp;typos in codecvt tables 53 and 54</h3></a><p><b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;6 Sep 2002</p>
<p>
-Tables 53 and 54 in 22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a> are both titled "convert
+Tables 53 and 54 in 22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a> are both titled "convert
result values," when surely "do_in/do_out result values" must have
been intended for Table 53 and "do_unshift result values" for Table
54.
@@ -10144,8 +11443,7 @@ heading Meaning, to "space for more than (to_limit - to) destination
elements was needed to terminate a sequence given the value of state."
</p>
<hr>
-<a name="381"><h3>381.&nbsp;detection of invalid mbstate_t in codecvt</h3></a><p>
-<b>Section:</b>&nbsp;22.2.1.5.2 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;6 Sep 2002</p>
+<a name="381"><h3>381.&nbsp;detection of invalid mbstate_t in codecvt</h3></a><p><b>Section:</b>&nbsp;22.2.1.5.2 <a href="lib-locales.html#lib.locale.codecvt.virtuals"> [lib.locale.codecvt.virtuals]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;6 Sep 2002</p>
<p>
All but one codecvt member functions that take a state_type argument
list as one of their preconditions that the state_type argument have
@@ -10166,13 +11464,15 @@ cases, I propose the following:
Add a new paragraph before 22.2.1.5.2, p5, and after the function
declaration below
</p>
-<pre> result do_unshift(stateT&amp; state,
+<pre>
+ result do_unshift(stateT&amp; state,
externT* to, externT* to_limit, externT*&amp; to_next) const;
</pre>
<p>
as follows:
</p>
-<pre> Requires: (to &lt;= to_end) well defined and true; state initialized,
+<pre>
+ Requires: (to &lt;= to_end) well defined and true; state initialized,
if at the beginning of a sequence, or else equal to the result of
converting the preceding characters in the sequence.
</pre>
@@ -10180,12 +11480,14 @@ as follows:
and change the text in Table 54, row 4, the <b>error</b> row, under
the heading Meaning, from
</p>
-<pre> state has invalid value
+<pre>
+ state has invalid value
</pre>
<p>
to
</p>
-<pre> an unspecified error has occurred
+<pre>
+ an unspecified error has occurred
</pre>
<p><b>Rationale:</b></p>
<p>The intent is that implementations should not be required to detect
@@ -10195,8 +11497,7 @@ behavior. Implementations that do choose to detect invalid state
values, or that choose to detect any other kind of error, may return
<b>error</b> as an indication.</p>
<hr>
-<a name="383"><h3>383.&nbsp;Bidirectional iterator assertion typo</h3></a><p>
-<b>Section:</b>&nbsp;24.1.4 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-iterators.html#lib.bidirectional.iterators"> [lib.bidirectional.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;ysapir (submitted via comp.std.c++)&nbsp; <b>Date:</b>&nbsp;17 Oct 2002</p>
+<a name="383"><h3>383.&nbsp;Bidirectional iterator assertion typo</h3></a><p><b>Section:</b>&nbsp;24.1.4 <a href="lib-iterators.html#lib.bidirectional.iterators"> [lib.bidirectional.iterators]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;ysapir (submitted via comp.std.c++)&nbsp; <b>Date:</b>&nbsp;17 Oct 2002</p>
<p>
Following a discussion on the boost list regarding end iterators and
the possibility of performing operator--() on them, it seems to me
@@ -10208,8 +11509,8 @@ with that discussion.
I have checked this newsgroup, as well as attempted a search of the
Active/Defect/Closed Issues List on the site for the words "s is
derefer" so I believe this has not been proposed before. Furthermore,
-the "Lists by Index" mentions only DR <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#299">299</a> on section
-24.1.4, and DR <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#299">299</a> is not related to this issue.
+the "Lists by Index" mentions only DR <a href="lwg-active.html#299">299</a> on section
+24.1.4, and DR <a href="lwg-active.html#299">299</a> is not related to this issue.
</p>
<p>
@@ -10217,7 +11518,8 @@ The standard makes the following assertion on bidirectional iterators,
in section 24.1.4 [lib.bidirectional.iterators], Table 75:
</p>
-<pre> operational assertion/note
+<pre>
+ operational assertion/note
expression return type semantics pre/post-condition
--r X&amp; pre: there exists s such
@@ -10253,14 +11555,127 @@ Change the guarantee to "postcondition: r is dereferenceable."
<p><b>Rationale:</b></p>
<p>Fixes an obvious typo</p>
<hr>
-<a name="400"><h3>400.&nbsp;redundant type cast in lib.allocator.members</h3></a><p>
-<b>Section:</b>&nbsp;20.4.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.members"> [lib.allocator.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Markus Mauhart&nbsp; <b>Date:</b>&nbsp;27 Feb 2003</p>
+<a name="389"><h3>389.&nbsp;Const overload of valarray::operator[] returns by value</h3></a><p><b>Section:</b>&nbsp;26.3.2 <a href="lib-numerics.html#lib.template.valarray"> [lib.template.valarray]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Gabriel Dos Reis&nbsp; <b>Date:</b>&nbsp;8 Nov 2002</p>
+<p>Consider the following program:</p>
+<pre>
+ #include &lt;iostream&gt;
+ #include &lt;ostream&gt;
+ #include &lt;vector&gt;
+ #include &lt;valarray&gt;
+ #include &lt;algorithm&gt;
+ #include &lt;iterator&gt;
+ template&lt;typename Array&gt;
+ void print(const Array&amp; a)
+ {
+ using namespace std;
+ typedef typename Array::value_type T;
+ copy(&amp;a[0], &amp;a[0] + a.size(),
+ ostream_iterator&lt;T&gt;(std::cout, " "));
+ }
+ template&lt;typename T, unsigned N&gt;
+ unsigned size(T(&amp;)[N]) { return N; }
+ int main()
+ {
+ double array[] = { 0.89, 9.3, 7, 6.23 };
+ std::vector&lt;double&gt; v(array, array + size(array));
+ std::valarray&lt;double&gt; w(array, size(array));
+ print(v); // #1
+ std::cout &lt;&lt; std::endl;
+ print(w); // #2
+ std::cout &lt;&lt; std::endl;
+ }
+</pre>
+
+<p>While the call numbered #1 succeeds, the call numbered #2 fails
+because the const version of the member function
+valarray&lt;T&gt;::operator[](size_t) returns a value instead of a
+const-reference. That seems to be so for no apparent reason, no
+benefit. Not only does that defeats users' expectation but it also
+does hinder existing software (written either in C or Fortran)
+integration within programs written in C++. There is no reason why
+subscripting an expression of type valarray&lt;T&gt; that is const-qualified
+should not return a const T&amp;.</p>
+<p><b>Proposed resolution:</b></p>
+<p>In the class synopsis in 26.3.2 <a href="lib-numerics.html#lib.template.valarray"> [lib.template.valarray]</a>, and in
+26.3.2.3 <a href="lib-numerics.html#lib.valarray.access"> [lib.valarray.access]</a> just above paragraph 1, change</p>
+<pre>
+ T operator[](size_t const);
+</pre>
+<p>to</p>
+<pre>
+ const T&amp; operator[](size_t const);
+</pre>
+
+<p><i>[Kona: fixed a minor typo: put semicolon at the end of the line
+ wehre it belongs.]</i></p>
+
+<p><b>Rationale:</b></p>
+<p>Return by value seems to serve no purpose. Valaray was explicitly
+designed to have a specified layout so that it could easily be
+integrated with libraries in other languages, and return by value
+defeats that purpose. It is believed that this change will have no
+impact on allowable optimizations.</p>
+<hr>
+<a name="391"><h3>391.&nbsp;non-member functions specified as const</h3></a><p><b>Section:</b>&nbsp;22.1.3.2 <a href="lib-locales.html#lib.conversions"> [lib.conversions]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;James Kanze&nbsp; <b>Date:</b>&nbsp;10 Dec 2002</p>
+<p>
+The specifications of toupper and tolower both specify the functions as
+const, althought they are not member functions, and are not specified as
+const in the header file synopsis in section 22.1 <a href="lib-locales.html#lib.locales"> [lib.locales]</a>.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>In 22.1.3.2 <a href="lib-locales.html#lib.conversions"> [lib.conversions]</a>, remove <tt>const</tt> from the function
+ declarations of std::toupper and std::tolower</p>
+<p><b>Rationale:</b></p>
+<p>Fixes an obvious typo</p>
+<hr>
+<a name="395"><h3>395.&nbsp;inconsistencies in the definitions of rand() and random_shuffle()</h3></a><p><b>Section:</b>&nbsp;26.5 <a href="lib-numerics.html#lib.c.math"> [lib.c.math]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;James Kanze&nbsp; <b>Date:</b>&nbsp;3 Jan 2003</p>
+<p>
+In 26.5 <a href="lib-numerics.html#lib.c.math"> [lib.c.math]</a>, the C++ standard refers to the C standard for the
+definition of rand(); in the C standard, it is written that "The
+implementation shall behave as if no library function calls the rand
+function."
+</p>
+
+<p>
+In 25.2.11 <a href="lib-algorithms.html#lib.alg.random.shuffle"> [lib.alg.random.shuffle]</a>, there is no specification as to
+how the two parameter version of the function generates its random
+value. I believe that all current implementations in fact call rand()
+(in contradiction with the requirement avove); if an implementation does
+not call rand(), there is the question of how whatever random generator
+it does use is seeded. Something is missing.
+</p>
+
+<p><b>Proposed resolution:</b></p>
+<p>
+In [lib.c.math], add a paragraph specifying that the C definition of
+rand shal be modified to say that "Unless otherwise specified, the
+implementation shall behave as if no library function calls the rand
+function."
+</p>
+
+<p>
+In [lib.alg.random.shuffle], add a sentence to the effect that "In
+the two argument form of the function, the underlying source of
+random numbers is implementation defined. [Note: in particular, an
+implementation is permitted to use <tt>rand</tt>.]
+</p>
+<p><b>Rationale:</b></p>
+<p>The original proposed resolution proposed requiring the
+ two-argument from of <tt>random_shuffle</tt> to
+ use <tt>rand</tt>. We don't want to do that, because some existing
+ implementations already use something else: gcc
+ uses <tt>lrand48</tt>, for example. Using <tt>rand</tt> presents a
+ problem if the number of elements in the sequence is greater than
+ RAND_MAX.</p>
+<hr>
+<a name="400"><h3>400.&nbsp;redundant type cast in lib.allocator.members</h3></a><p><b>Section:</b>&nbsp;20.4.1.1 <a href="lib-utilities.html#lib.allocator.members"> [lib.allocator.members]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Markus Mauhart&nbsp; <b>Date:</b>&nbsp;27 Feb 2003</p>
<p>
-20.4.1.1 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lib-utilities.html#lib.allocator.members"> [lib.allocator.members]</a> allocator members, contains
+20.4.1.1 <a href="lib-utilities.html#lib.allocator.members"> [lib.allocator.members]</a> allocator members, contains
the following 3 lines:
</p>
-<pre> 12 Returns: new((void *) p) T( val)
+<pre>
+ 12 Returns: new((void *) p) T( val)
void destroy(pointer p);
13 Returns: ((T*) p)-&gt;~T()
</pre>
@@ -10275,5 +11690,321 @@ Replace "((T*) p)" with "p".
</p>
<p><b>Rationale:</b></p>
<p>Just a typo, this is really editorial.</p>
+<hr>
+<a name="402"><h3>402.&nbsp;wrong new expression in [some_]allocator::construct</h3></a><p><b>Section:</b>&nbsp;20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>, 20.4.1.1 <a href="lib-utilities.html#lib.allocator.members"> [lib.allocator.members]</a>, &nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Markus Mauhart&nbsp; <b>Date:</b>&nbsp;27 Feb 2003</p>
+<p>
+This applies to the new expression that is contained in both par12 of
+20.4.1.1 <a href="lib-utilities.html#lib.allocator.members"> [lib.allocator.members]</a> and in par2 (table 32) of 20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a>.
+I think this new expression is wrong, involving unintended side
+effects.
+</p>
+
+
+<p>20.4.1.1 <a href="lib-utilities.html#lib.allocator.members"> [lib.allocator.members]</a> contains the following 3 lines:</p>
+
+<pre>
+ 11 Returns: the largest value N for which the call allocate(N,0) might succeed.
+ void construct(pointer p, const_reference val);
+ 12 Returns: new((void *) p) T( val)
+</pre>
+
+
+<p>20.1.5 <a href="lib-utilities.html#lib.allocator.requirements"> [lib.allocator.requirements]</a> in table 32 has the following line:</p>
+<pre>
+ a.construct(p,t) Effect: new((void*)p) T(t)
+</pre>
+
+<p>
+.... with the prerequisits coming from the preceding two paragraphs,
+especially from table 31:
+</p>
+
+<pre>
+ alloc&lt;T&gt; a ;// an allocator for T
+ alloc&lt;T&gt;::pointer p ;// random access iterator
+ // (may be different from T*)
+ alloc&lt;T&gt;::reference r = *p;// T&amp;
+ T const&amp; t ;
+</pre>
+
+<p>
+Cause of using "new" but not "::new", any existing "T::operator new"
+function will hide the global placement new function. When there is no
+"T::operator new" with adequate signature,
+every_alloc&lt;T&gt;::construct(..) is ill-formed, and most
+std::container&lt;T,every_alloc&lt;T&gt;&gt; use it; a workaround
+would be adding placement new and delete functions with adequate
+signature and semantic to class T, but class T might come from another
+party. Maybe even worse is the case when T has placement new and
+delete functions with adequate signature but with "unknown" semantic:
+I dont like to speculate about it, but whoever implements
+any_container&lt;T,any_alloc&gt; and wants to use construct(..)
+probably must think about it.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+Replace "new" with "::new" in both cases.
+</p>
+<hr>
+<a name="403"><h3>403.&nbsp;basic_string::swap should not throw exceptions</h3></a><p><b>Section:</b>&nbsp;21.3.5.8 <a href="lib-strings.html#lib.string::swap"> [lib.string::swap]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Beman Dawes&nbsp; <b>Date:</b>&nbsp;25 Mar 2003</p>
+
+<p>
+std::basic_string, 21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a> paragraph 2 says that
+basic_string "conforms to the requirements of a Sequence, as specified
+in (23.1.1)." The sequence requirements specified in (23.1.1) to not
+include any prohibition on swap members throwing exceptions.
+</p>
+
+<p>
+Section 23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> paragraph 10 does limit conditions under
+which exceptions may be thrown, but applies only to "all container
+types defined in this clause" and so excludes basic_string::swap
+because it is defined elsewhere.
+</p>
+
+<p>
+Eric Niebler points out that 21.3 <a href="lib-strings.html#lib.basic.string"> [lib.basic.string]</a> paragraph 5 explicitly
+permits basic_string::swap to invalidates iterators, which is
+disallowed by 23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> paragraph 10. Thus the standard would
+be contradictory if it were read or extended to read as having
+basic_string meet 23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> paragraph 10 requirements.
+</p>
+
+<p>
+Yet several LWG members have expressed the belief that the original
+intent was that basic_string::swap should not throw exceptions as
+specified by 23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> paragraph 10, and that the standard is
+unclear on this issue. The complexity of basic_string::swap is
+specified as "constant time", indicating the intent was to avoid
+copying (which could cause a bad_alloc or other exception). An
+important use of swap is to ensure that exceptions are not thrown in
+exception-safe code.
+</p>
+
+<p>
+Note: There remains long standing concern over whether or not it is
+possible to reasonably meet the 23.1 <a href="lib-containers.html#lib.container.requirements"> [lib.container.requirements]</a> paragraph 10 swap
+requirements when allocators are unequal. The specification of
+basic_string::swap exception requirements is in no way intended to
+address, prejudice, or otherwise impact that concern.
+</p>
+
+
+
+
+
+<p><b>Proposed resolution:</b></p>
+<p>
+In 21.3.5.8 <a href="lib-strings.html#lib.string::swap"> [lib.string::swap]</a>, add a throws clause:
+</p>
+
+<p>
+Throws: Shall not throw exceptions.
+</p>
+<hr>
+<a name="404"><h3>404.&nbsp;May a replacement allocation function be declared inline?</h3></a><p><b>Section:</b>&nbsp;17.4.3.4 <a href="lib-intro.html#lib.replacement.functions"> [lib.replacement.functions]</a>, 18.4.1 <a href="lib-support.html#lib.new.delete"> [lib.new.delete]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;24 Apr 2003</p>
+<p>
+The eight basic dynamic memory allocation functions (single-object
+and array versions of ::operator new and ::operator delete, in the
+ordinary and nothrow forms) are replaceable. A C++ program may
+provide an alternative definition for any of them, which will be used
+in preference to the implementation's definition.
+</p>
+
+<p>
+Three different parts of the standard mention requirements on
+replacement functions: 17.4.3.4 <a href="lib-intro.html#lib.replacement.functions"> [lib.replacement.functions]</a>, 18.4.1.1 <a href="lib-support.html#lib.new.delete.single"> [lib.new.delete.single]</a>
+and 18.4.1.2 <a href="lib-support.html#lib.new.delete.array"> [lib.new.delete.array]</a>, and 3.7.3 <a href="basic.html#basic.stc.dynamic"> [basic.stc.dynamic]</a>.
+</p>
+
+<p>None of these three places say whether a replacement function may
+ be declared inline. 18.4.1.1 <a href="lib-support.html#lib.new.delete.single"> [lib.new.delete.single]</a> paragraph 2 specifies a
+ signature for the replacement function, but that's not enough:
+ the <tt>inline</tt> specifier is not part of a function's signature.
+ One might also reason from 7.1.2 <a href="dcl.html#dcl.fct.spec"> [dcl.fct.spec]</a> paragraph 2, which
+ requires that "an inline function shall be defined in every
+ translation unit in which it is used," but this may not be quite
+ specific enough either. We should either explicitly allow or
+ explicitly forbid inline replacement memory allocation
+ functions.</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+Add a new sentence to the end of 17.4.3.4 <a href="lib-intro.html#lib.replacement.functions"> [lib.replacement.functions]</a> paragraph 3:
+"The program's definitions shall not be specified as <tt>inline</tt>.
+No diagnostic is required."
+</p>
+
+<p><i>[Kona: added "no diagnostic is required"]</i></p>
+
+<p><b>Rationale:</b></p>
+<p>
+The fact that <tt>inline</tt> isn't mentioned appears to have been
+nothing more than an oversight. Existing implementations do not
+permit inline functions as replacement memory allocation functions.
+Providing this functionality would be difficult in some cases, and is
+believed to be of limited value.
+</p>
+<hr>
+<a name="407"><h3>407.&nbsp;Can singular iterators be destroyed?</h3></a><p><b>Section:</b>&nbsp;24.1 <a href="lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Nathan Myers&nbsp; <b>Date:</b>&nbsp;3 June 2003</p>
+<p>
+Clause 24.1 <a href="lib-iterators.html#lib.iterator.requirements"> [lib.iterator.requirements]</a>, paragraph 5, says that the only expression
+that is defined for a singular iterator is "an assignment of a
+non-singular value to an iterator that holds a singular value". This
+means that destroying a singular iterator (e.g. letting an automatic
+variable go out of scope) is technically undefined behavior. This
+seems overly strict, and probably unintentional.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+Change the sentence in question to "... the only exceptions are
+destroying an iterator that holds a singular value, or the assignment
+of a non-singular value to an iterator that holds a singular value."
+</p>
+<hr>
+<a name="411"><h3>411.&nbsp;Wrong names of set member functions</h3></a><p><b>Section:</b>&nbsp;25.3.5 <a href="lib-algorithms.html#lib.alg.set.operations"> [lib.alg.set.operations]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Daniel Frey&nbsp; <b>Date:</b>&nbsp;9 Jul 2003</p>
+<p>
+25.3.5 <a href="lib-algorithms.html#lib.alg.set.operations"> [lib.alg.set.operations]</a> paragraph 1 reads:
+"The semantics of the set operations are generalized to multisets in a
+standard way by defining union() to contain the maximum number of
+occurrences of every element, intersection() to contain the minimum, and
+so on."
+</p>
+
+<p>
+This is wrong. The name of the functions are set_union() and
+set_intersection(), not union() and intersection().
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>Change that sentence to use the correct names.</p>
+<hr>
+<a name="414"><h3>414.&nbsp;Which iterators are invalidated by v.erase()?</h3></a><p><b>Section:</b>&nbsp;23.2.4.3 <a href="lib-containers.html#lib.vector.modifiers"> [lib.vector.modifiers]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Matt Austern&nbsp; <b>Date:</b>&nbsp;19 Aug 2003</p>
+<p>
+Consider the following code fragment:
+</p>
+<blockquote>
+<pre>
+int A[8] = { 1,3,5,7,9,8,4,2 };
+std::vector&lt;int&gt; v(A, A+8);
+
+std::vector&lt;int&gt;::iterator i1 = v.begin() + 3;
+std::vector&lt;int&gt;::iterator i2 = v.begin() + 4;
+v.erase(i1);
+</pre>
+</blockquote>
+
+<p>
+Which iterators are invalidated by <tt>v.erase(i1)</tt>: i1, i2,
+both, or neither?
+</p>
+
+<p>
+On all existing implementations that I know of, the status of i1 and
+i2 is the same: both of them will be iterators that point to some
+elements of the vector (albeit not the same elements they did
+before). You won't get a crash if you use them. Depending on
+exactly what you mean by "invalidate", you might say that neither one
+has been invalidated because they still point to <i>something</i>,
+or you might say that both have been invalidated because in both
+cases the elements they point to have been changed out from under the
+iterator.
+</p>
+
+<p>
+The standard doesn't say either of those things. It says that erase
+invalidates all iterators and references "after the point of the
+erase". This doesn't include i1, since it's at the point of the
+erase instead of after it. I can't think of any sensible definition
+of invalidation by which one can say that i2 is invalidated but i1
+isn't.
+</p>
+
+<p>
+(This issue is important if you try to reason about iterator validity
+based only on the guarantees in the standard, rather than reasoning
+from typical implementation techniques. Strict debugging modes,
+which some programmers find useful, do not use typical implementation
+techniques.)
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>
+In 23.2.4.3 <a href="lib-containers.html#lib.vector.modifiers"> [lib.vector.modifiers]</a> paragraph 3, change "Invalidates all the
+iterators and references after the point of the erase" to
+"Invalidates iterators and references at or after the point of the
+erase".
+</p>
+<p><b>Rationale:</b></p>
+<p>I believe this was essentially a typographical error, and that it
+ was taken for granted that erasing an element invalidates iterators
+ that point to it. The effects clause in question treats iterators
+ and references in parallel, and it would seem counterintuitive to
+ say that a reference to an erased value remains valid.</p>
+<hr>
+<a name="420"><h3>420.&nbsp;is std::FILE a complete type?</h3></a><p><b>Section:</b>&nbsp;27.8.1 <a href="lib-iostreams.html#lib.fstreams"> [lib.fstreams]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
+<p>
+7.19.1, p2, of C99 requires that the FILE type only be declared in
+&lt;stdio.h&gt;. None of the (implementation-defined) members of the
+struct is mentioned anywhere for obvious reasons.
+</p>
+
+<p>
+C++ says in 27.8.1, p2 that FILE is a type that's defined in &lt;cstdio&gt;. Is
+it really the intent that FILE be a complete type or is an implementation
+allowed to just declare it without providing a full definition?
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>In the first sentence of 27.8.1 <a href="lib-iostreams.html#lib.fstreams"> [lib.fstreams]</a> paragraph 2, change
+ "defined" to "declared".</p>
+<p><b>Rationale:</b></p>
+<p>We don't want to impose any restrictions beyond what the C standard
+ already says. We don't want to make anything implementation defined,
+ because that imposes new requirements in implementations.</p>
+<hr>
+<a name="428"><h3>428.&nbsp;string::erase(iterator) validity</h3></a><p><b>Section:</b>&nbsp;21.3.5.5 <a href="lib-strings.html#lib.string::erase"> [lib.string::erase]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;18 Sep 2003</p>
+<p>
+23.1.1, p3 along with Table 67 specify as a prerequisite for a.erase(q)
+that q must be a valid dereferenceable iterator into the sequence a.
+</p>
+
+<p>
+However, 21.3.5.5, p5 describing string::erase(p) only requires that
+p be a valid iterator.
+</p>
+
+<p>
+This may be interepreted as a relaxation of the general requirement,
+which is most likely not the intent.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>Remove 21.3.5.5 <a href="lib-strings.html#lib.string::erase"> [lib.string::erase]</a> paragraph 5.</p>
+<p><b>Rationale:</b></p>
+<p>The LWG considered two options: changing the string requirements to
+ match the general container requirements, or just removing the
+ erroneous string requirements altogether. The LWG chose the latter
+ option, on the grounds that duplicating text always risks the
+ possibility that it might be duplicated incorrectly.</p>
+<hr>
+<a name="436"><h3>436.&nbsp;are cv-qualified facet types valid facets?</h3></a><p><b>Section:</b>&nbsp;22.1.1.1.2 <a href="lib-locales.html#lib.locale.facet"> [lib.locale.facet]</a>&nbsp; <b>Status:</b>&nbsp;<a href="lwg-active.html#WP">WP</a>&nbsp; <b>Submitter:</b>&nbsp;Martin Sebor&nbsp; <b>Date:</b>&nbsp;15 Oct 2003</p>
+<p>
+Is "const std::ctype&lt;char&gt;" a valid template argument to has_facet, use_facet,
+and the locale template ctor? And if so, does it designate the same Facet as
+the non-const "std::ctype&lt;char&gt;?" What about "volatile std::ctype&lt;char&gt;?"
+Different implementations behave differently: some fail to compile, others
+accept such types but behave inconsistently.
+</p>
+<p><b>Proposed resolution:</b></p>
+<p>Change 22.1.1.1.2, p1 to read:</p>
+
+<p>Template parameters in this clause which are required to be facets
+are those named Facet in declarations. A program that passes a type
+that is not a facet, or a type that refers to volatile-qualified
+facet, as an (explicit or deduced) template parameter to a locale
+function expecting a facet, is ill-formed. A const-qualified facet is
+a valid template argument to any locale function that expects a Facet
+template parameter.</p>
+
+<p><i>[Kona: changed the last sentence from a footnote to normative
+text.]</i></p>
+
<p>----- End of document -----</p>
-</body></html> \ No newline at end of file
+</body>
+</html>
diff --git a/libstdc++-v3/docs/html/ext/mt_allocator.html b/libstdc++-v3/docs/html/ext/mt_allocator.html
index 72727114ac6..4fdee61aebd 100644
--- a/libstdc++-v3/docs/html/ext/mt_allocator.html
+++ b/libstdc++-v3/docs/html/ext/mt_allocator.html
@@ -53,6 +53,61 @@ The aim of this document is to describe - from a application point of
view - the "inner workings" of the allocator.
</p>
+<h3 class="left">
+ <a name="init">Tunable parameters</a>
+</h3>
+
+<p>Certain allocation parameters can be modified on a per-type
+basis. There exists a nested <pre>struct _Tune</pre> that contains all
+these parameters, which include settings for
+</p>
+ <ul>
+ <li>Alignment </li>
+ <li>Maximum bytes before calling <code>::operator new</code> directly</li>
+ <li>Minimum bytes</li>
+ <li>Size of underlying global allocations</li>
+ <li>Maximum number of supported threads</li>
+ <li>Migration of deallocations to the global free list</li>
+ <li>Shunt for global <code>new</code> and <code>delete</code></li>
+ </ul>
+<p>Adjusting parameters for a given instance of an allocator can only
+happen before any allocations take place, when the allocator itself is
+initialized. For instance:
+</p>
+<pre>
+#include &lt;ext/mt_allocator.h&gt;
+
+struct pod
+{
+ int i;
+ int j;
+};
+
+int main()
+{
+ typedef pod value_type;
+ typedef __gnu_cxx::__mt_alloc&lt;value_type&gt; allocator_type;
+ typedef allocator_type::_Tune tune_type;
+
+ tune_type t_default;
+ tune_type t_opt(16, 5120, 32, 5120, 20, 10, false);
+ tune_type t_single(16, 5120, 32, 5120, 1, 10, false);
+
+ tune_type t;
+ t = allocator_type::_S_get_options();
+ allocator_type::_S_set_options(t_opt);
+ t = allocator_type::_S_get_options();
+
+ allocator_type a;
+ allocator_type::pointer p1 = a.allocate(128);
+ allocator_type::pointer p2 = a.allocate(5128);
+
+ a.deallocate(p1, 128);
+ a.deallocate(p2, 5128);
+
+ return 0;
+}
+</pre>
<h3 class="left">
<a name="init">Initialization</a>
@@ -60,14 +115,9 @@ view - the "inner workings" of the allocator.
<p>
The static variables (pointers to freelists, tuning parameters etc)
-are initialized to their default values at file scope, i.e.:
+are initialized as above, or are set to the global defaults.
</p>
-<pre>
- template&lt;typename _Tp&gt; size_t
- __mt_alloc&lt;_Tp&gt;::_S_freelist_headroom = 10;
-</pre>
-
<p>
The very first allocate() call will always call the _S_init() function.
In order to make sure that this function is called exactly once we make use
diff --git a/libstdc++-v3/docs/html/faq/index.html b/libstdc++-v3/docs/html/faq/index.html
index 3c5aa202eb0..abd6ff3d13f 100644
--- a/libstdc++-v3/docs/html/faq/index.html
+++ b/libstdc++-v3/docs/html/faq/index.html
@@ -13,10 +13,6 @@
<link rel="Start" rev="Help" href="../documentation.html" type="text/html"
title="GNU C++ Standard Library" />
<link rel="Copyright" href="../17_intro/license.html" type="text/html" />
-<!--
- ** Locations of "the most recent snapshot is the Nth" text are
- ** answers 1_1, .
--->
</head>
<body>
@@ -137,12 +133,8 @@
<h2><a name="1_1">1.1 What is libstdc++-v3?</a></h2>
<p>The GNU Standard C++ Library v3 is an
ongoing project to implement the ISO 14882 Standard C++ library
- as described in chapters 17 through 27 and annex D. As the
- library reaches stable plateaus, it is captured in a snapshot
- and released. The latest release is
- <a href="http://gcc.gnu.org/libstdc++/index.html#download">the
- fourteenth snapshot</a> but newer versions have been included
- in recent GCC releases. For those who want to see exactly how
+ as described in chapters 17 through 27 and annex D.
+ For those who want to see exactly how
far the project has come, or just want the latest
bleeding-edge code, the up-to-date source is available over
anonymous CVS, and can even be browsed over the Web (see
@@ -169,10 +161,10 @@
<p>The GNU C/C++/FORTRAN/&lt;pick-a-language&gt; compiler
(<code>gcc</code>, <code>g++</code>, etc) is widely considered to be
one of the leading compilers in the world. Its development
- has recently been taken over by the
+ is overseen by the
<a href="http://gcc.gnu.org/">GCC team</a>. All of
the rapid development and near-legendary
- <a href="http://gcc.gnu.org/gcc-3.0/buildstat.html">portability</a>
+ <a href="http://gcc.gnu.org/gcc-3.3/buildstat.html">portability</a>
that are the hallmarks of an open-source project are being
applied to libstdc++.
</p>
@@ -209,7 +201,7 @@
</p>
<p>The subset commonly known as the Standard Template Library
(chapters 23 through 25, mostly) is adapted from the final release
- of the SGI STL.
+ of the SGI STL, with extensive changes.
</p>
<hr />
@@ -306,7 +298,7 @@ which is no longer available, thanks deja...-->
series was. If you are using GCC 2.95, you can still
build earlier snapshots of libstdc++.
</li>
- <li> GNU Make is recommended, but should not be required.
+ <li> GNU Make is required for GCC 3.4 and later.
</li>
<li> The GNU Autotools are needed if you are messing with
the configury or makefiles.
@@ -636,26 +628,17 @@ which is no longer available, thanks deja...-->
respond to your report. Thank you.
</p>
+<hr />
<h2><a name="4_1">4.1 What works already?</a></h2>
<p>Short answer: Pretty much everything <em>works</em> except for some
corner cases. Also, localization is incomplete. For whether it works
well, or as you expect it to work, see 5.2.
</p>
<p>Long answer: See the docs/html/17_intro/CHECKLIST file, which is
- badly outdated...
- </p>
- <p>What follows is a verbatim clip from the &quot;Status&quot; section
- of the RELEASE-NOTES for the latest snapshot. For a list of
- fixed bugs, see that file.
+ badly outdated... Also see the RELEASE-NOTES file, which is kept
+ more up to date.
</p>
-<!-- Yeah, I meant that "verbatim clip" thing literally... :-) -->
-
-<pre>
-New:
-</pre>
-
-
<hr />
<h2><a name="4_2">4.2 Bugs in gcc/g++ (not libstdc++-v3)</a></h2>
<p>This is by no means meant to be complete nor exhaustive, but
@@ -915,9 +898,9 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
<hr />
<h2><a name="5_3">5.3 What about the STL from SGI?</a></h2>
<p>The <a href="http://www.sgi.com/tech/stl/">STL from SGI</a>,
- version 3.3, was the most recent merge of the STL codebase. The
- code in libstdc++ contains many fixes and changes, and it is
- very likely that the SGI code is no longer under active
+ version 3.3, was the final merge of the STL codebase. The
+ code in libstdc++ contains many fixes and changes, and
+ the SGI code is no longer under active
development. We expect that no future merges will take place.
</p>
<p>In particular, <code>string</code> is not from SGI and makes no
diff --git a/libstdc++-v3/docs/html/faq/index.txt b/libstdc++-v3/docs/html/faq/index.txt
index ee5e27f3d15..b6d0decb2cd 100644
--- a/libstdc++-v3/docs/html/faq/index.txt
+++ b/libstdc++-v3/docs/html/faq/index.txt
@@ -1,18 +1,18 @@
#[1]GNU C++ Standard Library [2]Copyright
-
+
libstdc++ Frequently Asked Questions
-
+
The latest version of this document is always available at
[3]http://gcc.gnu.org/onlinedocs/libstdc++/faq/. The main
documentation page is at
[4]http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html.
-
+
To the [5]libstdc++-v3 homepage.
_________________________________________________________________
-
+
Questions
-
+
1. [6]General Information
1. [7]What is libstdc++-v3?
2. [8]Why should I use libstdc++?
@@ -71,29 +71,26 @@
9. [57]How do I make std::vector<T>::capacity() ==
std::vector<T>::size?
_________________________________________________________________
-
+
1.0 General Information
-
+
1.1 What is libstdc++-v3?
The GNU Standard C++ Library v3 is an ongoing project to implement the
ISO 14882 Standard C++ library as described in chapters 17 through 27
- and annex D. As the library reaches stable plateaus, it is captured in
- a snapshot and released. The latest release is [58]the fourteenth
- snapshot but newer versions have been included in recent GCC releases.
- For those who want to see exactly how far the project has come, or
- just want the latest bleeding-edge code, the up-to-date source is
- available over anonymous CVS, and can even be browsed over the Web
- (see [59]1.4 below).
-
+ and annex D. For those who want to see exactly how far the project has
+ come, or just want the latest bleeding-edge code, the up-to-date
+ source is available over anonymous CVS, and can even be browsed over
+ the Web (see [58]1.4 below).
+
The older libstdc++-v2 project is no longer maintained; the code has
- been completely replaced and rewritten. [60]If you are using V2, then
+ been completely replaced and rewritten. [59]If you are using V2, then
you need to report bugs to your system vendor, not to the V3 list.
-
+
A more formal description of the V3 goals can be found in the official
- [61]design document.
+ [60]design document.
_________________________________________________________________
-
+
1.2 Why should I use libstdc++?
The completion of the ISO C++ standardization gave the C++ community a
@@ -101,79 +98,79 @@
Library. However, all existing C++ implementations are (as the Draft
Standard used to say) "incomplet and incorrekt," and many suffer from
limitations of the compilers that use them.
-
+
The GNU C/C++/FORTRAN/<pick-a-language> compiler (gcc, g++, etc) is
widely considered to be one of the leading compilers in the world. Its
- development has recently been taken over by the [62]GCC team. All of
- the rapid development and near-legendary [63]portability that are the
- hallmarks of an open-source project are being applied to libstdc++.
-
+ development is overseen by the [61]GCC team. All of the rapid
+ development and near-legendary [62]portability that are the hallmarks
+ of an open-source project are being applied to libstdc++.
+
That means that all of the Standard classes and functions (such as
string, vector<>, iostreams, and algorithms) will be freely available
and fully compliant. Programmers will no longer need to "roll their
own" nor be worried about platform-specific incompatibilities.
_________________________________________________________________
-
+
1.3 Who's in charge of it?
The libstdc++ project is contributed to by several developers all over
the world, in the same way as GCC or Linux. Benjamin Kosnik, Gabriel
Dos Reis, Phil Edwards, Ulrich Drepper, Loren James Rittle, and Paolo
Carlini are the lead maintainers of the CVS archive.
-
+
Development and discussion is held on the libstdc++ mailing list.
Subscribing to the list, or searching the list archives, is open to
- everyone. You can read instructions for doing so on the [64]homepage.
+ everyone. You can read instructions for doing so on the [63]homepage.
If you have questions, ideas, code, or are just curious, sign up!
_________________________________________________________________
-
+
1.4 How do I get libstdc++?
- The [65]homepage has instructions for retrieving the latest CVS
+ The [64]homepage has instructions for retrieving the latest CVS
sources, and for browsing the CVS sources over the web.
-
- Stable versions of libstdc++-v3 are included with releases of [66]the
+
+ Stable versions of libstdc++-v3 are included with releases of [65]the
GCC compilers.
-
+
The subset commonly known as the Standard Template Library (chapters
23 through 25, mostly) is adapted from the final release of the SGI
- STL.
+ STL, with extensive changes.
_________________________________________________________________
-
+
1.5 When is libstdc++ going to be finished?
Nathan Myers gave the best of all possible answers, responding to a
Usenet article asking this question: Sooner, if you help.
_________________________________________________________________
-
+
1.6 How do I contribute to the effort?
- Here is [67]a page devoted to this topic. Subscribing to the mailing
+ Here is [66]a page devoted to this topic. Subscribing to the mailing
list (see above, or the homepage) is a very good idea if you have
something to contribute, or if you have spare time and want to help.
Contributions don't have to be in the form of source code; anybody who
is willing to help write documentation, for example, or has found a
bug in code that we all thought was working, is more than welcome!
_________________________________________________________________
-
+
1.7 What happened to libg++? I need that!
The most recent libg++ README states that libg++ is no longer being
actively maintained. It should not be used for new projects, and is
only being kicked along to support older code.
-
+
The libg++ was designed and created when there was no Standard to
provide guidance. Classes like linked lists are now provided for by
list<T> and do not need to be created by genclass. (For that matter,
templates exist now and are well-supported, whereas genclass (mostly)
predates them.)
-
+
There are other classes in libg++ that are not specified in the ISO
Standard (e.g., statistical analysis). While there are a lot of really
useful things that are used by a lot of people (e.g., statistics :-),
the Standards Committee couldn't include everything, and so a lot of
those "obvious" classes didn't get included.
-
+
Since libstdc++ is an implementation of the Standard Library, we have
no plans at this time to include non-Standard utilities in the
implementation, however handy they are. (The extensions provided in
@@ -182,35 +179,35 @@
entirely plausable that the "useful stuff" from libg++ might be
extracted into an updated utilities library, but nobody has started
such a project yet.
-
- (The [68]Boost site houses free C++ libraries that do varying things,
+
+ (The [67]Boost site houses free C++ libraries that do varying things,
and happened to be started by members of the Standards Committee.
Certain "useful stuff" classes will probably migrate there.)
-
- For the bold and/or desperate, the [69]GCC extensions page describes
+
+ For the bold and/or desperate, the [68]GCC extensions page describes
where to find the last libg++ source.
_________________________________________________________________
-
+
1.8 What if I have more questions?
If you have read the README and RELEASE-NOTES files, and your question
remains unanswered, then just ask the mailing list. At present, you do
not need to be subscribed to the list to send a message to it. More
information is available on the homepage (including how to browse the
- list archives); to send to the list, use [70]libstdc++@gcc.gnu.org.
-
+ list archives); to send to the list, use [69]libstdc++@gcc.gnu.org.
+
If you have a question that you think should be included here, or if
- you have a question about a question/answer here, contact [71]Phil
- Edwards or [72]Gabriel Dos Reis.
+ you have a question about a question/answer here, contact [70]Phil
+ Edwards or [71]Gabriel Dos Reis.
_________________________________________________________________
-
+
1.9 What are the license terms for libstdc++-v3?
- See [73]our license description for these and related questions.
+ See [72]our license description for these and related questions.
_________________________________________________________________
-
+
2.0 Installation
-
+
2.1 How do I install libstdc++-v3?
Complete instructions are not given here (this is a FAQ, not an
@@ -219,60 +216,60 @@
more automated than building the GCC 2.[78] series was. If you are
using GCC 2.95, you can still build earlier snapshots of
libstdc++.
- * GNU Make is recommended, but should not be required.
+ * GNU Make is required for GCC 3.4 and later.
* The GNU Autotools are needed if you are messing with the configury
or makefiles.
-
- The file [74]documentation.html provides a good overview of the steps
+
+ The file [73]documentation.html provides a good overview of the steps
necessary to build, install, and use the library. Instructions for
configuring the library with new flags such as --enable-threads are
there also, as well as patches and instructions for working with GCC
2.95.
-
- The top-level install.html and [75]RELEASE-NOTES files contain the
+
+ The top-level install.html and [74]RELEASE-NOTES files contain the
exact build and installation instructions. You may wish to browse
those files over CVSweb ahead of time to get a feel for what's
required. RELEASE-NOTES is located in the ".../docs/17_intro/"
directory of the distribution.
_________________________________________________________________
-
+
2.2 [removed]
This question has become moot and has been removed. The stub is here
to preserve numbering (and hence links/bookmarks).
_________________________________________________________________
-
+
2.3 What is this CVS thing that you keep mentioning?
The Concurrent Versions System is one of several revision control
packages. It was selected for GNU projects because it's free (speech),
- free (beer), and very high quality. The [76]CVS entry in the GNU
- software catalogue has a better description as well as a [77]link to
+ free (beer), and very high quality. The [75]CVS entry in the GNU
+ software catalogue has a better description as well as a [76]link to
the makers of CVS.
-
+
The "anonymous client checkout" feature of CVS is similar to anonymous
FTP in that it allows anyone to retrieve the latest libstdc++ sources.
-
+
After the first of April, American users will have a "/pharmacy"
command-line option...
_________________________________________________________________
-
+
2.4 How do I know if it works?
libstdc++-v3 comes with its own testsuite. You do not need to actually
install the library ("make install") to run the testsuite, but you do
- need DejaGNU, as described [78]here.
-
+ need DejaGNU, as described [77]here.
+
To run the testsuite on the library after building it, use "make
check" while in your build directory. To run the testsuite on the
library after building and installing it, use "make check-install"
instead.
-
+
If you find bugs in the testsuite programs themselves, or if you think
of a new test program that should be added to the suite, please write
up your idea and send it to the list!
_________________________________________________________________
-
+
2.5 This library is HUGE! And what's libsupc++?
Usually the size of libraries on disk isn't noticeable. When a link
@@ -283,7 +280,7 @@
object file is extracted. (There's nothing unique to C++ or
libstdc++-v3 about this; it's just common behavior, given here for
background reasons.)
-
+
Some of the object files which make up libstdc++.a are rather large.
If you create a statically-linked executable with -static, those large
object files are suddenly part of your executable. Historically the
@@ -294,33 +291,33 @@
files in question contain template classes and template functions,
pre-instantiated, and splitting those up causes severe maintenance
headaches.
-
+
It's not a bug, and it's not really a problem. Nevertheless, some
people don't like it, so here are two pseudo-solutions:
-
+
If the only functions from libstdc++.a which you need are language
- support functions (those listed in [79]clause 18 of the standard,
- e.g., new and delete), then try linking against libsupc++.a (usually
- specifying -lsupc++ when calling g++ for the final link step will do
- it). This library contains only those support routines, one per object
- file. But if you are using anything from the rest of the library, such
- as IOStreams or vectors, then you'll still need pieces from
- libstdc++.a.
-
+ support functions (those listed in [78]clause 18 of the standard,
+ e.g., new and delete), then try linking against libsupc++.a (Using gcc
+ instead of g++ and explicitly linking in -lsupc++ for the final link
+ step will do it). This library contains only those support routines,
+ one per object file. But if you are using anything from the rest of
+ the library, such as IOStreams or vectors, then you'll still need
+ pieces from libstdc++.a.
+
The second method is one we hope to incorporate into the library build
process. Some platforms can place each function and variable into its
own section in a .o file. The GNU linker can then perform garbage
collection on unused sections; this reduces the situation to only
copying needed functions into the executable, as before, but all
happens automatically.
-
+
Unfortunately the garbage collection in GNU ld is buggy; sections
(corresponding to functions and variables) which are used are
mistakenly removed, leading to horrible crashes when your executable
starts up. For the time being, this feature is not used when building
the library.
_________________________________________________________________
-
+
2.6 Why do I get an error saying libstdc++.so.X is missing when I run my
program?
@@ -347,19 +344,19 @@ shared object file: No such file or directory
LD_LIBRARY_PATH_32/LD_LIBRARY_PATH_64 for Solaris 32-/64-bit,
LD_LIBRARYN32_PATH/LD_LIBRARY64_PATH for Irix N32/64-bit ABIs and
SHLIB_PATH for HP-UX.
-
+
See the man pages for ld(1), ldd(1) and ldconfig(8) for more
information. The dynamic linker has different names on different
platforms but the man page is usually called something such as ld.so /
rtld / dld.so.
_________________________________________________________________
-
+
3.0 Platform-Specific Issues
-
+
3.1 Can libstdc++-v3 be used with <my favorite compiler>?
Probably not. Yet.
-
+
Because GCC advances so rapidly, development and testing of libstdc++
is being done almost entirely under that compiler. If you are curious
about whether other, lesser compilers (*grin*) support libstdc++, you
@@ -367,79 +364,79 @@ shared object file: No such file or directory
(see above) will still require certain tools, however. Also keep in
mind that building libstdc++ does not imply that your compiler will be
able to use all of the features found in the C++ Standard Library.
-
+
Since the goal of ISO Standardization is for all C++ implementations
to be able to share code, the final libstdc++ should, in theory, be
usable under any ISO-compliant compiler. It will still be targeted and
optimized for GCC/g++, however.
_________________________________________________________________
-
+
3.2 [removed]
This question has become moot and has been removed. The stub is here
to preserve numbering (and hence links/bookmarks).
_________________________________________________________________
-
+
3.3 [removed]
This question has become moot and has been removed. The stub is here
to preserve numbering (and hence links/bookmarks).
_________________________________________________________________
-
+
3.4 I can't use 'long long' on Solaris
By default we try to support the C99 long long type. This requires
that certain functions from your C library be present.
-
+
Up through release 3.0.2 the tests performed were too general, and
this feature was disabled when it did not need to be. The most
commonly reported platform affected was Solaris.
-
+
This has been fixed for 3.0.3 and onwards.
_________________________________________________________________
-
+
3.5 _XOPEN_SOURCE / _GNU_SOURCE / etc is always defined
On Solaris, g++ (but not gcc) always defines the preprocessor macro
_XOPEN_SOURCE. On GNU/Linux, the same happens with _GNU_SOURCE. (This
is not an exhaustive list; other macros and other platforms are also
affected.)
-
+
These macros are typically used in C library headers, guarding new
versions of functions from their older versions. The C++ standard
library includes the C standard library, but it requires the C90
version, which for backwards-compatability reasons is often not the
default for many vendors.
-
+
More to the point, the C++ standard requires behavior which is only
available on certain platforms after certain symbols are defined.
Usually the issue involves I/O-related typedefs. In order to ensure
correctness, the compiler simply predefines those symbols.
-
+
Note that it's not enough to #define them only when the library is
being built (during installation). Since we don't have an 'export'
keyword, much of the library exists as headers, which means that the
symbols must also be defined as your programs are parsed and compiled.
-
+
To see which symbols are defined, look for CPLUSPLUS_CPP_SPEC in the
gcc config headers for your target (and try changing them to see what
happens when building complicated code). You can also run "g++ -E -dM
- < /dev/null" to display a list of predefined macros for any
particular installation.
-
- This has been discussed on the mailing lists [80]quite a bit.
-
+
+ This has been discussed on the mailing lists [79]quite a bit.
+
This method is something of a wart. We'd like to find a cleaner
solution, but nobody yet has contributed the time.
_________________________________________________________________
-
+
3.6 OS X ctype.h is broken! How can I hack it?
This is a long-standing bug in the OS X support. Fortunately, the
- patch is quite simple, and well-known. [81]Here's a link to the
+ patch is quite simple, and well-known. [80]Here's a link to the
solution.
_________________________________________________________________
-
+
3.7 Threading is broken on i386
Support for atomic integer operations is/was broken on i386 platforms.
@@ -448,10 +445,10 @@ shared object file: No such file or directory
i386-linux, but actually used the programs on an i686, then you would
encounter no problems. Only when actually running the code on a i386
will the problem appear.
-
+
This is fixed in 3.2.2.
_________________________________________________________________
-
+
3.8 Recent GNU/Linux glibc required?
When running on GNU/Linux, libstdc++ 3.2.1 (shared library version
@@ -459,12 +456,12 @@ shared object file: No such file or directory
C library (glibc) version 2.2.5. That version of glibc is over a year
old and contains necessary bugfixes. Many GNU/Linux distros make glibc
version 2.3.x available now.
-
+
The guideline is simple: the more recent the C++ library, the more
recent the C library. (This is also documented in the main GCC
installation instructions.)
_________________________________________________________________
-
+
3.9 Can't use wchar_t/wstring on FreeBSD
At the moment there are a few problems in FreeBSD's support for wide
@@ -472,111 +469,108 @@ shared object file: No such file or directory
that wchar_t support should be disabled. Once the underlying problems
are fixed in FreeBSD (soon), the library support will automatically
enable itself.
-
+
You can fix the problems yourself, and learn more about the situation,
- by reading [82]this short thread ("_GLIBCPP_USE_WCHAR_T undefined in
+ by reading [81]this short thread ("_GLIBCPP_USE_WCHAR_T undefined in
FreeBSD's c++config.h?").
_________________________________________________________________
-
+
3.10 MIPS atomic operations
The atomic locking routines for MIPS targets requires MIPS II and
later. A patch went in just after the 3.3 release to make mips* use
the generic implementation instead. You can also configure for
mipsel-elf as a workaround.
-
+
mips*-*-linux* continues to use the MIPS II routines, and more work in
this area is expected.
_________________________________________________________________
-
+
4.0 Known Bugs and Non-Bugs
-
+
Note that this section can get rapdily outdated -- such is the nature
of an open-source project. For the latest information, join the
mailing list or look through recent archives. The RELEASE- NOTES and
BUGS files are generally kept up-to-date.
-
+
For 3.0.1, the most common "bug" is an apparently missing "../" in
include/Makefile, resulting in files like gthr.h and gthr-single.h not
- being found. Please read [83]the configuration instructions for GCC,
+ being found. Please read [82]the configuration instructions for GCC,
specifically the part about configuring in a separate build directory,
and how strongly recommended it is. Building in the source directory
is fragile, is rarely tested, and tends to break, as in this case.
This was fixed for 3.0.2.
-
+
For 3.1, the most common "bug" is a parse error when using <fstream>,
ending with a message, "bits/basic_file.h:52: parse error before `{'
- token." Please read [84]the installation instructions for GCC,
+ token." Please read [83]the installation instructions for GCC,
specifically the part about not installing newer versions on top of
older versions. If you install 3.1 over a 3.0.x release, then the
wrong basic_file.h header will be found (its location changed between
releases).
-
+
Please do not report these as bugs. We know about them. Reporting this
-- or any other problem that's already been fixed -- hinders the
development of GCC, because we have to take time to respond to your
report. Thank you.
-
+ _________________________________________________________________
+
4.1 What works already?
Short answer: Pretty much everything works except for some corner
cases. Also, localization is incomplete. For whether it works well, or
as you expect it to work, see 5.2.
-
+
Long answer: See the docs/html/17_intro/CHECKLIST file, which is badly
- outdated...
-
- What follows is a verbatim clip from the "Status" section of the
- RELEASE-NOTES for the latest snapshot. For a list of fixed bugs, see
- that file.
-New:
+ outdated... Also see the RELEASE-NOTES file, which is kept more up to
+ date.
_________________________________________________________________
-
+
4.2 Bugs in gcc/g++ (not libstdc++-v3)
This is by no means meant to be complete nor exhaustive, but mentions
some problems that users may encounter when building or using
libstdc++. If you are experiencing one of these problems, you can find
more information on the libstdc++ and the GCC mailing lists.
-
- Before reporting a bug, examine the [85]bugs database with the
+
+ Before reporting a bug, examine the [84]bugs database with the
category set to "libstdc++". The BUGS file in the source tree also
tracks known serious problems.
* Debugging is problematic, due to bugs in line-number generation
(mostly fixed in the compiler) and gdb lagging behind the compiler
(lack of personnel). We recommend configuring the compiler using
--with-dwarf2 if the DWARF2 debugging format is not already the
- default on your platform. Also, [86]changing your GDB settings can
+ default on your platform. Also, [85]changing your GDB settings can
have a profound effect on your C++ debugging experiences. :-)
_________________________________________________________________
-
+
4.3 Bugs in the C++ language/lib specification
- Yes, unfortunately, there are some. In a [87]message to the list,
+ Yes, unfortunately, there are some. In a [86]message to the list,
Nathan Myers announced that he has started a list of problems in the
ISO C++ Standard itself, especially with regard to the chapters that
- concern the library. The list itself is [88]posted on his website.
+ concern the library. The list itself is [87]posted on his website.
Developers who are having problems interpreting the Standard may wish
to consult his notes.
-
+
For those people who are not part of the ISO Library Group (i.e.,
nearly all of us needing to read this page in the first place :-), a
- public list of the library defects is occasionally published [89]here.
- Some of these have resulted in [90]code changes.
+ public list of the library defects is occasionally published [88]here.
+ Some of these have resulted in [89]code changes.
_________________________________________________________________
-
+
4.4 Things in libstdc++ that only look like bugs
There are things which are not bugs in the compiler (4.2) nor the
language specification (4.3), but aren't really bugs in libstdc++,
either. Really! Please do not report these as bugs.
-
+
-Weffc++ The biggest of these is the quadzillions of warnings about
the library headers emitted when -Weffc++ is used. Making libstdc++
"-Weffc++-clean" is not a goal of the project, for a few reasons.
Mainly, that option tries to enforce object-oriented programming,
while the Standard Library isn't necessarily trying to be OO.
-
+
reopening a stream fails Did I just say that -Weffc++ was our biggest
false-bug report? I lied. (It used to be.) Today it seems to be
reports that after executing a sequence like
@@ -594,38 +588,38 @@ New:
state on the previous file. The reason is that the state flags are not
cleared on a successful call to open(). The standard unfortunately did
not specify behavior in this case, and to everybody's great sorrow,
- the [91]proposed LWG resolution in DR #22 is to leave the flags
+ the [90]proposed LWG resolution in DR #22 is to leave the flags
unchanged. You must insert a call to fs.clear() between the calls to
close() and open(), and then everything will work like we all expect
it to work.
-
+
rel_ops Another is the rel_ops namespace and the template comparison
operator functions contained therein. If they become visible in the
same namespace as other comparison functions (e.g., 'using' them and
the <iterator> header), then you will suddenly be faced with huge
numbers of ambiguity errors. This was discussed on the -v3 list;
- Nathan Myers [92]sums things up here. The collisions with
+ Nathan Myers [91]sums things up here. The collisions with
vector/string iterator types have been fixed for 3.1.
-
+
The g++-3 headers are not ours
-
+
If you have found an extremely broken header file which is causing
problems for you, look carefully before submitting a "high" priority
bug report (which you probably shouldn't do anyhow; see the last
- paragraph of the page describing [93]the GCC bug database).
-
+ paragraph of the page describing [92]the GCC bug database).
+
If the headers are in ${prefix}/include/g++-3, or if the installed
library's name looks like libstdc++-2.10.a or libstdc++-libc6-2.10.so,
then you are using the old libstdc++-v2 library, which is nonstandard
and unmaintained. Do not report problems with -v2 to the -v3 mailing
list.
-
+
For GCC versions 3.0 and 3.1 the libstdc++-v3 header files are
installed in ${prefix}/include/g++-v3 (see the 'v'?). Starting with
version 3.2 the headers are installed in
${prefix}/include/c++/${version} as this prevents headers from
previous versions being found by mistake.
-
+
glibc If you're on a GNU/Linux system and have just upgraded to glibc
2.2, but are still using gcc 2.95.2, then you should have read the
glibc FAQ, specifically 2.34:
@@ -637,10 +631,10 @@ type has changed in glibc 2.2. The patch is at
http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
- Note that 2.95.x shipped with the [94]old v2 library which is no
+ Note that 2.95.x shipped with the [93]old v2 library which is no
longer maintained. Also note that gcc 2.95.3 fixes this problem, but
requires a separate patch for libstdc++-v3.
-
+
concept checks If you see compilation errors containing messages about
fooConcept and a constraints member function, then most likely you
have violated one of the requirements for types used during
@@ -648,10 +642,10 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
EqualityComparableConcept appears if your types must be comparable
with == and you have not provided this capability (a typo, or wrong
visibility, or you just plain forgot, etc).
-
+
More information, including how to optionally enable/disable the
- checks, is available [95]here.
-
+ checks, is available [94]here.
+
dlopen/dlsym If you are using the C++ library across
dynamically-loaded objects, make certain that you are passing the
correct options when compiling and linking:
@@ -669,50 +663,50 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
"memory leaks" in containers A few people have reported that the
standard containers appear to leak memory when tested with memory
- checkers such as [96]valgrind. The library's default allocators keep
+ checkers such as [95]valgrind. The library's default allocators keep
free memory in a pool for later reuse, rather than returning it to the
OS. Although this memory is always reachable by the library and is
never lost, memory debugging tools can report it as a leak. If you
- want to test the library for memory leaks please read [97]Tips for
+ want to test the library for memory leaks please read [96]Tips for
memory leak hunting first.
_________________________________________________________________
-
+
4.5 Aw, that's easy to fix!
If you have found a bug in the library and you think you have a
working fix, then send it in! The main GCC site has a page on
- [98]submitting patches that covers the procedure, but for libstdc++
+ [97]submitting patches that covers the procedure, but for libstdc++
you should also send the patch to our mailing list in addition to the
- GCC patches mailing list. The libstdc++ [99]contributors' page also
+ GCC patches mailing list. The libstdc++ [98]contributors' page also
talks about how to submit patches.
-
+
In addition to the description, the patch, and the ChangeLog entry, it
is a Good Thing if you can additionally create a small test program to
test for the presence of the bug that your patch fixes. Bugs have a
way of being reintroduced; if an old bug creeps back in, it will be
- caught immediately by the [100]testsuite -- but only if such a test
+ caught immediately by the [99]testsuite -- but only if such a test
exists.
_________________________________________________________________
-
+
5.0 Miscellaneous
-
+
5.1 string::iterator is not char*; vector<T>::iterator is not T*
If you have code that depends on container<T> iterators being
implemented as pointer-to-T, your code is broken.
-
+
While there are arguments for iterators to be implemented in that
manner, A) they aren't very good ones in the long term, and B) they
were never guaranteed by the Standard anyway. The type-safety achieved
by making iterators a real class rather than a typedef for T*
outweighs nearly all opposing arguments.
-
+
Code which does assume that a vector iterator i is a pointer can often
be fixed by changing i in certain expressions to &*i . Future
revisions of the Standard are expected to bless this usage for
vector<> (but not for basic_string<>).
_________________________________________________________________
-
+
5.2 What's next after libstdc++-v3?
Hopefully, not much. The goal of libstdc++-v3 is to produce a
@@ -724,7 +718,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
libstdc++. Some of that is already happening, see 4.2. Some of
those changes are being predicted by the library maintainers, and
we add code to the library based on what the current proposed
- resolution specifies. Those additions are listed in [101]the
+ resolution specifies. Those additions are listed in [100]the
extensions page.
2. Performance tuning. Lots of performance tuning. This too is
already underway for post-3.0 releases, starting with memory
@@ -739,27 +733,27 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
they seem to be "standard" enough. (For example, the "long long"
type from C99.) Bugfixes and rewrites (to improve or fix thread
safety, for instance) will of course be a continuing task.
-
- [102]This question about the next libstdc++ prompted some brief but
- interesting [103]speculation.
+
+ [101]This question about the next libstdc++ prompted some brief but
+ interesting [102]speculation.
_________________________________________________________________
-
+
5.3 What about the STL from SGI?
- The [104]STL from SGI, version 3.3, was the most recent merge of the
- STL codebase. The code in libstdc++ contains many fixes and changes,
- and it is very likely that the SGI code is no longer under active
- development. We expect that no future merges will take place.
-
+ The [103]STL from SGI, version 3.3, was the final merge of the STL
+ codebase. The code in libstdc++ contains many fixes and changes, and
+ the SGI code is no longer under active development. We expect that no
+ future merges will take place.
+
In particular, string is not from SGI and makes no use of their "rope"
class (which is included as an optional extension), nor is valarray
and some others. Classes like vector<> are, however we have made
significant changes to them since then.
-
+
The FAQ for SGI's STL (one jump off of their main page) is recommended
reading.
_________________________________________________________________
-
+
5.4 Extensions and Backward Compatibility
Headers in the ext and backward subdirectories should be referred to
@@ -770,7 +764,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
forward-compatible. (The situation is the same as that of other
headers whose directories are not searched directly, e.g.,
<sys/stat.h>, <X11/Xlib.h>.
-
+
The extensions are no longer in the global or std namespaces, instead
they are declared in the __gnu_cxx namespace. For maximum portability,
consider defining a namespace alias to use to talk about extensions,
@@ -795,20 +789,20 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
This is a bit cleaner than defining typedefs for all the
instantiations you might need.
-
+
Note: explicit template specializations must be declared in the same
namespace as the original template. This means you cannot use a
namespace alias when declaring an explicit specialization.
-
- Extensions to the library have [105]their own page.
+
+ Extensions to the library have [104]their own page.
_________________________________________________________________
-
+
5.5 [removed]
This question has become moot and has been removed. The stub is here
to preserve numbering (and hence links/bookmarks).
_________________________________________________________________
-
+
5.6 Is libstdc++-v3 thread-safe?
libstdc++-v3 strives to be thread-safe when all of the following
@@ -817,7 +811,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
* gcc -v reports a thread model other than 'single',
* [pre-3.3 only] a non-generic implementation of atomicity.h exists
for the architecture in question.
-
+
The user-code must guard against concurrent method calls which may
access any particular library object's state. Typically, the
application programmer may infer what object locks must be held based
@@ -852,11 +846,11 @@ a
both read and write access to objects; unless otherwise documented as
safe, do not assume that two threads may access a shared standard
library object at the same time.
-
- See chapters [106]17 (library introduction), [107]23 (containers), and
- [108]27 (I/O) for more information.
+
+ See chapters [105]17 (library introduction), [106]23 (containers), and
+ [107]27 (I/O) for more information.
_________________________________________________________________
-
+
5.7 How do I get a copy of the ISO C++ Standard?
Copies of the full ISO 14882 standard are available on line via the
@@ -865,14 +859,14 @@ a
their two-meeting commitment for voting rights, may get a copy of the
standard from their respective national standards organization. In the
USA, this national standards organization is ANSI and their website is
- right [109]here. (And if you've already registered with them, clicking
+ right [108]here. (And if you've already registered with them, clicking
this link will take you to directly to the place where you can
- [110]buy the standard on-line.
-
- Who is your country's member body? Visit the [111]ISO homepage and
+ [109]buy the standard on-line.
+
+ Who is your country's member body? Visit the [110]ISO homepage and
find out!
_________________________________________________________________
-
+
5.8 What's an ABI and why is it so messy?
"ABI" stands for "Application Binary Interface." Conventionally, it
@@ -885,7 +879,7 @@ a
one ABI and all the OSes and compilers use it. In practice every ABI
omits details that compiler implementers (consciously or accidentally)
must choose for themselves.
-
+
That ABI definition suffices for compilers to generate code so a
program can interact safely with an OS and its lowest-level libraries.
Users usually want an ABI to encompass more detail, allowing libraries
@@ -898,7 +892,7 @@ a
C++, and is immediately useful for embedded work relying only on a
"free-standing implementation" that doesn't include (much of) the
standard library. It is a good basis for the work to come.
-
+
A useful C++ ABI must also incorporate many details of the standard
library implementation. For a C ABI, the layouts of a few structs
(such as FILE, stat, jmpbuf, and the like) and a few macros suffice.
@@ -910,7 +904,7 @@ a
documenting library implementation details, but carefully designing
those details so that future bug fixes and optimizations don't force
breaking the ABI.
-
+
There are ways to help isolate library implementation details from the
ABI, but they trade off against speed. Library details used in inner
loops (e.g., getchar) must be exposed and frozen for all time, but
@@ -919,7 +913,7 @@ a
happen before you can reasonably document a candidate C++ ABI that
encompasses the standard library.
_________________________________________________________________
-
+
5.9 How do I make std::vector<T>::capacity() == std::vector<T>::size()?
The standard idiom for deallocating a std::vector<T>'s unused memory
@@ -929,12 +923,12 @@ a
The copy will take O(n) time and the swap is constant time.
-
- See [112]Shrink-to-fit strings for a similar solution for strings.
+
+ See [111]Shrink-to-fit strings for a similar solution for strings.
_________________________________________________________________
-
- See [113]license.html for copying conditions. Comments and suggestions
- are welcome, and may be sent to [114]the libstdc++ mailing list.
+
+ See [112]license.html for copying conditions. Comments and suggestions
+ are welcome, and may be sent to [113]the libstdc++ mailing list.
References
@@ -995,60 +989,59 @@ References
55. ../faq/index.html#5_7
56. ../faq/index.html#5_8
57. ../faq/index.html#5_9
- 58. http://gcc.gnu.org/libstdc++/index.html#download
- 59. ../faq/index.html#1_4
- 60. ../faq/index.html#4_4_interface
- 61. ../17_intro/DESIGN
- 62. http://gcc.gnu.org/
- 63. http://gcc.gnu.org/gcc-3.0/buildstat.html
+ 58. ../faq/index.html#1_4
+ 59. ../faq/index.html#4_4_interface
+ 60. ../17_intro/DESIGN
+ 61. http://gcc.gnu.org/
+ 62. http://gcc.gnu.org/gcc-3.3/buildstat.html
+ 63. http://gcc.gnu.org/libstdc++/
64. http://gcc.gnu.org/libstdc++/
- 65. http://gcc.gnu.org/libstdc++/
- 66. http://gcc.gnu.org/releases.html
- 67. ../17_intro/contribute.html
- 68. http://www.boost.org/
- 69. http://gcc.gnu.org/extensions.html
- 70. mailto:libstdc++@gcc.gnu.org
- 71. mailto:pme@gcc.gnu.org
- 72. mailto:gdr@gcc.gnu.org
- 73. ../17_intro/license.html
- 74. ../documentation.html
- 75. ../17_intro/RELEASE-NOTES
- 76. http://www.gnu.org/software/cvs/cvs.html
- 77. http://www.cvshome.org/
- 78. http://gcc.gnu.org/install/test.html
- 79. ../18_support/howto.html
- 80. http://gcc.gnu.org/cgi-bin/htsearch?method=and&format=builtin-long&sort=score&words=_XOPEN_SOURCE+Solaris
- 81. http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html
- 82. http://gcc.gnu.org/ml/libstdc++/2003-02/subjects.html#00286
- 83. http://gcc.gnu.org/install/configure.html
- 84. http://gcc.gnu.org/install/
- 85. http://gcc.gnu.org/bugs.html
- 86. http://gcc.gnu.org/ml/libstdc++/2002-02/msg00034.html
- 87. http://gcc.gnu.org/ml/libstdc++/1998/msg00006.html
- 88. http://www.cantrip.org/draft-bugs.txt
- 89. http://anubis.dkuug.dk/jtc1/sc22/wg21/
- 90. ../faq/index.html#5_2
- 91. ../ext/howto.html#5
- 92. http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html
- 93. http://gcc.gnu.org/gnatswrite.html
- 94. ../faq/index.html#4_4_interface
- 95. ../19_diagnostics/howto.html#3
- 96. http://developer.kde.org/~sewardj/
- 97. ../debug.html#mem
- 98. http://gcc.gnu.org/contribute.html
- 99. ../17_intro/contribute.html
- 100. ../faq/index.html#2_4
- 101. ../ext/howto.html#5
- 102. http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html
- 103. http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html
- 104. http://www.sgi.com/tech/stl/
- 105. ../ext/howto.html
- 106. ../17_intro/howto.html#3
- 107. ../23_containers/howto.html#3
- 108. ../27_io/howto.html#9
- 109. http://www.ansi.org/
- 110. http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998
- 111. http://www.iso.ch/
- 112. ../21_strings/howto.html#6
- 113. ../17_intro/license.html
- 114. mailto:libstdc++@gcc.gnu.org
+ 65. http://gcc.gnu.org/releases.html
+ 66. ../17_intro/contribute.html
+ 67. http://www.boost.org/
+ 68. http://gcc.gnu.org/extensions.html
+ 69. mailto:libstdc++@gcc.gnu.org
+ 70. mailto:pme@gcc.gnu.org
+ 71. mailto:gdr@gcc.gnu.org
+ 72. ../17_intro/license.html
+ 73. ../documentation.html
+ 74. ../17_intro/RELEASE-NOTES
+ 75. http://www.gnu.org/software/cvs/cvs.html
+ 76. http://www.cvshome.org/
+ 77. http://gcc.gnu.org/install/test.html
+ 78. ../18_support/howto.html
+ 79. http://gcc.gnu.org/cgi-bin/htsearch?method=and&format=builtin-long&sort=score&words=_XOPEN_SOURCE+Solaris
+ 80. http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html
+ 81. http://gcc.gnu.org/ml/libstdc++/2003-02/subjects.html#00286
+ 82. http://gcc.gnu.org/install/configure.html
+ 83. http://gcc.gnu.org/install/
+ 84. http://gcc.gnu.org/bugs.html
+ 85. http://gcc.gnu.org/ml/libstdc++/2002-02/msg00034.html
+ 86. http://gcc.gnu.org/ml/libstdc++/1998/msg00006.html
+ 87. http://www.cantrip.org/draft-bugs.txt
+ 88. http://anubis.dkuug.dk/jtc1/sc22/wg21/
+ 89. ../faq/index.html#5_2
+ 90. ../ext/howto.html#5
+ 91. http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html
+ 92. http://gcc.gnu.org/bugs.html
+ 93. ../faq/index.html#4_4_interface
+ 94. ../19_diagnostics/howto.html#3
+ 95. http://developer.kde.org/~sewardj/
+ 96. ../debug.html#mem
+ 97. http://gcc.gnu.org/contribute.html
+ 98. ../17_intro/contribute.html
+ 99. ../faq/index.html#2_4
+ 100. ../ext/howto.html#5
+ 101. http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html
+ 102. http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html
+ 103. http://www.sgi.com/tech/stl/
+ 104. ../ext/howto.html
+ 105. ../17_intro/howto.html#3
+ 106. ../23_containers/howto.html#3
+ 107. ../27_io/howto.html#9
+ 108. http://www.ansi.org/
+ 109. http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%3A2003
+ 110. http://www.iso.ch/
+ 111. ../21_strings/howto.html#6
+ 112. ../17_intro/license.html
+ 113. mailto:libstdc++@gcc.gnu.org
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index bed615eaecf..5ff38983d23 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -340,7 +340,8 @@ host_headers = \
${host_srcdir}/ctype_inline.h \
${host_srcdir}/ctype_noninline.h \
${host_srcdir}/os_defines.h \
- ${glibcxx_srcdir}/$(ATOMIC_WORD_SRCDIR)/atomic_word.h
+ ${glibcxx_srcdir}/$(ATOMIC_WORD_SRCDIR)/atomic_word.h \
+ ${glibcxx_srcdir}/$(ABI_TWEAKS_SRCDIR)/cxxabi_tweaks.h
# Non-installed host_header files.
host_headers_noinst = \
@@ -540,8 +541,8 @@ ${pch_input}: ${allstamped} ${host_builddir}/c++config.h ${pch_source}
if [ ! -d "${pch_output_builddir}" ]; then \
mkdir -p ${pch_output_builddir}; \
fi; \
- $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O0 -g -o ${pch_output_builddir}/O0g; \
- $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O2 -g -o ${pch_output_builddir}/O2g;
+ $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O0 -g -o ${pch_output_builddir}/O0g.gch; \
+ $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O2 -g -o ${pch_output_builddir}/O2g.gch;
# For robustness sake (in light of junk files or in-source
# configuration), copy from the build or source tree to the install
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 51a1718f795..8ff8fc747aa 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -54,6 +54,7 @@ am__depfiles_maybe =
SOURCES =
DIST_SOURCES =
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
ACLOCAL = @ACLOCAL@
ALLOCATOR_H = @ALLOCATOR_H@
ALLOCATOR_NAME = @ALLOCATOR_NAME@
@@ -549,7 +550,8 @@ host_headers = \
${host_srcdir}/ctype_inline.h \
${host_srcdir}/ctype_noninline.h \
${host_srcdir}/os_defines.h \
- ${glibcxx_srcdir}/$(ATOMIC_WORD_SRCDIR)/atomic_word.h
+ ${glibcxx_srcdir}/$(ATOMIC_WORD_SRCDIR)/atomic_word.h \
+ ${glibcxx_srcdir}/$(ABI_TWEAKS_SRCDIR)/cxxabi_tweaks.h
# Non-installed host_header files.
@@ -914,8 +916,8 @@ ${pch_input}: ${allstamped} ${host_builddir}/c++config.h ${pch_source}
if [ ! -d "${pch_output_builddir}" ]; then \
mkdir -p ${pch_output_builddir}; \
fi; \
- $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O0 -g -o ${pch_output_builddir}/O0g; \
- $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O2 -g -o ${pch_output_builddir}/O2g;
+ $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O0 -g -o ${pch_output_builddir}/O0g.gch; \
+ $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O2 -g -o ${pch_output_builddir}/O2g.gch;
# For robustness sake (in light of junk files or in-source
# configuration), copy from the build or source tree to the install
diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h
index 16fe5ac384b..7e6c669bd0b 100644
--- a/libstdc++-v3/include/bits/basic_string.h
+++ b/libstdc++-v3/include/bits/basic_string.h
@@ -419,10 +419,7 @@ namespace std
*/
basic_string&
operator=(const basic_string& __str)
- {
- this->assign(__str);
- return *this;
- }
+ { return this->assign(__str); }
/**
* @brief Copy contents of @a s into this string.
@@ -430,10 +427,7 @@ namespace std
*/
basic_string&
operator=(const _CharT* __s)
- {
- this->assign(__s);
- return *this;
- }
+ { return this->assign(__s); }
/**
* @brief Set value to string of length 1.
@@ -1294,47 +1288,47 @@ namespace std
// Specializations for the common case of pointer and iterator:
// useful to avoid the overhead of temporary buffering in _M_replace.
basic_string&
- replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)
- {
- _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
- && __i2 <= _M_iend());
- __glibcxx_requires_valid_range(__k1, __k2);
- return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
- __k1, __k2 - __k1);
- }
+ replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)
+ {
+ _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+ && __i2 <= _M_iend());
+ __glibcxx_requires_valid_range(__k1, __k2);
+ return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+ __k1, __k2 - __k1);
+ }
basic_string&
- replace(iterator __i1, iterator __i2,
- const _CharT* __k1, const _CharT* __k2)
- {
- _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
- && __i2 <= _M_iend());
- __glibcxx_requires_valid_range(__k1, __k2);
- return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
- __k1, __k2 - __k1);
- }
+ replace(iterator __i1, iterator __i2,
+ const _CharT* __k1, const _CharT* __k2)
+ {
+ _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+ && __i2 <= _M_iend());
+ __glibcxx_requires_valid_range(__k1, __k2);
+ return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+ __k1, __k2 - __k1);
+ }
basic_string&
- replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)
- {
- _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
- && __i2 <= _M_iend());
- __glibcxx_requires_valid_range(__k1, __k2);
- return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
- __k1.base(), __k2 - __k1);
- }
+ replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)
+ {
+ _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+ && __i2 <= _M_iend());
+ __glibcxx_requires_valid_range(__k1, __k2);
+ return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+ __k1.base(), __k2 - __k1);
+ }
basic_string&
- replace(iterator __i1, iterator __i2,
- const_iterator __k1, const_iterator __k2)
- {
- _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
- && __i2 <= _M_iend());
- __glibcxx_requires_valid_range(__k1, __k2);
- return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
- __k1.base(), __k2 - __k1);
- }
-
+ replace(iterator __i1, iterator __i2,
+ const_iterator __k1, const_iterator __k2)
+ {
+ _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
+ && __i2 <= _M_iend());
+ __glibcxx_requires_valid_range(__k1, __k2);
+ return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+ __k1.base(), __k2 - __k1);
+ }
+
private:
template<class _Integer>
basic_string&
diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index 140393804f0..754887651c5 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -35,7 +35,7 @@
#include <bits/os_defines.h>
// The current version of the C++ library in compressed ISO date format.
-#define __GLIBCXX__ 20040628
+#define __GLIBCXX__ 20040801
// Allow use of "export template." This is currently not a feature
// that g++ supports.
diff --git a/libstdc++-v3/include/bits/concurrence.h b/libstdc++-v3/include/bits/concurrence.h
index 03cd6ebabec..c436a1b0806 100644
--- a/libstdc++-v3/include/bits/concurrence.h
+++ b/libstdc++-v3/include/bits/concurrence.h
@@ -37,18 +37,22 @@
#if __GTHREADS
# ifdef __GTHREAD_MUTEX_INIT
+# define __glibcxx_mutex_type __gthread_mutex_t
# define __glibcxx_mutex_define_initialized(NAME) \
__gthread_mutex_t NAME = __GTHREAD_MUTEX_INIT
# define __glibcxx_mutex_lock(NAME) \
__gthread_mutex_lock(&NAME)
# else
// Implies __GTHREAD_MUTEX_INIT_FUNCTION
+struct __glibcxx_mutex : public __gthread_mutex_t
+{
+ __glibcxx_mutex() { __GTHREAD_MUTEX_INIT_FUNCTION(this); }
+};
+
+# define __glibcxx_mutex_type __glibcxx_mutex
# define __glibcxx_mutex_define_initialized(NAME) \
-__gthread_mutex_t NAME; \
-__gthread_once_t NAME ## _once = __GTHREAD_ONCE_INIT; \
-void NAME ## _init() { __GTHREAD_MUTEX_INIT_FUNCTION(&NAME); }
+__glibcxx_mutex NAME
# define __glibcxx_mutex_lock(NAME) \
-__gthread_once(&NAME ## _once, NAME ## _init); \
__gthread_mutex_lock(&NAME)
# endif
@@ -56,6 +60,7 @@ __gthread_mutex_lock(&NAME)
#else
+# define __glibcxx_mutex_type __gthread_mutex_t
# define __glibcxx_mutex_define_initialized(NAME) __gthread_mutex_t NAME
# define __glibcxx_mutex_lock(NAME)
# define __glibcxx_mutex_unlock(NAME)
@@ -64,19 +69,22 @@ __gthread_mutex_lock(&NAME)
namespace __gnu_cxx
{
- class lock
+ typedef __glibcxx_mutex_type mutex_type;
+
+ // Scoped lock idiom.
+ // Acquire the mutex here with a constructor call, then release with
+ // the destructor call in accordance with RAII style.
+ class lock
{
// Externally defined and initialized.
- __gthread_mutex_t* device;
+ mutex_type& device;
public:
- // Acquire the mutex here with a constructor call. This ensures
- // that it is released in exit or during stack unwinding.
- explicit lock(__gthread_mutex_t& name) : device(&name)
- { __glibcxx_mutex_lock(*device); }
+ explicit lock(mutex_type& name) : device(name)
+ { __glibcxx_mutex_lock(device); }
~lock() throw()
- { __glibcxx_mutex_unlock(*device); }
+ { __glibcxx_mutex_unlock(device); }
private:
lock(const lock&);
diff --git a/libstdc++-v3/include/bits/cpp_type_traits.h b/libstdc++-v3/include/bits/cpp_type_traits.h
index d025c8ffe63..feb7b1c93e8 100644
--- a/libstdc++-v3/include/bits/cpp_type_traits.h
+++ b/libstdc++-v3/include/bits/cpp_type_traits.h
@@ -1,6 +1,6 @@
// The -*- C++ -*- type traits classes for internal use in libstdc++
-// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2001, 2002, 2003, 2004 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
@@ -42,7 +42,7 @@
//
// This file provides some compile-time information about various types.
// These representations were designed, on purpose, to be constant-expressions
-// and not types as found in <stl/bits/type_traits.h>. In particular, they
+// and not types as found in <bits/type_traits.h>. In particular, they
// can be used in control structures and the optimizer hopefully will do
// the obvious thing.
//
@@ -64,6 +64,26 @@
// -- Gaby (dosreis@cmla.ens-cachan.fr) 2000-03-06.
//
+// NB: g++ can not compile these if declared within the class
+// __is_pod itself.
+namespace __gnu_internal
+{
+ typedef char __one;
+ typedef char __two[2];
+
+ template <typename _Tp>
+ __one __test_type (int _Tp::*);
+ template <typename _Tp>
+ __two& __test_type (...);
+} // namespace __gnu_internal
+
+// Forward declaration hack, should really include this from somewhere.
+namespace __gnu_cxx
+{
+ template<typename _Iterator, typename _Container>
+ class __normal_iterator;
+} // namespace __gnu_cxx
+
namespace std
{
// Compare for equality of types.
@@ -71,18 +91,18 @@ namespace std
struct __are_same
{
enum
- {
- _M_type = 0
- };
+ {
+ _M_type = 0
+ };
};
template<typename _Tp>
struct __are_same<_Tp, _Tp>
{
enum
- {
- _M_type = 1
- };
+ {
+ _M_type = 1
+ };
};
// Define a nested type if some predicate holds.
@@ -92,7 +112,7 @@ namespace std
};
template<typename _Tp>
- struct __enable_if<_Tp, true>
+ struct __enable_if<_Tp, true>
{
typedef _Tp _M_type;
};
@@ -102,18 +122,18 @@ namespace std
struct __is_void
{
enum
- {
- _M_type = 0
- };
+ {
+ _M_type = 0
+ };
};
template<>
struct __is_void<void>
{
enum
- {
- _M_type = 1
- };
+ {
+ _M_type = 1
+ };
};
//
@@ -123,9 +143,9 @@ namespace std
struct __is_integer
{
enum
- {
- _M_type = 0
- };
+ {
+ _M_type = 0
+ };
};
// Thirteen specializations (yes there are eleven standard integer
@@ -135,213 +155,253 @@ namespace std
struct __is_integer<bool>
{
enum
- {
- _M_type = 1
- };
+ {
+ _M_type = 1
+ };
};
template<>
struct __is_integer<char>
{
enum
- {
- _M_type = 1
- };
+ {
+ _M_type = 1
+ };
};
template<>
struct __is_integer<signed char>
{
enum
- {
- _M_type = 1
- };
+ {
+ _M_type = 1
+ };
};
template<>
- struct __is_integer<unsigned char>
- {
- enum
+ struct __is_integer<unsigned char>
{
- _M_type = 1
+ enum
+ {
+ _M_type = 1
+ };
};
- };
# ifdef _GLIBCXX_USE_WCHAR_T
template<>
- struct __is_integer<wchar_t>
- {
- enum
+ struct __is_integer<wchar_t>
{
- _M_type = 1
+ enum
+ {
+ _M_type = 1
+ };
};
- };
# endif
template<>
- struct __is_integer<short>
- {
- enum
+ struct __is_integer<short>
{
- _M_type = 1
+ enum
+ {
+ _M_type = 1
+ };
};
- };
template<>
- struct __is_integer<unsigned short>
- {
- enum
+ struct __is_integer<unsigned short>
{
- _M_type = 1
+ enum
+ {
+ _M_type = 1
+ };
};
- };
template<>
- struct __is_integer<int>
- {
- enum
+ struct __is_integer<int>
{
- _M_type = 1
+ enum
+ {
+ _M_type = 1
+ };
};
- };
template<>
- struct __is_integer<unsigned int>
- {
- enum
+ struct __is_integer<unsigned int>
{
- _M_type = 1
+ enum
+ {
+ _M_type = 1
+ };
};
- };
template<>
- struct __is_integer<long>
- {
- enum
+ struct __is_integer<long>
{
- _M_type = 1
+ enum
+ {
+ _M_type = 1
+ };
};
- };
template<>
- struct __is_integer<unsigned long>
- {
- enum
+ struct __is_integer<unsigned long>
{
- _M_type = 1
+ enum
+ {
+ _M_type = 1
+ };
};
- };
template<>
- struct __is_integer<long long>
- {
- enum
+ struct __is_integer<long long>
{
- _M_type = 1
+ enum
+ {
+ _M_type = 1
+ };
};
- };
template<>
- struct __is_integer<unsigned long long>
- {
- enum
+ struct __is_integer<unsigned long long>
{
- _M_type = 1
+ enum
+ {
+ _M_type = 1
+ };
};
- };
//
// Floating point types
//
template<typename _Tp>
- struct __is_floating
- {
- enum
+ struct __is_floating
{
- _M_type = 0
+ enum
+ {
+ _M_type = 0
+ };
};
- };
// three specializations (float, double and 'long double')
template<>
- struct __is_floating<float>
- {
- enum
+ struct __is_floating<float>
{
- _M_type = 1
+ enum
+ {
+ _M_type = 1
+ };
};
- };
template<>
- struct __is_floating<double>
- {
- enum
+ struct __is_floating<double>
{
- _M_type = 1
+ enum
+ {
+ _M_type = 1
+ };
};
- };
template<>
- struct __is_floating<long double>
- {
- enum
+ struct __is_floating<long double>
{
- _M_type = 1
+ enum
+ {
+ _M_type = 1
+ };
};
- };
//
- // An arithmetic type is an integer type or a floating point type
+ // Pointer types
//
template<typename _Tp>
- struct __is_arithmetic
- {
- enum
+ struct __is_pointer
+ {
+ enum
+ {
+ _M_type = 0
+ };
+ };
+
+ template<typename _Tp>
+ struct __is_pointer<_Tp*>
{
- _M_type = __is_integer<_Tp>::_M_type || __is_floating<_Tp>::_M_type
+ enum
+ {
+ _M_type = 1
+ };
};
- };
//
- // A fundamental type is `void' or and arithmetic type
+ // Normal iterator type
//
template<typename _Tp>
- struct __is_fundamental
- {
- enum
+ struct __is_normal_iterator
+ {
+ enum
+ {
+ _M_type = 0
+ };
+ };
+
+ template<typename _Iterator, typename _Container>
+ struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator,
+ _Container> >
{
- _M_type = __is_void<_Tp>::_M_type || __is_arithmetic<_Tp>::_M_type
+ enum
+ {
+ _M_type = 1
+ };
};
- };
//
- // For the immediate use, the following is a good approximation
+ // An arithmetic type is an integer type or a floating point type
//
+ template<typename _Tp>
+ struct __is_arithmetic
+ {
+ enum
+ {
+ _M_type = __is_integer<_Tp>::_M_type || __is_floating<_Tp>::_M_type
+ };
+ };
+
+ //
+ // A fundamental type is `void' or and arithmetic type
+ //
+ template<typename _Tp>
+ struct __is_fundamental
+ {
+ enum
+ {
+ _M_type = __is_void<_Tp>::_M_type || __is_arithmetic<_Tp>::_M_type
+ };
+ };
- // NB: g++ can not compile these if declared within the class
- // __is_pod itself.
- namespace __gnu_internal
- {
- typedef char __one;
- typedef char __two[2];
-
- template <typename _Tp>
- __one __test_type (int _Tp::*);
- template <typename _Tp>
- __two& __test_type (...);
- }
+ //
+ // A trivially copyable type is an arithmetic type or a pointer type
+ //
+ template<typename _Tp>
+ struct __is_trivially_copyable
+ {
+ enum
+ {
+ _M_type = __is_arithmetic<_Tp>::_M_type || __is_pointer<_Tp>::_M_type
+ };
+ };
-
+ //
+ // For the immediate use, the following is a good approximation
+ //
template<typename _Tp>
- struct __is_pod
- {
- enum
+ struct __is_pod
{
- _M_type = (sizeof(__gnu_internal::__test_type<_Tp>(0)) != sizeof(__gnu_internal::__one))
+ enum
+ {
+ _M_type = (sizeof(__gnu_internal::__test_type<_Tp>(0))
+ != sizeof(__gnu_internal::__one))
+ };
};
- };
} // namespace std
-
#endif //_CPP_TYPE_TRAITS_H
diff --git a/libstdc++-v3/include/bits/deque.tcc b/libstdc++-v3/include/bits/deque.tcc
index 84191f5d91a..6b87c3b6ba6 100644
--- a/libstdc++-v3/include/bits/deque.tcc
+++ b/libstdc++-v3/include/bits/deque.tcc
@@ -86,7 +86,7 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
typename deque<_Tp,_Alloc>::iterator
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
insert(iterator position, const value_type& __x)
{
if (position._M_cur == this->_M_impl._M_start._M_cur)
@@ -107,12 +107,12 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
typename deque<_Tp,_Alloc>::iterator
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
erase(iterator __position)
{
iterator __next = __position;
++__next;
- size_type __index = __position - this->_M_impl._M_start;
+ const size_type __index = __position - this->_M_impl._M_start;
if (__index < (size() >> 1))
{
std::copy_backward(this->_M_impl._M_start, __position, __next);
@@ -128,7 +128,7 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
typename deque<_Tp,_Alloc>::iterator
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
erase(iterator __first, iterator __last)
{
if (__first == this->_M_impl._M_start
@@ -146,7 +146,8 @@ namespace _GLIBCXX_STD
{
std::copy_backward(this->_M_impl._M_start, __first, __last);
iterator __new_start = this->_M_impl._M_start + __n;
- std::_Destroy(this->_M_impl._M_start, __new_start);
+ std::_Destroy(this->_M_impl._M_start, __new_start,
+ this->get_allocator());
_M_destroy_nodes(this->_M_impl._M_start._M_node,
__new_start._M_node);
this->_M_impl._M_start = __new_start;
@@ -155,7 +156,8 @@ namespace _GLIBCXX_STD
{
std::copy(__last, this->_M_impl._M_finish, __first);
iterator __new_finish = this->_M_impl._M_finish - __n;
- std::_Destroy(__new_finish, this->_M_impl._M_finish);
+ std::_Destroy(__new_finish, this->_M_impl._M_finish,
+ this->get_allocator());
_M_destroy_nodes(__new_finish._M_node + 1,
this->_M_impl._M_finish._M_node + 1);
this->_M_impl._M_finish = __new_finish;
@@ -166,28 +168,32 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
void
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
clear()
{
for (_Map_pointer __node = this->_M_impl._M_start._M_node + 1;
__node < this->_M_impl._M_finish._M_node;
++__node)
{
- std::_Destroy(*__node, *__node + _S_buffer_size());
+ std::_Destroy(*__node, *__node + _S_buffer_size(),
+ this->get_allocator());
_M_deallocate_node(*__node);
}
if (this->_M_impl._M_start._M_node != this->_M_impl._M_finish._M_node)
{
std::_Destroy(this->_M_impl._M_start._M_cur,
- this->_M_impl._M_start._M_last);
+ this->_M_impl._M_start._M_last,
+ this->get_allocator());
std::_Destroy(this->_M_impl._M_finish._M_first,
- this->_M_impl._M_finish._M_cur);
+ this->_M_impl._M_finish._M_cur,
+ this->get_allocator());
_M_deallocate_node(this->_M_impl._M_finish._M_first);
}
else
std::_Destroy(this->_M_impl._M_start._M_cur,
- this->_M_impl._M_finish._M_cur);
+ this->_M_impl._M_finish._M_cur,
+ this->get_allocator());
this->_M_impl._M_finish = this->_M_impl._M_start;
}
@@ -195,12 +201,12 @@ namespace _GLIBCXX_STD
template <typename _Tp, class _Alloc>
template <typename _InputIterator>
void
- deque<_Tp,_Alloc>
+ deque<_Tp, _Alloc>
::_M_assign_aux(_InputIterator __first, _InputIterator __last,
input_iterator_tag)
{
iterator __cur = begin();
- for ( ; __first != __last && __cur != end(); ++__cur, ++__first)
+ for (; __first != __last && __cur != end(); ++__cur, ++__first)
*__cur = *__first;
if (__first == __last)
erase(__cur, end());
@@ -210,7 +216,7 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
void
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
_M_fill_insert(iterator __pos, size_type __n, const value_type& __x)
{
if (__pos._M_cur == this->_M_impl._M_start._M_cur)
@@ -218,7 +224,9 @@ namespace _GLIBCXX_STD
iterator __new_start = _M_reserve_elements_at_front(__n);
try
{
- std::uninitialized_fill(__new_start, this->_M_impl._M_start, __x);
+ std::__uninitialized_fill_a(__new_start, this->_M_impl._M_start,
+ __x,
+ this->get_allocator());
this->_M_impl._M_start = __new_start;
}
catch(...)
@@ -233,8 +241,9 @@ namespace _GLIBCXX_STD
iterator __new_finish = _M_reserve_elements_at_back(__n);
try
{
- std::uninitialized_fill(this->_M_impl._M_finish,
- __new_finish, __x);
+ std::__uninitialized_fill_a(this->_M_impl._M_finish,
+ __new_finish, __x,
+ this->get_allocator());
this->_M_impl._M_finish = __new_finish;
}
catch(...)
@@ -250,7 +259,7 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
void
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
_M_fill_initialize(const value_type& __value)
{
_Map_pointer __cur;
@@ -259,14 +268,17 @@ namespace _GLIBCXX_STD
for (__cur = this->_M_impl._M_start._M_node;
__cur < this->_M_impl._M_finish._M_node;
++__cur)
- std::uninitialized_fill(*__cur, *__cur + _S_buffer_size(), __value);
- std::uninitialized_fill(this->_M_impl._M_finish._M_first,
- this->_M_impl._M_finish._M_cur,
- __value);
+ std::__uninitialized_fill_a(*__cur, *__cur + _S_buffer_size(), __value,
+ this->get_allocator());
+ std::__uninitialized_fill_a(this->_M_impl._M_finish._M_first,
+ this->_M_impl._M_finish._M_cur,
+ __value,
+ this->get_allocator());
}
catch(...)
{
- std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur));
+ std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur),
+ this->get_allocator());
__throw_exception_again;
}
}
@@ -274,14 +286,14 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
template <typename _InputIterator>
void
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
_M_range_initialize(_InputIterator __first, _InputIterator __last,
input_iterator_tag)
{
this->_M_initialize_map(0);
try
{
- for ( ; __first != __last; ++__first)
+ for (; __first != __last; ++__first)
push_back(*__first);
}
catch(...)
@@ -294,7 +306,7 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
template <typename _ForwardIterator>
void
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
_M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
forward_iterator_tag)
{
@@ -310,16 +322,19 @@ namespace _GLIBCXX_STD
{
_ForwardIterator __mid = __first;
std::advance(__mid, _S_buffer_size());
- std::uninitialized_copy(__first, __mid, *__cur_node);
+ std::__uninitialized_copy_a(__first, __mid, *__cur_node,
+ this->get_allocator());
__first = __mid;
}
- std::uninitialized_copy(__first, __last,
- this->_M_impl._M_finish._M_first);
+ std::__uninitialized_copy_a(__first, __last,
+ this->_M_impl._M_finish._M_first,
+ this->get_allocator());
}
catch(...)
{
std::_Destroy(this->_M_impl._M_start,
- iterator(*__cur_node, __cur_node));
+ iterator(*__cur_node, __cur_node),
+ this->get_allocator());
__throw_exception_again;
}
}
@@ -327,7 +342,7 @@ namespace _GLIBCXX_STD
// Called only if _M_impl._M_finish._M_cur == _M_impl._M_finish._M_last - 1.
template <typename _Tp, typename _Alloc>
void
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
_M_push_back_aux(const value_type& __t)
{
value_type __t_copy = __t;
@@ -335,7 +350,7 @@ namespace _GLIBCXX_STD
*(this->_M_impl._M_finish._M_node + 1) = this->_M_allocate_node();
try
{
- std::_Construct(this->_M_impl._M_finish._M_cur, __t_copy);
+ this->_M_impl.construct(this->_M_impl._M_finish._M_cur, __t_copy);
this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node
+ 1);
this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_first;
@@ -350,7 +365,7 @@ namespace _GLIBCXX_STD
// Called only if _M_impl._M_start._M_cur == _M_impl._M_start._M_first.
template <typename _Tp, typename _Alloc>
void
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
_M_push_front_aux(const value_type& __t)
{
value_type __t_copy = __t;
@@ -361,7 +376,7 @@ namespace _GLIBCXX_STD
this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node
- 1);
this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_last - 1;
- std::_Construct(this->_M_impl._M_start._M_cur, __t_copy);
+ this->_M_impl.construct(this->_M_impl._M_start._M_cur, __t_copy);
}
catch(...)
{
@@ -373,13 +388,13 @@ namespace _GLIBCXX_STD
// Called only if _M_impl._M_finish._M_cur == _M_impl._M_finish._M_first.
template <typename _Tp, typename _Alloc>
- void deque<_Tp,_Alloc>::
+ void deque<_Tp, _Alloc>::
_M_pop_back_aux()
{
_M_deallocate_node(this->_M_impl._M_finish._M_first);
this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node - 1);
this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_last - 1;
- std::_Destroy(this->_M_impl._M_finish._M_cur);
+ this->_M_impl.destroy(this->_M_impl._M_finish._M_cur);
}
// Called only if _M_impl._M_start._M_cur == _M_impl._M_start._M_last - 1.
@@ -388,10 +403,10 @@ namespace _GLIBCXX_STD
// _M_impl._M_start._M_cur == _M_impl._M_start._M_last,
// then the deque must have at least two nodes.
template <typename _Tp, typename _Alloc>
- void deque<_Tp,_Alloc>::
+ void deque<_Tp, _Alloc>::
_M_pop_front_aux()
{
- std::_Destroy(this->_M_impl._M_start._M_cur);
+ this->_M_impl.destroy(this->_M_impl._M_start._M_cur);
_M_deallocate_node(this->_M_impl._M_start._M_first);
this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node + 1);
this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_first;
@@ -400,7 +415,7 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
template <typename _InputIterator>
void
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
_M_range_insert_aux(iterator __pos,
_InputIterator __first, _InputIterator __last,
input_iterator_tag)
@@ -409,18 +424,19 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
template <typename _ForwardIterator>
void
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
_M_range_insert_aux(iterator __pos,
_ForwardIterator __first, _ForwardIterator __last,
forward_iterator_tag)
{
- size_type __n = std::distance(__first, __last);
+ const size_type __n = std::distance(__first, __last);
if (__pos._M_cur == this->_M_impl._M_start._M_cur)
{
iterator __new_start = _M_reserve_elements_at_front(__n);
try
{
- std::uninitialized_copy(__first, __last, __new_start);
+ std::__uninitialized_copy_a(__first, __last, __new_start,
+ this->get_allocator());
this->_M_impl._M_start = __new_start;
}
catch(...)
@@ -435,8 +451,9 @@ namespace _GLIBCXX_STD
iterator __new_finish = _M_reserve_elements_at_back(__n);
try
{
- std::uninitialized_copy(__first, __last,
- this->_M_impl._M_finish);
+ std::__uninitialized_copy_a(__first, __last,
+ this->_M_impl._M_finish,
+ this->get_allocator());
this->_M_impl._M_finish = __new_finish;
}
catch(...)
@@ -452,7 +469,7 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
typename deque<_Tp, _Alloc>::iterator
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
_M_insert_aux(iterator __pos, const value_type& __x)
{
difference_type __index = __pos - this->_M_impl._M_start;
@@ -485,11 +502,11 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
void
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
_M_insert_aux(iterator __pos, size_type __n, const value_type& __x)
{
const difference_type __elems_before = __pos - this->_M_impl._M_start;
- size_type __length = this->size();
+ const size_type __length = this->size();
value_type __x_copy = __x;
if (__elems_before < difference_type(__length / 2))
{
@@ -502,8 +519,9 @@ namespace _GLIBCXX_STD
{
iterator __start_n = (this->_M_impl._M_start
+ difference_type(__n));
- std::uninitialized_copy(this->_M_impl._M_start, __start_n,
- __new_start);
+ std::__uninitialized_copy_a(this->_M_impl._M_start, __start_n,
+ __new_start,
+ this->get_allocator());
this->_M_impl._M_start = __new_start;
std::copy(__start_n, __pos, __old_start);
fill(__pos - difference_type(__n), __pos, __x_copy);
@@ -513,7 +531,8 @@ namespace _GLIBCXX_STD
std::__uninitialized_copy_fill(this->_M_impl._M_start,
__pos, __new_start,
this->_M_impl._M_start,
- __x_copy);
+ __x_copy,
+ this->get_allocator());
this->_M_impl._M_start = __new_start;
std::fill(__old_start, __pos, __x_copy);
}
@@ -538,8 +557,9 @@ namespace _GLIBCXX_STD
{
iterator __finish_n = (this->_M_impl._M_finish
- difference_type(__n));
- std::uninitialized_copy(__finish_n, this->_M_impl._M_finish,
- this->_M_impl._M_finish);
+ std::__uninitialized_copy_a(__finish_n, this->_M_impl._M_finish,
+ this->_M_impl._M_finish,
+ this->get_allocator());
this->_M_impl._M_finish = __new_finish;
std::copy_backward(__pos, __finish_n, __old_finish);
std::fill(__pos, __pos + difference_type(__n), __x_copy);
@@ -549,7 +569,8 @@ namespace _GLIBCXX_STD
std::__uninitialized_fill_copy(this->_M_impl._M_finish,
__pos + difference_type(__n),
__x_copy, __pos,
- this->_M_impl._M_finish);
+ this->_M_impl._M_finish,
+ this->get_allocator());
this->_M_impl._M_finish = __new_finish;
std::fill(__pos, __old_finish, __x_copy);
}
@@ -566,13 +587,13 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
template <typename _ForwardIterator>
void
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
_M_insert_aux(iterator __pos,
_ForwardIterator __first, _ForwardIterator __last,
size_type __n)
{
const difference_type __elemsbefore = __pos - this->_M_impl._M_start;
- size_type __length = size();
+ const size_type __length = size();
if (static_cast<size_type>(__elemsbefore) < __length / 2)
{
iterator __new_start = _M_reserve_elements_at_front(__n);
@@ -584,8 +605,9 @@ namespace _GLIBCXX_STD
{
iterator __start_n = (this->_M_impl._M_start
+ difference_type(__n));
- std::uninitialized_copy(this->_M_impl._M_start, __start_n,
- __new_start);
+ std::__uninitialized_copy_a(this->_M_impl._M_start, __start_n,
+ __new_start,
+ this->get_allocator());
this->_M_impl._M_start = __new_start;
std::copy(__start_n, __pos, __old_start);
std::copy(__first, __last, __pos - difference_type(__n));
@@ -596,7 +618,8 @@ namespace _GLIBCXX_STD
std::advance(__mid, difference_type(__n) - __elemsbefore);
std::__uninitialized_copy_copy(this->_M_impl._M_start,
__pos, __first, __mid,
- __new_start);
+ __new_start,
+ this->get_allocator());
this->_M_impl._M_start = __new_start;
std::copy(__mid, __last, __old_start);
}
@@ -621,9 +644,10 @@ namespace _GLIBCXX_STD
{
iterator __finish_n = (this->_M_impl._M_finish
- difference_type(__n));
- std::uninitialized_copy(__finish_n,
- this->_M_impl._M_finish,
- this->_M_impl._M_finish);
+ std::__uninitialized_copy_a(__finish_n,
+ this->_M_impl._M_finish,
+ this->_M_impl._M_finish,
+ this->get_allocator());
this->_M_impl._M_finish = __new_finish;
std::copy_backward(__pos, __finish_n, __old_finish);
std::copy(__first, __last, __pos);
@@ -634,7 +658,8 @@ namespace _GLIBCXX_STD
std::advance(__mid, __elemsafter);
std::__uninitialized_copy_copy(__mid, __last, __pos,
this->_M_impl._M_finish,
- this->_M_impl._M_finish);
+ this->_M_impl._M_finish,
+ this->get_allocator());
this->_M_impl._M_finish = __new_finish;
std::copy(__first, __mid, __pos);
}
@@ -650,10 +675,10 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
void
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
_M_new_elements_at_front(size_type __new_elems)
{
- size_type __new_nodes
+ const size_type __new_nodes
= (__new_elems + _S_buffer_size() - 1) / _S_buffer_size();
_M_reserve_map_at_front(__new_nodes);
size_type __i;
@@ -672,11 +697,11 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
void
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
_M_new_elements_at_back(size_type __new_elems)
{
- size_type __new_nodes
- = (__new_elems + _S_buffer_size() - 1) / _S_buffer_size();
+ const size_type __new_nodes
+ = (__new_elems + _S_buffer_size() - 1) / _S_buffer_size();
_M_reserve_map_at_back(__new_nodes);
size_type __i;
try
@@ -694,12 +719,12 @@ namespace _GLIBCXX_STD
template <typename _Tp, typename _Alloc>
void
- deque<_Tp,_Alloc>::
+ deque<_Tp, _Alloc>::
_M_reallocate_map(size_type __nodes_to_add, bool __add_at_front)
{
- size_type __old_num_nodes
+ const size_type __old_num_nodes
= this->_M_impl._M_finish._M_node - this->_M_impl._M_start._M_node + 1;
- size_type __new_num_nodes = __old_num_nodes + __nodes_to_add;
+ const size_type __new_num_nodes = __old_num_nodes + __nodes_to_add;
_Map_pointer __new_nstart;
if (this->_M_impl._M_map_size > 2 * __new_num_nodes)
diff --git a/libstdc++-v3/include/bits/gslice.h b/libstdc++-v3/include/bits/gslice.h
index 78f8a67146b..2dd2cab3e5a 100644
--- a/libstdc++-v3/include/bits/gslice.h
+++ b/libstdc++-v3/include/bits/gslice.h
@@ -40,8 +40,8 @@
#pragma GCC system_header
-namespace std {
-
+namespace std
+{
/**
* @brief Class defining multi-dimensional subset of an array.
*
@@ -60,103 +60,112 @@ namespace std {
* slice[0,2]==array[9], slice[1,0]==array[14], slice[1,1]==array[17],
* slice[1,2]==array[20].
*/
- class gslice
+ class gslice
+ {
+ public:
+ /// Construct an empty slice.
+ gslice ();
+
+ /**
+ * @brief Construct a slice.
+ *
+ * Constructs a slice with as many dimensions as the length of the @a l
+ * and @a s arrays.
+ *
+ * @param o Offset in array of first element.
+ * @param l Array of dimension lengths.
+ * @param s Array of dimension strides between array elements.
+ */
+ gslice(size_t, const valarray<size_t>&, const valarray<size_t>&);
+
+ // XXX: the IS says the copy-ctor and copy-assignment operators are
+ // synthetized by the compiler but they are just unsuitable
+ // for a ref-counted semantic
+ /// Copy constructor.
+ gslice(const gslice&);
+
+ /// Destructor.
+ ~gslice();
+
+ // XXX: See the note above.
+ /// Assignment operator.
+ gslice& operator=(const gslice&);
+
+ /// Return array offset of first slice element.
+ size_t start() const;
+
+ /// Return array of sizes of slice dimensions.
+ valarray<size_t> size() const;
+
+ /// Return array of array strides for each dimension.
+ valarray<size_t> stride() const;
+
+ private:
+ struct _Indexer
{
- public:
- /// Construct an empty slice.
- gslice ();
-
- /**
- * @brief Construct a slice.
- *
- * Constructs a slice with as many dimensions as the length of the @a l
- * and @a s arrays.
- *
- * @param o Offset in array of first element.
- * @param l Array of dimension lengths.
- * @param s Array of dimension strides between array elements.
- */
- gslice(size_t, const valarray<size_t>&, const valarray<size_t>&);
-
- // XXX: the IS says the copy-ctor and copy-assignment operators are
- // synthetized by the compiler but they are just unsuitable
- // for a ref-counted semantic
- /// Copy constructor.
- gslice(const gslice&);
-
- /// Destructor.
- ~gslice();
-
- // XXX: See the note above.
- /// Assignment operator.
- gslice& operator=(const gslice&);
-
- /// Return array offset of first slice element.
- size_t start() const;
-
- /// Return array of sizes of slice dimensions.
- valarray<size_t> size() const;
-
- /// Return array of array strides for each dimension.
- valarray<size_t> stride() const;
-
- private:
- struct _Indexer {
- size_t _M_count;
- size_t _M_start;
- valarray<size_t> _M_size;
- valarray<size_t> _M_stride;
- valarray<size_t> _M_index; // Linear array of referenced indices
- _Indexer(size_t, const valarray<size_t>&,
- const valarray<size_t>&);
- void _M_increment_use() { ++_M_count; }
- size_t _M_decrement_use() { return --_M_count; }
- };
-
- _Indexer* _M_index;
-
- template<typename _Tp> friend class valarray;
+ size_t _M_count;
+ size_t _M_start;
+ valarray<size_t> _M_size;
+ valarray<size_t> _M_stride;
+ valarray<size_t> _M_index; // Linear array of referenced indices
+ _Indexer(size_t, const valarray<size_t>&,
+ const valarray<size_t>&);
+ void
+ _M_increment_use()
+ { ++_M_count; }
+
+ size_t
+ _M_decrement_use()
+ { return --_M_count; }
};
- inline size_t
- gslice::start () const
- { return _M_index ? _M_index->_M_start : 0; }
+ _Indexer* _M_index;
- inline valarray<size_t>
- gslice::size () const
- { return _M_index ? _M_index->_M_size : valarray<size_t>(); }
+ template<typename _Tp> friend class valarray;
+ };
- inline valarray<size_t>
- gslice::stride () const
- { return _M_index ? _M_index->_M_stride : valarray<size_t>(); }
+ inline size_t
+ gslice::start () const
+ { return _M_index ? _M_index->_M_start : 0; }
- inline gslice::gslice () : _M_index(0) {}
+ inline valarray<size_t>
+ gslice::size () const
+ { return _M_index ? _M_index->_M_size : valarray<size_t>(); }
- inline
- gslice::gslice(size_t __o, const valarray<size_t>& __l,
- const valarray<size_t>& __s)
- : _M_index(new gslice::_Indexer(__o, __l, __s)) {}
+ inline valarray<size_t>
+ gslice::stride () const
+ { return _M_index ? _M_index->_M_stride : valarray<size_t>(); }
- inline
- gslice::gslice(const gslice& __g) : _M_index(__g._M_index)
- { if (_M_index) _M_index->_M_increment_use(); }
+ inline gslice::gslice () : _M_index(0) {}
- inline
- gslice::~gslice()
- { if (_M_index && _M_index->_M_decrement_use() == 0) delete _M_index; }
+ inline
+ gslice::gslice(size_t __o, const valarray<size_t>& __l,
+ const valarray<size_t>& __s)
+ : _M_index(new gslice::_Indexer(__o, __l, __s)) {}
- inline gslice&
- gslice::operator= (const gslice& __g)
- {
- if (__g._M_index) __g._M_index->_M_increment_use();
- if (_M_index && _M_index->_M_decrement_use() == 0) delete _M_index;
- _M_index = __g._M_index;
- return *this;
- }
+ inline
+ gslice::gslice(const gslice& __g) : _M_index(__g._M_index)
+ { if (_M_index) _M_index->_M_increment_use(); }
+ inline
+ gslice::~gslice()
+ {
+ if (_M_index && _M_index->_M_decrement_use() == 0)
+ delete _M_index;
+ }
-} // std::
+ inline gslice&
+ gslice::operator= (const gslice& __g)
+ {
+ if (__g._M_index)
+ __g._M_index->_M_increment_use();
+ if (_M_index && _M_index->_M_decrement_use() == 0)
+ delete _M_index;
+ _M_index = __g._M_index;
+ return *this;
+ }
+} // std::
#endif /* _GSLICE_H */
diff --git a/libstdc++-v3/include/bits/gslice_array.h b/libstdc++-v3/include/bits/gslice_array.h
index 7e2e6848e88..f0f9eec29aa 100644
--- a/libstdc++-v3/include/bits/gslice_array.h
+++ b/libstdc++-v3/include/bits/gslice_array.h
@@ -40,8 +40,8 @@
#pragma GCC system_header
-namespace std {
-
+namespace std
+{
/**
* @brief Reference to multi-dimensional subset of an array.
*
@@ -97,27 +97,27 @@ namespace std {
void operator=(const _Tp&) const;
template<class _Dom>
- void operator=(const _Expr<_Dom,_Tp>&) const;
+ void operator=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator*=(const _Expr<_Dom,_Tp>&) const;
+ void operator*=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator/=(const _Expr<_Dom,_Tp>&) const;
+ void operator/=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator%=(const _Expr<_Dom,_Tp>&) const;
+ void operator%=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator+=(const _Expr<_Dom,_Tp>&) const;
+ void operator+=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator-=(const _Expr<_Dom,_Tp>&) const;
+ void operator-=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator^=(const _Expr<_Dom,_Tp>&) const;
+ void operator^=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator&=(const _Expr<_Dom,_Tp>&) const;
+ void operator&=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator|=(const _Expr<_Dom,_Tp>&) const;
+ void operator|=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator<<=(const _Expr<_Dom,_Tp>&) const;
+ void operator<<=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator>>=(const _Expr<_Dom,_Tp>&) const;
+ void operator>>=(const _Expr<_Dom, _Tp>&) const;
private:
_Array<_Tp> _M_array;
@@ -137,13 +137,11 @@ namespace std {
const valarray<size_t>& __i)
: _M_array(__a), _M_index(__i) {}
-
template<typename _Tp>
inline
gslice_array<_Tp>::gslice_array(const gslice_array<_Tp>& __a)
: _M_array(__a._M_array), _M_index(__a._M_index) {}
-
template<typename _Tp>
inline gslice_array<_Tp>&
gslice_array<_Tp>::operator=(const gslice_array<_Tp>& __a)
@@ -186,7 +184,7 @@ namespace std {
gslice_array<_Tp>::operator _Op##=(const valarray<_Tp>& __v) const \
{ \
_Array_augmented_##_Name(_M_array, _Array<size_t>(_M_index), \
- _Array<_Tp>(__v), __v.size()); \
+ _Array<_Tp>(__v), __v.size()); \
} \
\
template<typename _Tp> \
diff --git a/libstdc++-v3/include/bits/indirect_array.h b/libstdc++-v3/include/bits/indirect_array.h
index 912f522450d..b5de990df36 100644
--- a/libstdc++-v3/include/bits/indirect_array.h
+++ b/libstdc++-v3/include/bits/indirect_array.h
@@ -156,7 +156,6 @@ namespace std
return *this;
}
-
template<typename _Tp>
inline void
indirect_array<_Tp>::operator=(const _Tp& __t) const
diff --git a/libstdc++-v3/include/bits/list.tcc b/libstdc++-v3/include/bits/list.tcc
index aaaa8c364bd..3362fe0e555 100644
--- a/libstdc++-v3/include/bits/list.tcc
+++ b/libstdc++-v3/include/bits/list.tcc
@@ -74,7 +74,7 @@ namespace _GLIBCXX_STD
{
_Node* __tmp = __cur;
__cur = static_cast<_Node*>(__cur->_M_next);
- std::_Destroy(&__tmp->_M_data);
+ this->get_allocator().destroy(&__tmp->_M_data);
_M_put_node(__tmp);
}
}
diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc
index 8bcb035a97e..ee5ea7d1def 100644
--- a/libstdc++-v3/include/bits/locale_facets.tcc
+++ b/libstdc++-v3/include/bits/locale_facets.tcc
@@ -325,7 +325,6 @@ namespace std
__found_grouping.reserve(32);
int __sep_pos = 0;
const char_type* __lit_zero = __lit + __num_base::_S_izero;
- const char_type* __q;
while (__beg != __end)
{
// According to 22.2.2.1.2, p8-9, first look for thousands_sep
@@ -368,40 +367,44 @@ namespace std
else
break;
}
- else if (__q = __traits_type::find(__lit_zero, 10, __c))
+ else
{
- __xtrc += __num_base::_S_atoms_in[__q - __lit];
- __found_mantissa = true;
- ++__sep_pos;
- ++__beg;
- }
- else if ((__c == __lit[__num_base::_S_ie]
- || __c == __lit[__num_base::_S_iE])
- && __found_mantissa && !__found_sci)
- {
- // Scientific notation.
- if (__found_grouping.size() && !__found_dec)
- __found_grouping += static_cast<char>(__sep_pos);
- __xtrc += 'e';
- __found_sci = true;
-
- // Remove optional plus or minus sign, if they exist.
- if (++__beg != __end)
+ const char_type* __q = __traits_type::find(__lit_zero, 10, __c);
+ if (__q)
+ {
+ __xtrc += __num_base::_S_atoms_in[__q - __lit];
+ __found_mantissa = true;
+ ++__sep_pos;
+ ++__beg;
+ }
+ else if ((__c == __lit[__num_base::_S_ie]
+ || __c == __lit[__num_base::_S_iE])
+ && __found_mantissa && !__found_sci)
{
- const bool __plus = *__beg == __lit[__num_base::_S_iplus];
- if ((__plus || *__beg == __lit[__num_base::_S_iminus])
- && !(__lc->_M_use_grouping
- && *__beg == __lc->_M_thousands_sep)
- && !(*__beg == __lc->_M_decimal_point))
+ // Scientific notation.
+ if (__found_grouping.size() && !__found_dec)
+ __found_grouping += static_cast<char>(__sep_pos);
+ __xtrc += 'e';
+ __found_sci = true;
+
+ // Remove optional plus or minus sign, if they exist.
+ if (++__beg != __end)
{
- __xtrc += __plus ? '+' : '-';
- ++__beg;
+ const bool __plus = *__beg == __lit[__num_base::_S_iplus];
+ if ((__plus || *__beg == __lit[__num_base::_S_iminus])
+ && !(__lc->_M_use_grouping
+ && *__beg == __lc->_M_thousands_sep)
+ && !(*__beg == __lc->_M_decimal_point))
+ {
+ __xtrc += __plus ? '+' : '-';
+ ++__beg;
+ }
}
}
+ else
+ // Not a valid input item.
+ break;
}
- else
- // Not a valid input item.
- break;
}
// Digit grouping is checked. If grouping and found_grouping don't
@@ -508,7 +511,6 @@ namespace std
bool __overflow = false;
_ValueT __result = 0;
const char_type* __lit_zero = __lit + __num_base::_S_izero;
- const char_type* __q;
if (__negative)
{
const _ValueT __min = numeric_limits<_ValueT>::min() / __base;
@@ -534,26 +536,31 @@ namespace std
}
else if (__c == __lc->_M_decimal_point)
break;
- else if (__q = __traits_type::find(__lit_zero, __len, __c))
+ else
{
- int __digit = __q - __lit_zero;
- if (__digit > 15)
- __digit -= 6;
- if (__result < __min)
- __overflow = true;
- else
+ const char_type* __q = __traits_type::find(__lit_zero,
+ __len, __c);
+ if (__q)
{
- const _ValueT __new_result = __result * __base
- - __digit;
- __overflow |= __new_result > __result;
- __result = __new_result;
- ++__sep_pos;
- __found_num = true;
+ int __digit = __q - __lit_zero;
+ if (__digit > 15)
+ __digit -= 6;
+ if (__result < __min)
+ __overflow = true;
+ else
+ {
+ const _ValueT __new_result = (__result * __base
+ - __digit);
+ __overflow |= __new_result > __result;
+ __result = __new_result;
+ ++__sep_pos;
+ __found_num = true;
+ }
}
+ else
+ // Not a valid input item.
+ break;
}
- else
- // Not a valid input item.
- break;
}
}
else
@@ -577,25 +584,30 @@ namespace std
}
else if (__c == __lc->_M_decimal_point)
break;
- else if (__q = __traits_type::find(__lit_zero, __len, __c))
+ else
{
- int __digit = __q - __lit_zero;
- if (__digit > 15)
- __digit -= 6;
- if (__result > __max)
- __overflow = true;
- else
+ const char_type* __q = __traits_type::find(__lit_zero,
+ __len, __c);
+ if (__q)
{
- const _ValueT __new_result = __result * __base
- + __digit;
- __overflow |= __new_result < __result;
- __result = __new_result;
- ++__sep_pos;
- __found_num = true;
+ int __digit = __q - __lit_zero;
+ if (__digit > 15)
+ __digit -= 6;
+ if (__result > __max)
+ __overflow = true;
+ else
+ {
+ const _ValueT __new_result = (__result * __base
+ + __digit);
+ __overflow |= __new_result < __result;
+ __result = __new_result;
+ ++__sep_pos;
+ __found_num = true;
+ }
}
+ else
+ break;
}
- else
- break;
}
}
@@ -1049,29 +1061,20 @@ namespace std
const locale& __loc = __io._M_getloc();
const __cache_type* __lc = __uc(__loc);
- // Note: digits10 is rounded down: add 1 to ensure the maximum
- // available precision. Then, in general, one more 1 needs to
- // be added since, when the %{g,G} conversion specifiers are
- // chosen inside _S_format_float, the precision field is "the
- // maximum number of significant digits", *not* the "number of
- // digits to appear after the decimal point", as happens for
- // %{e,E,f,F} (C99, 7.19.6.1,4).
- const int __max_digits = numeric_limits<_ValueT>::digits10 + 2;
-
// Use default precision if out of range.
streamsize __prec = __io.precision();
- if (__prec > static_cast<streamsize>(__max_digits))
- __prec = static_cast<streamsize>(__max_digits);
- else if (__prec < static_cast<streamsize>(0))
+ if (__prec < static_cast<streamsize>(0))
__prec = static_cast<streamsize>(6);
+ const int __max_digits = numeric_limits<_ValueT>::digits10;
+
// [22.2.2.2.2] Stage 1, numeric conversion to character.
int __len;
// Long enough for the max format spec.
char __fbuf[16];
#ifdef _GLIBCXX_USE_C99
- // First try a buffer perhaps big enough (for sure sufficient
+ // First try a buffer perhaps big enough (most probably sufficient
// for non-ios_base::fixed outputs)
int __cs_size = __max_digits * 3;
char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
@@ -1094,13 +1097,13 @@ namespace std
const int __max_exp = numeric_limits<_ValueT>::max_exponent10;
// The size of the output string is computed as follows.
- // ios_base::fixed outputs may need up to __max_exp+1 chars
- // for the integer part + up to __max_digits chars for the
- // fractional part + 3 chars for sign, decimal point, '\0'. On
- // the other hand, for non-fixed outputs __max_digits*3 chars
- // are largely sufficient.
- const int __cs_size = __fixed ? __max_exp + __max_digits + 4
- : __max_digits * 3;
+ // ios_base::fixed outputs may need up to __max_exp + 1 chars
+ // for the integer part + __prec chars for the fractional part
+ // + 3 chars for sign, decimal point, '\0'. On the other hand,
+ // for non-fixed outputs __max_digits * 2 + __prec chars are
+ // largely sufficient.
+ const int __cs_size = __fixed ? __max_exp + __prec + 4
+ : __max_digits * 2 + __prec;
char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
__num_base::_S_format_float(__io, __fbuf, __mod);
@@ -1119,8 +1122,8 @@ namespace std
// Replace decimal point.
const _CharT __cdec = __ctype.widen('.');
const _CharT __dec = __lc->_M_decimal_point;
- const _CharT* __p;
- if (__p = char_traits<_CharT>::find(__ws, __len, __cdec))
+ const _CharT* __p = char_traits<_CharT>::find(__ws, __len, __cdec);
+ if (__p)
__ws[__p - __ws] = __dec;
// Add grouping, if necessary.
@@ -1294,7 +1297,6 @@ namespace std
__res.reserve(32);
const char_type* __lit_zero = __lit + money_base::_S_zero;
- const char_type* __q;
const money_base::pattern __p = __lc->_M_neg_format;
for (int __i = 0; __i < 4 && __testvalid; ++__i)
{
@@ -1356,35 +1358,40 @@ namespace std
// Extract digits, remove and stash away the
// grouping of found thousands separators.
for (; __beg != __end; ++__beg)
- if (__q = __traits_type::find(__lit_zero, 10, *__beg))
- {
- __res += money_base::_S_atoms[__q - __lit];
- ++__n;
- }
- else if (*__beg == __lc->_M_decimal_point && !__testdecfound)
- {
- __last_pos = __n;
- __n = 0;
- __testdecfound = true;
- }
- else if (__lc->_M_use_grouping
- && *__beg == __lc->_M_thousands_sep
- && !__testdecfound)
- {
- if (__n)
- {
- // Mark position for later analysis.
- __grouping_tmp += static_cast<char>(__n);
- __n = 0;
- }
- else
- {
- __testvalid = false;
- break;
- }
- }
- else
- break;
+ {
+ const char_type* __q = __traits_type::find(__lit_zero,
+ 10, *__beg);
+ if (__q != 0)
+ {
+ __res += money_base::_S_atoms[__q - __lit];
+ ++__n;
+ }
+ else if (*__beg == __lc->_M_decimal_point
+ && !__testdecfound)
+ {
+ __last_pos = __n;
+ __n = 0;
+ __testdecfound = true;
+ }
+ else if (__lc->_M_use_grouping
+ && *__beg == __lc->_M_thousands_sep
+ && !__testdecfound)
+ {
+ if (__n)
+ {
+ // Mark position for later analysis.
+ __grouping_tmp += static_cast<char>(__n);
+ __n = 0;
+ }
+ else
+ {
+ __testvalid = false;
+ break;
+ }
+ }
+ else
+ break;
+ }
if (__res.empty())
__testvalid = false;
break;
diff --git a/libstdc++-v3/include/bits/mask_array.h b/libstdc++-v3/include/bits/mask_array.h
index 1a694f3c61f..03933578d40 100644
--- a/libstdc++-v3/include/bits/mask_array.h
+++ b/libstdc++-v3/include/bits/mask_array.h
@@ -40,8 +40,8 @@
#pragma GCC system_header
-namespace std {
-
+namespace std
+{
/**
* @brief Reference to selected subset of an array.
*
@@ -128,13 +128,12 @@ namespace std {
const size_t _M_sz;
const _Array<bool> _M_mask;
- const _Array<_Tp> _M_array;
+ const _Array<_Tp> _M_array;
// not implemented
mask_array();
};
-
template<typename _Tp>
inline mask_array<_Tp>::mask_array(const mask_array<_Tp>& a)
: _M_sz(a._M_sz), _M_mask(a._M_mask), _M_array(a._M_array) {}
diff --git a/libstdc++-v3/include/bits/slice_array.h b/libstdc++-v3/include/bits/slice_array.h
index 31c89bcdb61..42da0d22455 100644
--- a/libstdc++-v3/include/bits/slice_array.h
+++ b/libstdc++-v3/include/bits/slice_array.h
@@ -90,7 +90,7 @@ namespace std
inline
slice::slice(size_t __o, size_t __d, size_t __s)
- : _M_off(__o), _M_sz(__d), _M_st(__s) {}
+ : _M_off(__o), _M_sz(__d), _M_st(__s) {}
inline size_t
slice::start() const
@@ -160,34 +160,34 @@ namespace std
// ~slice_array ();
template<class _Dom>
- void operator=(const _Expr<_Dom,_Tp>&) const;
+ void operator=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator*=(const _Expr<_Dom,_Tp>&) const;
+ void operator*=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator/=(const _Expr<_Dom,_Tp>&) const;
+ void operator/=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator%=(const _Expr<_Dom,_Tp>&) const;
+ void operator%=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator+=(const _Expr<_Dom,_Tp>&) const;
+ void operator+=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator-=(const _Expr<_Dom,_Tp>&) const;
+ void operator-=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator^=(const _Expr<_Dom,_Tp>&) const;
+ void operator^=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator&=(const _Expr<_Dom,_Tp>&) const;
+ void operator&=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator|=(const _Expr<_Dom,_Tp>&) const;
+ void operator|=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator<<=(const _Expr<_Dom,_Tp>&) const;
+ void operator<<=(const _Expr<_Dom, _Tp>&) const;
template<class _Dom>
- void operator>>=(const _Expr<_Dom,_Tp>&) const;
+ void operator>>=(const _Expr<_Dom, _Tp>&) const;
private:
friend class valarray<_Tp>;
slice_array(_Array<_Tp>, const slice&);
- const size_t _M_sz;
- const size_t _M_stride;
+ const size_t _M_sz;
+ const size_t _M_stride;
const _Array<_Tp> _M_array;
// not implemented
diff --git a/libstdc++-v3/include/bits/sstream.tcc b/libstdc++-v3/include/bits/sstream.tcc
index df5e619a70d..04cd6ec92a2 100644
--- a/libstdc++-v3/include/bits/sstream.tcc
+++ b/libstdc++-v3/include/bits/sstream.tcc
@@ -83,23 +83,25 @@ namespace std
if (__builtin_expect(__testeof, false))
return traits_type::not_eof(__c);
- // NB: Start ostringstream buffers at 512 chars. This is an
- // experimental value (pronounced "arbitrary" in some of the
- // hipper english-speaking countries), and can be changed to
- // suit particular needs.
- const __size_type __len = std::max(__size_type(_M_string.capacity() + 1),
- __size_type(512));
+ const __size_type __capacity = _M_string.capacity();
+ const __size_type __max_size = _M_string.max_size();
const bool __testput = this->pptr() < this->epptr();
- if (__builtin_expect(!__testput && __len > _M_string.max_size(), false))
+ if (__builtin_expect(!__testput && __capacity == __max_size, false))
return traits_type::eof();
// Try to append __c into output sequence in one of two ways.
// Order these tests done in is unspecified by the standard.
if (!__testput)
{
- // In virtue of DR 169 (TC) we are allowed to grow more than
- // one char. That's easy to implement thanks to the exponential
- // growth policy builtin into basic_string.
+ // NB: Start ostringstream buffers at 512 chars. This is an
+ // experimental value (pronounced "arbitrary" in some of the
+ // hipper english-speaking countries), and can be changed to
+ // suit particular needs.
+ // Then, in virtue of DR 169 (TC) we are allowed to grow more
+ // than one char.
+ const __size_type __opt_len = std::max(__size_type(2 * __capacity),
+ __size_type(512));
+ const __size_type __len = std::min(__opt_len, __max_size);
__string_type __tmp;
__tmp.reserve(__len);
__tmp.assign(_M_string.data(), this->epptr() - this->pbase());
diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h
index 0db0ef7daac..b0502da7964 100644
--- a/libstdc++-v3/include/bits/stl_algobase.h
+++ b/libstdc++-v3/include/bits/stl_algobase.h
@@ -66,10 +66,9 @@
#include <climits>
#include <cstdlib>
#include <cstddef>
-#include <new>
#include <iosfwd>
#include <bits/stl_pair.h>
-#include <bits/type_traits.h>
+#include <bits/cpp_type_traits.h>
#include <bits/stl_iterator_base_types.h>
#include <bits/stl_iterator_base_funcs.h>
#include <bits/stl_iterator.h>
@@ -219,113 +218,106 @@ namespace std
return __a;
}
- // All of these auxiliary functions serve two purposes. (1) Replace
+ // All of these auxiliary structs serve two purposes. (1) Replace
// calls to copy with memmove whenever possible. (Memmove, not memcpy,
// because the input and output ranges are permitted to overlap.)
// (2) If we're using random access iterators, then write the loop as
// a for loop with an explicit count.
- template<typename _InputIterator, typename _OutputIterator>
- inline _OutputIterator
- __copy(_InputIterator __first, _InputIterator __last,
- _OutputIterator __result, input_iterator_tag)
- {
- for (; __first != __last; ++__result, ++__first)
- *__result = *__first;
- return __result;
- }
-
- template<typename _RandomAccessIterator, typename _OutputIterator>
- inline _OutputIterator
- __copy(_RandomAccessIterator __first, _RandomAccessIterator __last,
- _OutputIterator __result, random_access_iterator_tag)
+ template<bool, typename>
+ struct __copy
{
- typedef typename iterator_traits<_RandomAccessIterator>::difference_type
- _Distance;
- for (_Distance __n = __last - __first; __n > 0; --__n)
- {
- *__result = *__first;
- ++__first;
- ++__result;
+ template<typename _II, typename _OI>
+ static _OI
+ copy(_II __first, _II __last, _OI __result)
+ {
+ for (; __first != __last; ++__result, ++__first)
+ *__result = *__first;
+ return __result;
}
- return __result;
- }
-
- template<typename _Tp>
- inline _Tp*
- __copy_trivial(const _Tp* __first, const _Tp* __last, _Tp* __result)
- {
- std::memmove(__result, __first, sizeof(_Tp) * (__last - __first));
- return __result + (__last - __first);
- }
-
- template<typename _InputIterator, typename _OutputIterator>
- inline _OutputIterator
- __copy_aux2(_InputIterator __first, _InputIterator __last,
- _OutputIterator __result, __false_type)
- { return std::__copy(__first, __last, __result,
- std::__iterator_category(__first)); }
+ };
- template<typename _InputIterator, typename _OutputIterator>
- inline _OutputIterator
- __copy_aux2(_InputIterator __first, _InputIterator __last,
- _OutputIterator __result, __true_type)
- { return std::__copy(__first, __last, __result,
- std::__iterator_category(__first)); }
+ template<bool _BoolType>
+ struct __copy<_BoolType, random_access_iterator_tag>
+ {
+ template<typename _II, typename _OI>
+ static _OI
+ copy(_II __first, _II __last, _OI __result)
+ {
+ typedef typename iterator_traits<_II>::difference_type _Distance;
+ for(_Distance __n = __last - __first; __n > 0; --__n)
+ {
+ *__result = *__first;
+ ++__first;
+ ++__result;
+ }
+ return __result;
+ }
+ };
- template<typename _Tp>
- inline _Tp*
- __copy_aux2(_Tp* __first, _Tp* __last, _Tp* __result, __true_type)
- { return std::__copy_trivial(__first, __last, __result); }
+ template<>
+ struct __copy<true, random_access_iterator_tag>
+ {
+ template<typename _Tp>
+ static _Tp*
+ copy(const _Tp* __first, const _Tp* __last, _Tp* __result)
+ {
+ std::memmove(__result, __first, sizeof(_Tp) * (__last - __first));
+ return __result + (__last - __first);
+ }
+ };
- template<typename _Tp>
- inline _Tp*
- __copy_aux2(const _Tp* __first, const _Tp* __last, _Tp* __result,
- __true_type)
- { return std::__copy_trivial(__first, __last, __result); }
+ template<typename _II, typename _OI>
+ inline _OI
+ __copy_aux(_II __first, _II __last, _OI __result)
+ {
+ typedef typename iterator_traits<_II>::value_type _ValueTypeI;
+ typedef typename iterator_traits<_OI>::value_type _ValueTypeO;
+ typedef typename iterator_traits<_II>::iterator_category _Category;
+ const bool __simple = (__is_trivially_copyable<_ValueTypeI>::_M_type
+ && __is_pointer<_II>::_M_type
+ && __is_pointer<_OI>::_M_type
+ && __are_same<_ValueTypeI, _ValueTypeO>::_M_type);
- template<typename _InputIterator, typename _OutputIterator>
- inline _OutputIterator
- __copy_ni2(_InputIterator __first, _InputIterator __last,
- _OutputIterator __result, __true_type)
- {
- typedef typename iterator_traits<_InputIterator>::value_type
- _ValueType;
- typedef typename __type_traits<
- _ValueType>::has_trivial_assignment_operator _Trivial;
- return _OutputIterator(std::__copy_aux2(__first, __last, __result.base(),
- _Trivial()));
+ return std::__copy<__simple, _Category>::copy(__first, __last, __result);
}
- template<typename _InputIterator, typename _OutputIterator>
- inline _OutputIterator
- __copy_ni2(_InputIterator __first, _InputIterator __last,
- _OutputIterator __result, __false_type)
+ template<bool, bool>
+ struct __copy_normal
{
- typedef typename iterator_traits<_InputIterator>::value_type _ValueType;
- typedef typename __type_traits<
- _ValueType>::has_trivial_assignment_operator _Trivial;
- return std::__copy_aux2(__first, __last, __result, _Trivial());
- }
+ template<typename _II, typename _OI>
+ static _OI
+ copy_n(_II __first, _II __last, _OI __result)
+ { return std::__copy_aux(__first, __last, __result); }
+ };
- template<typename _InputIterator, typename _OutputIterator>
- inline _OutputIterator
- __copy_ni1(_InputIterator __first, _InputIterator __last,
- _OutputIterator __result, __true_type)
+ template<>
+ struct __copy_normal<true, false>
{
- typedef typename _Is_normal_iterator<_OutputIterator>::_Normal __Normal;
- return std::__copy_ni2(__first.base(), __last.base(),
- __result, __Normal());
- }
+ template<typename _II, typename _OI>
+ static _OI
+ copy_n(_II __first, _II __last, _OI __result)
+ { return std::__copy_aux(__first.base(), __last.base(), __result); }
+ };
- template<typename _InputIterator, typename _OutputIterator>
- inline _OutputIterator
- __copy_ni1(_InputIterator __first, _InputIterator __last,
- _OutputIterator __result, __false_type)
+ template<>
+ struct __copy_normal<false, true>
{
- typedef typename _Is_normal_iterator<_OutputIterator>::_Normal __Normal;
- return std::__copy_ni2(__first, __last, __result, __Normal());
- }
+ template<typename _II, typename _OI>
+ static _OI
+ copy_n(_II __first, _II __last, _OI __result)
+ { return _OI(std::__copy_aux(__first, __last, __result.base())); }
+ };
+
+ template<>
+ struct __copy_normal<true, true>
+ {
+ template<typename _II, typename _OI>
+ static _OI
+ copy_n(_II __first, _II __last, _OI __result)
+ { return _OI(std::__copy_aux(__first.base(), __last.base(),
+ __result.base())); }
+ };
/**
* @brief Copies the range [first,last) into result.
@@ -354,116 +346,106 @@ namespace std
typename iterator_traits<_InputIterator>::value_type>)
__glibcxx_requires_valid_range(__first, __last);
- typedef typename _Is_normal_iterator<_InputIterator>::_Normal __Normal;
- return std::__copy_ni1(__first, __last, __result, __Normal());
- }
-
- template<typename _BidirectionalIterator1, typename _BidirectionalIterator2>
- inline _BidirectionalIterator2
- __copy_backward(_BidirectionalIterator1 __first,
- _BidirectionalIterator1 __last,
- _BidirectionalIterator2 __result,
- bidirectional_iterator_tag)
- {
- while (__first != __last)
- *--__result = *--__last;
- return __result;
- }
-
- template<typename _RandomAccessIterator, typename _BidirectionalIterator>
- inline _BidirectionalIterator
- __copy_backward(_RandomAccessIterator __first, _RandomAccessIterator __last,
- _BidirectionalIterator __result, random_access_iterator_tag)
- {
- typename iterator_traits<_RandomAccessIterator>::difference_type __n;
- for (__n = __last - __first; __n > 0; --__n)
- *--__result = *--__last;
- return __result;
+ const bool __in = __is_normal_iterator<_InputIterator>::_M_type;
+ const bool __out = __is_normal_iterator<_OutputIterator>::_M_type;
+ return std::__copy_normal<__in, __out>::copy_n(__first, __last,
+ __result);
}
-
-
- // This dispatch class is a workaround for compilers that do not
- // have partial ordering of function templates. All we're doing is
- // creating a specialization so that we can turn a call to copy_backward
- // into a memmove whenever possible.
- template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
- typename _BoolType>
- struct __copy_backward_dispatch
- {
- static _BidirectionalIterator2
- copy(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last,
- _BidirectionalIterator2 __result)
- { return std::__copy_backward(__first, __last, __result,
- std::__iterator_category(__first)); }
+
+ template<bool, typename>
+ struct __copy_backward
+ {
+ template<typename _BI1, typename _BI2>
+ static _BI2
+ copy_b(_BI1 __first, _BI1 __last, _BI2 __result)
+ {
+ while (__first != __last)
+ *--__result = *--__last;
+ return __result;
+ }
};
- template<typename _Tp>
- struct __copy_backward_dispatch<_Tp*, _Tp*, __true_type>
- {
- static _Tp*
- copy(const _Tp* __first, const _Tp* __last, _Tp* __result)
- {
- const ptrdiff_t _Num = __last - __first;
- std::memmove(__result - _Num, __first, sizeof(_Tp) * _Num);
- return __result - _Num;
- }
+ template<bool _BoolType>
+ struct __copy_backward<_BoolType, random_access_iterator_tag>
+ {
+ template<typename _BI1, typename _BI2>
+ static _BI2
+ copy_b(_BI1 __first, _BI1 __last, _BI2 __result)
+ {
+ typename iterator_traits<_BI1>::difference_type __n;
+ for (__n = __last - __first; __n > 0; --__n)
+ *--__result = *--__last;
+ return __result;
+ }
};
- template<typename _Tp>
- struct __copy_backward_dispatch<const _Tp*, _Tp*, __true_type>
- {
- static _Tp*
- copy(const _Tp* __first, const _Tp* __last, _Tp* __result)
- {
- return std::__copy_backward_dispatch<_Tp*, _Tp*, __true_type>
- ::copy(__first, __last, __result);
- }
+ template<>
+ struct __copy_backward<true, random_access_iterator_tag>
+ {
+ template<typename _Tp>
+ static _Tp*
+ copy_b(const _Tp* __first, const _Tp* __last, _Tp* __result)
+ {
+ const ptrdiff_t _Num = __last - __first;
+ std::memmove(__result - _Num, __first, sizeof(_Tp) * _Num);
+ return __result - _Num;
+ }
};
template<typename _BI1, typename _BI2>
inline _BI2
__copy_backward_aux(_BI1 __first, _BI1 __last, _BI2 __result)
{
- typedef typename __type_traits<typename iterator_traits<_BI2>::value_type>
- ::has_trivial_assignment_operator _Trivial;
- return
- std::__copy_backward_dispatch<_BI1, _BI2, _Trivial>::copy(__first,
- __last,
- __result);
+ typedef typename iterator_traits<_BI1>::value_type _ValueType1;
+ typedef typename iterator_traits<_BI2>::value_type _ValueType2;
+ typedef typename iterator_traits<_BI1>::iterator_category _Category;
+ const bool __simple = (__is_trivially_copyable<_ValueType1>::_M_type
+ && __is_pointer<_BI1>::_M_type
+ && __is_pointer<_BI2>::_M_type
+ && __are_same<_ValueType1, _ValueType2>::_M_type);
+
+ return std::__copy_backward<__simple, _Category>::copy_b(__first, __last,
+ __result);
}
- template <typename _BI1, typename _BI2>
- inline _BI2
- __copy_backward_output_normal_iterator(_BI1 __first, _BI1 __last,
- _BI2 __result, __true_type)
- { return _BI2(std::__copy_backward_aux(__first, __last, __result.base())); }
+ template<bool, bool>
+ struct __copy_backward_normal
+ {
+ template<typename _BI1, typename _BI2>
+ static _BI2
+ copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)
+ { return std::__copy_backward_aux(__first, __last, __result); }
+ };
- template <typename _BI1, typename _BI2>
- inline _BI2
- __copy_backward_output_normal_iterator(_BI1 __first, _BI1 __last,
- _BI2 __result, __false_type)
- { return std::__copy_backward_aux(__first, __last, __result); }
+ template<>
+ struct __copy_backward_normal<true, false>
+ {
+ template<typename _BI1, typename _BI2>
+ static _BI2
+ copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)
+ { return std::__copy_backward_aux(__first.base(), __last.base(),
+ __result); }
+ };
- template <typename _BI1, typename _BI2>
- inline _BI2
- __copy_backward_input_normal_iterator(_BI1 __first, _BI1 __last,
- _BI2 __result, __true_type)
+ template<>
+ struct __copy_backward_normal<false, true>
{
- typedef typename _Is_normal_iterator<_BI2>::_Normal __Normal;
- return std::__copy_backward_output_normal_iterator(__first.base(),
- __last.base(),
- __result, __Normal());
- }
+ template<typename _BI1, typename _BI2>
+ static _BI2
+ copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)
+ { return _BI2(std::__copy_backward_aux(__first, __last,
+ __result.base())); }
+ };
- template <typename _BI1, typename _BI2>
- inline _BI2
- __copy_backward_input_normal_iterator(_BI1 __first, _BI1 __last,
- _BI2 __result, __false_type)
+ template<>
+ struct __copy_backward_normal<true, true>
{
- typedef typename _Is_normal_iterator<_BI2>::_Normal __Normal;
- return std::__copy_backward_output_normal_iterator(__first, __last,
- __result, __Normal());
- }
+ template<typename _BI1, typename _BI2>
+ static _BI2
+ copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)
+ { return _BI2(std::__copy_backward_aux(__first.base(), __last.base(),
+ __result.base())); }
+ };
/**
* @brief Copies the range [first,last) into result.
@@ -494,12 +476,13 @@ namespace std
typename iterator_traits<_BI2>::value_type>)
__glibcxx_requires_valid_range(__first, __last);
- typedef typename _Is_normal_iterator<_BI1>::_Normal __Normal;
- return std::__copy_backward_input_normal_iterator(__first, __last,
- __result, __Normal());
+ const bool __bi1 = __is_normal_iterator<_BI1>::_M_type;
+ const bool __bi2 = __is_normal_iterator<_BI2>::_M_type;
+ return std::__copy_backward_normal<__bi1, __bi2>::copy_b_n(__first, __last,
+ __result);
}
- template<typename>
+ template<bool>
struct __fill
{
template<typename _ForwardIterator, typename _Tp>
@@ -513,7 +496,7 @@ namespace std
};
template<>
- struct __fill<__true_type>
+ struct __fill<true>
{
template<typename _ForwardIterator, typename _Tp>
static void
@@ -546,9 +529,8 @@ namespace std
_ForwardIterator>)
__glibcxx_requires_valid_range(__first, __last);
- typedef typename __type_traits<_Tp>::has_trivial_copy_constructor
- _Trivial;
- std::__fill<_Trivial>::fill(__first, __last, __value);
+ const bool __trivial = __is_trivially_copyable<_Tp>::_M_type;
+ std::__fill<__trivial>::fill(__first, __last, __value);
}
// Specialization: for one-byte types we can use memset.
@@ -576,7 +558,7 @@ namespace std
std::memset(__first, static_cast<unsigned char>(__tmp), __last - __first);
}
- template<typename>
+ template<bool>
struct __fill_n
{
template<typename _OutputIterator, typename _Size, typename _Tp>
@@ -590,7 +572,7 @@ namespace std
};
template<>
- struct __fill_n<__true_type>
+ struct __fill_n<true>
{
template<typename _OutputIterator, typename _Size, typename _Tp>
static _OutputIterator
@@ -621,9 +603,8 @@ namespace std
// concept requirements
__glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, _Tp>)
- typedef typename __type_traits<_Tp>::has_trivial_copy_constructor
- _Trivial;
- return std::__fill_n<_Trivial>::fill_n(__first, __n, __value);
+ const bool __trivial = __is_trivially_copyable<_Tp>::_M_type;
+ return std::__fill_n<__trivial>::fill_n(__first, __n, __value);
}
template<typename _Size>
@@ -740,8 +721,8 @@ namespace std
typename iterator_traits<_InputIterator1>::value_type,
typename iterator_traits<_InputIterator2>::value_type>)
__glibcxx_requires_valid_range(__first1, __last1);
-
- for ( ; __first1 != __last1; ++__first1, ++__first2)
+
+ for (; __first1 != __last1; ++__first1, ++__first2)
if (!(*__first1 == *__first2))
return false;
return true;
@@ -772,7 +753,7 @@ namespace std
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
__glibcxx_requires_valid_range(__first1, __last1);
- for ( ; __first1 != __last1; ++__first1, ++__first2)
+ for (; __first1 != __last1; ++__first1, ++__first2)
if (!__binary_pred(*__first1, *__first2))
return false;
return true;
@@ -807,7 +788,8 @@ namespace std
__glibcxx_requires_valid_range(__first1, __last1);
__glibcxx_requires_valid_range(__first2, __last2);
- for (;__first1 != __last1 && __first2 != __last2; ++__first1, ++__first2)
+ for (; __first1 != __last1 && __first2 != __last2;
+ ++__first1, ++__first2)
{
if (*__first1 < *__first2)
return true;
@@ -842,8 +824,8 @@ namespace std
__glibcxx_requires_valid_range(__first1, __last1);
__glibcxx_requires_valid_range(__first2, __last2);
- for ( ; __first1 != __last1 && __first2 != __last2
- ; ++__first1, ++__first2)
+ for (; __first1 != __last1 && __first2 != __last2;
+ ++__first1, ++__first2)
{
if (__comp(*__first1, *__first2))
return true;
diff --git a/libstdc++-v3/include/bits/stl_bvector.h b/libstdc++-v3/include/bits/stl_bvector.h
index afae738418d..3185bd754ce 100644
--- a/libstdc++-v3/include/bits/stl_bvector.h
+++ b/libstdc++-v3/include/bits/stl_bvector.h
@@ -323,7 +323,8 @@ namespace _GLIBCXX_STD
}
const_iterator
- operator+(difference_type __i) const {
+ operator+(difference_type __i) const
+ {
const_iterator __tmp = *this;
return __tmp += __i;
}
diff --git a/libstdc++-v3/include/bits/stl_construct.h b/libstdc++-v3/include/bits/stl_construct.h
index afb33879852..112276e2738 100644
--- a/libstdc++-v3/include/bits/stl_construct.h
+++ b/libstdc++-v3/include/bits/stl_construct.h
@@ -117,7 +117,10 @@ namespace std
inline void
__destroy_aux(_ForwardIterator __first, _ForwardIterator __last,
__false_type)
- { for ( ; __first != __last; ++__first) std::_Destroy(&*__first); }
+ {
+ for (; __first != __last; ++__first)
+ std::_Destroy(&*__first);
+ }
/**
* @if maint
@@ -151,6 +154,35 @@ namespace std
std::__destroy_aux(__first, __last, _Has_trivial_destructor());
}
+
+ /**
+ * @if maint
+ * Destroy a range of objects using the supplied allocator. For
+ * nondefault allocators we do not optimize away invocation of
+ * destroy() even if _Tp has a trivial destructor.
+ * @endif
+ */
+
+ template <typename _Tp> class allocator;
+
+ template<typename _ForwardIterator, typename _Allocator>
+ void
+ _Destroy(_ForwardIterator __first, _ForwardIterator __last,
+ _Allocator __alloc)
+ {
+ for (; __first != __last; ++__first)
+ __alloc.destroy(&*__first);
+ }
+
+ template<typename _ForwardIterator, typename _Allocator, typename _Tp>
+ inline void
+ _Destroy(_ForwardIterator __first, _ForwardIterator __last,
+ allocator<_Tp>)
+ {
+ _Destroy(__first, __last);
+ }
+
+
} // namespace std
#endif /* _STL_CONSTRUCT_H */
diff --git a/libstdc++-v3/include/bits/stl_deque.h b/libstdc++-v3/include/bits/stl_deque.h
index fc58581d2e6..36a7f39799e 100644
--- a/libstdc++-v3/include/bits/stl_deque.h
+++ b/libstdc++-v3/include/bits/stl_deque.h
@@ -419,15 +419,16 @@ namespace _GLIBCXX_STD
};
template<typename _Tp, typename _Alloc>
- _Deque_base<_Tp,_Alloc>::~_Deque_base()
- {
- if (this->_M_impl._M_map)
+ _Deque_base<_Tp, _Alloc>::
+ ~_Deque_base()
{
- _M_destroy_nodes(this->_M_impl._M_start._M_node,
- this->_M_impl._M_finish._M_node + 1);
- _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size);
+ if (this->_M_impl._M_map)
+ {
+ _M_destroy_nodes(this->_M_impl._M_start._M_node,
+ this->_M_impl._M_finish._M_node + 1);
+ _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size);
+ }
}
- }
/**
* @if maint
@@ -441,12 +442,14 @@ namespace _GLIBCXX_STD
*/
template<typename _Tp, typename _Alloc>
void
- _Deque_base<_Tp,_Alloc>::_M_initialize_map(size_t __num_elements)
+ _Deque_base<_Tp, _Alloc>::
+ _M_initialize_map(size_t __num_elements)
{
- size_t __num_nodes = __num_elements / __deque_buf_size(sizeof(_Tp)) + 1;
+ const size_t __num_nodes = (__num_elements / __deque_buf_size(sizeof(_Tp))
+ + 1);
this->_M_impl._M_map_size = std::max((size_t) _S_initial_map_size,
- size_t(__num_nodes + 2));
+ size_t(__num_nodes + 2));
this->_M_impl._M_map = _M_allocate_map(this->_M_impl._M_map_size);
// For "small" maps (needing less than _M_map_size nodes), allocation
@@ -478,7 +481,8 @@ namespace _GLIBCXX_STD
template<typename _Tp, typename _Alloc>
void
- _Deque_base<_Tp,_Alloc>::_M_create_nodes(_Tp** __nstart, _Tp** __nfinish)
+ _Deque_base<_Tp, _Alloc>::
+ _M_create_nodes(_Tp** __nstart, _Tp** __nfinish)
{
_Tp** __cur;
try
@@ -495,7 +499,8 @@ namespace _GLIBCXX_STD
template<typename _Tp, typename _Alloc>
void
- _Deque_base<_Tp,_Alloc>::_M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish)
+ _Deque_base<_Tp, _Alloc>::
+ _M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish)
{
for (_Tp** __n = __nstart; __n < __nfinish; ++__n)
_M_deallocate_node(*__n);
@@ -672,8 +677,8 @@ namespace _GLIBCXX_STD
*/
deque(const deque& __x)
: _Base(__x.get_allocator(), __x.size())
- { std::uninitialized_copy(__x.begin(), __x.end(),
- this->_M_impl._M_start); }
+ { std::__uninitialized_copy_a(__x.begin(), __x.end(), this->_M_impl._M_start,
+ this->get_allocator()); }
/**
* @brief Builds a %deque from a range.
@@ -705,7 +710,8 @@ namespace _GLIBCXX_STD
* way. Managing the pointer is the user's responsibilty.
*/
~deque()
- { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish); }
+ { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ this->get_allocator()); }
/**
* @brief %Deque assignment operator.
@@ -923,7 +929,10 @@ namespace _GLIBCXX_STD
*/
reference
at(size_type __n)
- { _M_range_check(__n); return (*this)[__n]; }
+ {
+ _M_range_check(__n);
+ return (*this)[__n];
+ }
/**
* @brief Provides access to the data contained in the %deque.
@@ -996,7 +1005,7 @@ namespace _GLIBCXX_STD
{
if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first)
{
- std::_Construct(this->_M_impl._M_start._M_cur - 1, __x);
+ this->_M_impl.construct(this->_M_impl._M_start._M_cur - 1, __x);
--this->_M_impl._M_start._M_cur;
}
else
@@ -1017,7 +1026,7 @@ namespace _GLIBCXX_STD
if (this->_M_impl._M_finish._M_cur
!= this->_M_impl._M_finish._M_last - 1)
{
- std::_Construct(this->_M_impl._M_finish._M_cur, __x);
+ this->_M_impl.construct(this->_M_impl._M_finish._M_cur, __x);
++this->_M_impl._M_finish._M_cur;
}
else
@@ -1038,7 +1047,7 @@ namespace _GLIBCXX_STD
if (this->_M_impl._M_start._M_cur
!= this->_M_impl._M_start._M_last - 1)
{
- std::_Destroy(this->_M_impl._M_start._M_cur);
+ this->_M_impl.destroy(this->_M_impl._M_start._M_cur);
++this->_M_impl._M_start._M_cur;
}
else
@@ -1060,7 +1069,7 @@ namespace _GLIBCXX_STD
!= this->_M_impl._M_finish._M_first)
{
--this->_M_impl._M_finish._M_cur;
- std::_Destroy(this->_M_impl._M_finish._M_cur);
+ this->_M_impl.destroy(this->_M_impl._M_finish._M_cur);
}
else
_M_pop_back_aux();
diff --git a/libstdc++-v3/include/bits/stl_list.h b/libstdc++-v3/include/bits/stl_list.h
index 1671c9c9d99..49df1093ab5 100644
--- a/libstdc++-v3/include/bits/stl_list.h
+++ b/libstdc++-v3/include/bits/stl_list.h
@@ -435,7 +435,7 @@ namespace _GLIBCXX_STD
_Node* __p = this->_M_get_node();
try
{
- std::_Construct(&__p->_M_data, __x);
+ this->get_allocator().construct(&__p->_M_data, __x);
}
catch(...)
{
@@ -457,7 +457,7 @@ namespace _GLIBCXX_STD
_Node* __p = this->_M_get_node();
try
{
- std::_Construct(&__p->_M_data);
+ this->get_allocator().construct(&__p->_M_data);
}
catch(...)
{
@@ -1170,7 +1170,7 @@ namespace _GLIBCXX_STD
{
__position._M_node->unhook();
_Node* __n = static_cast<_Node*>(__position._M_node);
- std::_Destroy(&__n->_M_data);
+ this->get_allocator().destroy(&__n->_M_data);
_M_put_node(__n);
}
};
diff --git a/libstdc++-v3/include/bits/stl_pair.h b/libstdc++-v3/include/bits/stl_pair.h
index d5146bb5943..92a5bb01fe6 100644
--- a/libstdc++-v3/include/bits/stl_pair.h
+++ b/libstdc++-v3/include/bits/stl_pair.h
@@ -141,7 +141,8 @@ namespace std
// 181. make_pair() unintended behavior
template<class _T1, class _T2>
inline pair<_T1, _T2>
- make_pair(_T1 __x, _T2 __y) { return pair<_T1, _T2>(__x, __y); }
+ make_pair(_T1 __x, _T2 __y)
+ { return pair<_T1, _T2>(__x, __y); }
} // namespace std
#endif /* _PAIR_H */
diff --git a/libstdc++-v3/include/bits/stl_tree.h b/libstdc++-v3/include/bits/stl_tree.h
index fdc2ea60772..8ddb8984c16 100644
--- a/libstdc++-v3/include/bits/stl_tree.h
+++ b/libstdc++-v3/include/bits/stl_tree.h
@@ -362,7 +362,7 @@ namespace std
{
_Link_type __tmp = _M_get_node();
try
- { std::_Construct(&__tmp->_M_value_field, __x); }
+ { get_allocator().construct(&__tmp->_M_value_field, __x); }
catch(...)
{
_M_put_node(__tmp);
@@ -384,7 +384,7 @@ namespace std
void
destroy_node(_Link_type __p)
{
- std::_Destroy(&__p->_M_value_field);
+ get_allocator().destroy(&__p->_M_value_field);
_M_put_node(__p);
}
diff --git a/libstdc++-v3/include/bits/stl_uninitialized.h b/libstdc++-v3/include/bits/stl_uninitialized.h
index f4f8d187f64..5c65a26bac1 100644
--- a/libstdc++-v3/include/bits/stl_uninitialized.h
+++ b/libstdc++-v3/include/bits/stl_uninitialized.h
@@ -82,7 +82,7 @@ namespace std
_ForwardIterator __cur = __result;
try
{
- for ( ; __first != __last; ++__first, ++__cur)
+ for (; __first != __last; ++__first, ++__cur)
std::_Construct(&*__cur, *__first);
return __cur;
}
@@ -145,7 +145,7 @@ namespace std
_ForwardIterator __cur = __first;
try
{
- for ( ; __cur != __last; ++__cur)
+ for (; __cur != __last; ++__cur)
std::_Construct(&*__cur, __x);
}
catch(...)
@@ -177,22 +177,21 @@ namespace std
// Valid if copy construction is equivalent to assignment, and if the
// destructor is trivial.
template<typename _ForwardIterator, typename _Size, typename _Tp>
- inline _ForwardIterator
+ inline void
__uninitialized_fill_n_aux(_ForwardIterator __first, _Size __n,
const _Tp& __x, __true_type)
- { return std::fill_n(__first, __n, __x); }
+ { std::fill_n(__first, __n, __x); }
template<typename _ForwardIterator, typename _Size, typename _Tp>
- _ForwardIterator
+ void
__uninitialized_fill_n_aux(_ForwardIterator __first, _Size __n,
const _Tp& __x, __false_type)
{
_ForwardIterator __cur = __first;
try
{
- for ( ; __n > 0; --__n, ++__cur)
+ for (; __n > 0; --__n, ++__cur)
std::_Construct(&*__cur, __x);
- return __cur;
}
catch(...)
{
@@ -206,21 +205,115 @@ namespace std
* @param first An input iterator.
* @param n The number of copies to make.
* @param x The source value.
- * @return first+n
+ * @return Nothing.
*
* Like fill_n(), but does not require an initialized output range.
*/
template<typename _ForwardIterator, typename _Size, typename _Tp>
- inline _ForwardIterator
+ inline void
uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x)
{
typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType;
typedef typename __type_traits<_ValueType>::is_POD_type _Is_POD;
- return std::__uninitialized_fill_n_aux(__first, __n, __x, _Is_POD());
+ std::__uninitialized_fill_n_aux(__first, __n, __x, _Is_POD());
}
+ // Extensions: versions of uninitialized_copy, uninitialized_fill,
+ // and uninitialized_fill_n that take an allocator parameter.
+ // We dispatch back to the standard versions when we're given the
+ // default allocator. For nondefault allocators we do not use
+ // any of the POD optimizations.
+
+ template<typename _InputIterator, typename _ForwardIterator,
+ typename _Allocator>
+ _ForwardIterator
+ __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
+ _ForwardIterator __result,
+ _Allocator __alloc)
+ {
+ _ForwardIterator __cur = __result;
+ try
+ {
+ for (; __first != __last; ++__first, ++__cur)
+ __alloc.construct(&*__cur, *__first);
+ return __cur;
+ }
+ catch(...)
+ {
+ std::_Destroy(__result, __cur, __alloc);
+ __throw_exception_again;
+ }
+ }
+
+ template<typename _InputIterator, typename _ForwardIterator, typename _Tp>
+ inline _ForwardIterator
+ __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
+ _ForwardIterator __result,
+ allocator<_Tp>)
+ {
+ return std::uninitialized_copy(__first, __last, __result);
+ }
+
+ template<typename _ForwardIterator, typename _Tp, typename _Allocator>
+ void
+ __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,
+ const _Tp& __x, _Allocator __alloc)
+ {
+ _ForwardIterator __cur = __first;
+ try
+ {
+ for (; __cur != __last; ++__cur)
+ __alloc.construct(&*__cur, __x);
+ }
+ catch(...)
+ {
+ std::_Destroy(__first, __cur, __alloc);
+ __throw_exception_again;
+ }
+ }
+
+ template<typename _ForwardIterator, typename _Tp, typename _Tp2>
+ inline void
+ __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,
+ const _Tp& __x, allocator<_Tp2>)
+ {
+ std::uninitialized_fill(__first, __last, __x);
+ }
+
+ template<typename _ForwardIterator, typename _Size, typename _Tp,
+ typename _Allocator>
+ void
+ __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n,
+ const _Tp& __x,
+ _Allocator __alloc)
+ {
+ _ForwardIterator __cur = __first;
+ try
+ {
+ for (; __n > 0; --__n, ++__cur)
+ __alloc.construct(&*__cur, __x);
+ }
+ catch(...)
+ {
+ std::_Destroy(__first, __cur, __alloc);
+ __throw_exception_again;
+ }
+ }
+
+ template<typename _ForwardIterator, typename _Size, typename _Tp,
+ typename _Tp2>
+ void
+ __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n,
+ const _Tp& __x,
+ allocator<_Tp2>)
+ {
+ std::uninitialized_fill_n(__first, __n, __x);
+ }
+
+
// Extensions: __uninitialized_copy_copy, __uninitialized_copy_fill,
- // __uninitialized_fill_copy.
+ // __uninitialized_fill_copy. All of these algorithms take a user-
+ // supplied allocator, which is used for construction and destruction.
// __uninitialized_copy_copy
// Copies [first1, last1) into [result, result + (last1 - first1)), and
@@ -228,23 +321,25 @@ namespace std
// [result, result + (last1 - first1) + (last2 - first2)).
template<typename _InputIterator1, typename _InputIterator2,
- typename _ForwardIterator>
+ typename _ForwardIterator, typename _Allocator>
inline _ForwardIterator
__uninitialized_copy_copy(_InputIterator1 __first1,
_InputIterator1 __last1,
_InputIterator2 __first2,
_InputIterator2 __last2,
- _ForwardIterator __result)
+ _ForwardIterator __result,
+ _Allocator __alloc)
{
- _ForwardIterator __mid = std::uninitialized_copy(__first1, __last1,
- __result);
+ _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1,
+ __result,
+ __alloc);
try
{
- return std::uninitialized_copy(__first2, __last2, __mid);
+ return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc);
}
catch(...)
{
- std::_Destroy(__result, __mid);
+ std::_Destroy(__result, __mid, __alloc);
__throw_exception_again;
}
}
@@ -252,20 +347,22 @@ namespace std
// __uninitialized_fill_copy
// Fills [result, mid) with x, and copies [first, last) into
// [mid, mid + (last - first)).
- template<typename _ForwardIterator, typename _Tp, typename _InputIterator>
+ template<typename _ForwardIterator, typename _Tp, typename _InputIterator,
+ typename _Allocator>
inline _ForwardIterator
__uninitialized_fill_copy(_ForwardIterator __result, _ForwardIterator __mid,
const _Tp& __x, _InputIterator __first,
- _InputIterator __last)
+ _InputIterator __last,
+ _Allocator __alloc)
{
- std::uninitialized_fill(__result, __mid, __x);
+ std::__uninitialized_fill_a(__result, __mid, __x, __alloc);
try
{
- return std::uninitialized_copy(__first, __last, __mid);
+ return std::__uninitialized_copy_a(__first, __last, __mid, __alloc);
}
catch(...)
{
- std::_Destroy(__result, __mid);
+ std::_Destroy(__result, __mid, __alloc);
__throw_exception_again;
}
}
@@ -273,21 +370,24 @@ namespace std
// __uninitialized_copy_fill
// Copies [first1, last1) into [first2, first2 + (last1 - first1)), and
// fills [first2 + (last1 - first1), last2) with x.
- template<typename _InputIterator, typename _ForwardIterator, typename _Tp>
+ template<typename _InputIterator, typename _ForwardIterator, typename _Tp,
+ typename _Allocator>
inline void
__uninitialized_copy_fill(_InputIterator __first1, _InputIterator __last1,
_ForwardIterator __first2,
- _ForwardIterator __last2, const _Tp& __x)
+ _ForwardIterator __last2, const _Tp& __x,
+ _Allocator __alloc)
{
- _ForwardIterator __mid2 = std::uninitialized_copy(__first1, __last1,
- __first2);
+ _ForwardIterator __mid2 = std::__uninitialized_copy_a(__first1, __last1,
+ __first2,
+ __alloc);
try
{
- std::uninitialized_fill(__mid2, __last2, __x);
+ std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc);
}
catch(...)
{
- std::_Destroy(__first2, __mid2);
+ std::_Destroy(__first2, __mid2, __alloc);
__throw_exception_again;
}
}
diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h
index f0ba3328002..10433f9ad13 100644
--- a/libstdc++-v3/include/bits/stl_vector.h
+++ b/libstdc++-v3/include/bits/stl_vector.h
@@ -81,7 +81,7 @@ namespace _GLIBCXX_STD
_Tp* _M_start;
_Tp* _M_finish;
_Tp* _M_end_of_storage;
- _Vector_impl (_Alloc const& __a)
+ _Vector_impl(_Alloc const& __a)
: _Alloc(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0)
{ }
};
@@ -118,7 +118,8 @@ namespace _GLIBCXX_STD
void
_M_deallocate(_Tp* __p, size_t __n)
- { if (__p)
+ {
+ if (__p)
_M_impl.deallocate(__p, __n);
}
};
@@ -198,9 +199,11 @@ namespace _GLIBCXX_STD
vector(size_type __n, const value_type& __value,
const allocator_type& __a = allocator_type())
: _Base(__n, __a)
- { this->_M_impl._M_finish = std::uninitialized_fill_n(this->
- _M_impl._M_start,
- __n, __value); }
+ {
+ std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value,
+ this->get_allocator());
+ this->_M_impl._M_finish = this->_M_impl._M_start + __n;
+ }
/**
* @brief Create a %vector with default elements.
@@ -212,10 +215,11 @@ namespace _GLIBCXX_STD
explicit
vector(size_type __n)
: _Base(__n, allocator_type())
- { this->_M_impl._M_finish = std::uninitialized_fill_n(this->
- _M_impl._M_start,
- __n,
- value_type()); }
+ {
+ std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, value_type(),
+ this->get_allocator());
+ this->_M_impl._M_finish = this->_M_impl._M_start + __n;
+ }
/**
* @brief %Vector copy constructor.
@@ -228,10 +232,10 @@ namespace _GLIBCXX_STD
*/
vector(const vector& __x)
: _Base(__x.size(), __x.get_allocator())
- { this->_M_impl._M_finish = std::uninitialized_copy(__x.begin(),
- __x.end(),
- this->
- _M_impl._M_start);
+ { this->_M_impl._M_finish =
+ std::__uninitialized_copy_a(__x.begin(), __x.end(),
+ this->_M_impl._M_start,
+ this->get_allocator());
}
/**
@@ -266,7 +270,9 @@ namespace _GLIBCXX_STD
* responsibilty.
*/
~vector()
- { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish); }
+ { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ this->get_allocator());
+ }
/**
* @brief %Vector assignment operator.
@@ -597,7 +603,7 @@ namespace _GLIBCXX_STD
{
if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
{
- std::_Construct(this->_M_impl._M_finish, __x);
+ this->_M_impl.construct(this->_M_impl._M_finish, __x);
++this->_M_impl._M_finish;
}
else
@@ -617,7 +623,7 @@ namespace _GLIBCXX_STD
pop_back()
{
--this->_M_impl._M_finish;
- std::_Destroy(this->_M_impl._M_finish);
+ this->_M_impl.destroy(this->_M_impl._M_finish);
}
/**
@@ -757,7 +763,8 @@ namespace _GLIBCXX_STD
pointer __result = this->_M_allocate(__n);
try
{
- std::uninitialized_copy(__first, __last, __result);
+ std::__uninitialized_copy_a(__first, __last, __result,
+ this->get_allocator());
return __result;
}
catch(...)
@@ -777,9 +784,9 @@ namespace _GLIBCXX_STD
{
this->_M_impl._M_start = _M_allocate(__n);
this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
- this->_M_impl._M_finish = std::uninitialized_fill_n(this->
- _M_impl._M_start,
- __n, __value);
+ std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value,
+ this->get_allocator());
+ this->_M_impl._M_finish = this->_M_impl._M_end_of_storage;
}
// Called by the range constructor to implement [23.1.1]/9
@@ -799,7 +806,7 @@ namespace _GLIBCXX_STD
_M_range_initialize(_InputIterator __first,
_InputIterator __last, input_iterator_tag)
{
- for ( ; __first != __last; ++__first)
+ for (; __first != __last; ++__first)
push_back(*__first);
}
@@ -809,12 +816,13 @@ namespace _GLIBCXX_STD
_M_range_initialize(_ForwardIterator __first,
_ForwardIterator __last, forward_iterator_tag)
{
- size_type __n = std::distance(__first, __last);
+ const size_type __n = std::distance(__first, __last);
this->_M_impl._M_start = this->_M_allocate(__n);
this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
- this->_M_impl._M_finish = std::uninitialized_copy(__first, __last,
- this->
- _M_impl._M_start);
+ this->_M_impl._M_finish =
+ std::__uninitialized_copy_a(__first, __last,
+ this->_M_impl._M_start,
+ this->get_allocator());
}
diff --git a/libstdc++-v3/include/bits/type_traits.h b/libstdc++-v3/include/bits/type_traits.h
index 9b91e5c5cdf..0a263e5e0b6 100644
--- a/libstdc++-v3/include/bits/type_traits.h
+++ b/libstdc++-v3/include/bits/type_traits.h
@@ -378,26 +378,6 @@ template<>
typedef __true_type _Integral;
};
-template<typename _Tp>
- struct _Is_normal_iterator
- {
- typedef __false_type _Normal;
- };
-
-// Forward declaration hack, should really include this from somewhere.
-namespace __gnu_cxx
-{
- template<typename _Iterator, typename _Container>
- class __normal_iterator;
-}
-
-template<typename _Iterator, typename _Container>
- struct _Is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator,
- _Container> >
- {
- typedef __true_type _Normal;
- };
-
#endif /* _TYPE_TRAITS_H */
// Local Variables:
diff --git a/libstdc++-v3/include/bits/valarray_after.h b/libstdc++-v3/include/bits/valarray_after.h
index b74cab5dbac..e2311275e45 100644
--- a/libstdc++-v3/include/bits/valarray_after.h
+++ b/libstdc++-v3/include/bits/valarray_after.h
@@ -1,6 +1,7 @@
// The template and inlines for the -*- C++ -*- internal _Meta class.
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+// 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
@@ -41,92 +42,120 @@
namespace std
{
-
- //
- // gslice_array closure.
- //
- template<class _Dom> class _GBase {
+ //
+ // gslice_array closure.
+ //
+ template<class _Dom>
+ class _GBase
+ {
public:
- typedef typename _Dom::value_type value_type;
-
- _GBase (const _Dom& __e, const valarray<size_t>& __i)
- : _M_expr (__e), _M_index(__i) {}
- value_type operator[] (size_t __i) const
- { return _M_expr[_M_index[__i]]; }
- size_t size () const { return _M_index.size(); }
+ typedef typename _Dom::value_type value_type;
+
+ _GBase (const _Dom& __e, const valarray<size_t>& __i)
+ : _M_expr (__e), _M_index(__i) {}
+
+ value_type
+ operator[] (size_t __i) const
+ { return _M_expr[_M_index[__i]]; }
+
+ size_t
+ size () const
+ { return _M_index.size(); }
private:
- const _Dom& _M_expr;
- const valarray<size_t>& _M_index;
+ const _Dom& _M_expr;
+ const valarray<size_t>& _M_index;
};
- template<typename _Tp> class _GBase<_Array<_Tp> > {
+ template<typename _Tp>
+ class _GBase<_Array<_Tp> >
+ {
public:
- typedef _Tp value_type;
-
- _GBase (_Array<_Tp> __a, const valarray<size_t>& __i)
- : _M_array (__a), _M_index(__i) {}
- value_type operator[] (size_t __i) const
- { return _M_array._M_data[_M_index[__i]]; }
- size_t size () const { return _M_index.size(); }
+ typedef _Tp value_type;
+
+ _GBase (_Array<_Tp> __a, const valarray<size_t>& __i)
+ : _M_array (__a), _M_index(__i) {}
+
+ value_type
+ operator[] (size_t __i) const
+ { return _M_array._M_data[_M_index[__i]]; }
+
+ size_t
+ size () const
+ { return _M_index.size(); }
private:
- const _Array<_Tp> _M_array;
- const valarray<size_t>& _M_index;
+ const _Array<_Tp> _M_array;
+ const valarray<size_t>& _M_index;
};
- template<class _Dom> struct _GClos<_Expr,_Dom> : _GBase<_Dom> {
- typedef _GBase<_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _GClos (const _Dom& __e, const valarray<size_t>& __i)
- : _Base (__e, __i) {}
+ template<class _Dom>
+ struct _GClos<_Expr, _Dom>
+ : _GBase<_Dom>
+ {
+ typedef _GBase<_Dom> _Base;
+ typedef typename _Base::value_type value_type;
+
+ _GClos (const _Dom& __e, const valarray<size_t>& __i)
+ : _Base (__e, __i) {}
};
- template<typename _Tp>
- struct _GClos<_ValArray,_Tp> : _GBase<_Array<_Tp> > {
- typedef _GBase<_Array<_Tp> > _Base;
- typedef typename _Base::value_type value_type;
-
- _GClos (_Array<_Tp> __a, const valarray<size_t>& __i)
- : _Base (__a, __i) {}
+ template<typename _Tp>
+ struct _GClos<_ValArray, _Tp>
+ : _GBase<_Array<_Tp> >
+ {
+ typedef _GBase<_Array<_Tp> > _Base;
+ typedef typename _Base::value_type value_type;
+
+ _GClos (_Array<_Tp> __a, const valarray<size_t>& __i)
+ : _Base (__a, __i) {}
};
- //
- // indirect_array closure
- //
- template<class _Dom> class _IBase {
+ //
+ // indirect_array closure
+ //
+ template<class _Dom>
+ class _IBase
+ {
public:
- typedef typename _Dom::value_type value_type;
+ typedef typename _Dom::value_type value_type;
- _IBase (const _Dom& __e, const valarray<size_t>& __i)
- : _M_expr (__e), _M_index (__i) {}
- value_type operator[] (size_t __i) const
- { return _M_expr[_M_index[__i]]; }
- size_t size() const { return _M_index.size(); }
+ _IBase (const _Dom& __e, const valarray<size_t>& __i)
+ : _M_expr (__e), _M_index (__i) {}
+
+ value_type
+ operator[] (size_t __i) const
+ { return _M_expr[_M_index[__i]]; }
+
+ size_t size() const { return _M_index.size(); }
private:
- const _Dom& _M_expr;
- const valarray<size_t>& _M_index;
+ const _Dom& _M_expr;
+ const valarray<size_t>& _M_index;
};
- template<class _Dom> struct _IClos<_Expr,_Dom> : _IBase<_Dom> {
- typedef _IBase<_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _IClos (const _Dom& __e, const valarray<size_t>& __i)
- : _Base (__e, __i) {}
+ template<class _Dom>
+ struct _IClos<_Expr, _Dom>
+ : _IBase<_Dom>
+ {
+ typedef _IBase<_Dom> _Base;
+ typedef typename _Base::value_type value_type;
+
+ _IClos (const _Dom& __e, const valarray<size_t>& __i)
+ : _Base (__e, __i) {}
};
- template<typename _Tp>
- struct _IClos<_ValArray,_Tp> : _IBase<valarray<_Tp> > {
- typedef _IBase<valarray<_Tp> > _Base;
- typedef _Tp value_type;
-
- _IClos (const valarray<_Tp>& __a, const valarray<size_t>& __i)
- : _Base (__a, __i) {}
+ template<typename _Tp>
+ struct _IClos<_ValArray, _Tp>
+ : _IBase<valarray<_Tp> >
+ {
+ typedef _IBase<valarray<_Tp> > _Base;
+ typedef _Tp value_type;
+
+ _IClos (const valarray<_Tp>& __a, const valarray<size_t>& __i)
+ : _Base (__a, __i) {}
};
-
+
//
// class _Expr
//
@@ -146,17 +175,17 @@ namespace std
valarray<value_type> operator[](const valarray<bool>&) const;
valarray<value_type> operator[](const valarray<size_t>&) const;
- _Expr<_UnClos<__unary_plus,std::_Expr,_Clos>, value_type>
- operator+() const;
+ _Expr<_UnClos<__unary_plus, std::_Expr, _Clos>, value_type>
+ operator+() const;
- _Expr<_UnClos<__negate,std::_Expr,_Clos>, value_type>
- operator-() const;
+ _Expr<_UnClos<__negate, std::_Expr, _Clos>, value_type>
+ operator-() const;
- _Expr<_UnClos<__bitwise_not,std::_Expr,_Clos>, value_type>
- operator~() const;
+ _Expr<_UnClos<__bitwise_not, std::_Expr, _Clos>, value_type>
+ operator~() const;
- _Expr<_UnClos<__logical_not,std::_Expr,_Clos>, bool>
- operator!() const;
+ _Expr<_UnClos<__logical_not, std::_Expr, _Clos>, bool>
+ operator!() const;
size_t size() const;
value_type sum() const;
@@ -176,41 +205,42 @@ namespace std
template<class _Clos, typename _Tp>
inline
- _Expr<_Clos,_Tp>::_Expr(const _Clos& __c) : _M_closure(__c) {}
+ _Expr<_Clos, _Tp>::_Expr(const _Clos& __c) : _M_closure(__c) {}
template<class _Clos, typename _Tp>
inline const _Clos&
- _Expr<_Clos,_Tp>::operator()() const
+ _Expr<_Clos, _Tp>::operator()() const
{ return _M_closure; }
template<class _Clos, typename _Tp>
inline _Tp
- _Expr<_Clos,_Tp>::operator[](size_t __i) const
+ _Expr<_Clos, _Tp>::operator[](size_t __i) const
{ return _M_closure[__i]; }
template<class _Clos, typename _Tp>
inline valarray<_Tp>
- _Expr<_Clos,_Tp>::operator[](slice __s) const
+ _Expr<_Clos, _Tp>::operator[](slice __s) const
{ return _M_closure[__s]; }
template<class _Clos, typename _Tp>
inline valarray<_Tp>
- _Expr<_Clos,_Tp>::operator[](const gslice& __gs) const
+ _Expr<_Clos, _Tp>::operator[](const gslice& __gs) const
{ return _M_closure[__gs]; }
template<class _Clos, typename _Tp>
inline valarray<_Tp>
- _Expr<_Clos,_Tp>::operator[](const valarray<bool>& __m) const
+ _Expr<_Clos, _Tp>::operator[](const valarray<bool>& __m) const
{ return _M_closure[__m]; }
template<class _Clos, typename _Tp>
inline valarray<_Tp>
- _Expr<_Clos,_Tp>::operator[](const valarray<size_t>& __i) const
+ _Expr<_Clos, _Tp>::operator[](const valarray<size_t>& __i) const
{ return _M_closure[__i]; }
template<class _Clos, typename _Tp>
inline size_t
- _Expr<_Clos,_Tp>::size() const { return _M_closure.size (); }
+ _Expr<_Clos, _Tp>::size() const
+ { return _M_closure.size (); }
template<class _Clos, typename _Tp>
inline valarray<_Tp>
@@ -235,7 +265,7 @@ namespace std
// XXX: replace this with a more robust summation algorithm.
template<class _Clos, typename _Tp>
inline _Tp
- _Expr<_Clos,_Tp>::sum() const
+ _Expr<_Clos, _Tp>::sum() const
{
size_t __n = _M_closure.size();
if (__n == 0)
@@ -260,20 +290,20 @@ namespace std
{ return __valarray_max(_M_closure); }
template<class _Dom, typename _Tp>
- inline _Expr<_UnClos<__logical_not,_Expr,_Dom>, bool>
- _Expr<_Dom,_Tp>::operator!() const
+ inline _Expr<_UnClos<__logical_not, _Expr, _Dom>, bool>
+ _Expr<_Dom, _Tp>::operator!() const
{
- typedef _UnClos<__logical_not,std::_Expr,_Dom> _Closure;
- return _Expr<_Closure,_Tp>(_Closure(this->_M_closure));
+ typedef _UnClos<__logical_not, std::_Expr, _Dom> _Closure;
+ return _Expr<_Closure, _Tp>(_Closure(this->_M_closure));
}
#define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name) \
template<class _Dom, typename _Tp> \
- inline _Expr<_UnClos<_Name,std::_Expr,_Dom>,_Tp> \
- _Expr<_Dom,_Tp>::operator _Op() const \
+ inline _Expr<_UnClos<_Name, std::_Expr, _Dom>, _Tp> \
+ _Expr<_Dom, _Tp>::operator _Op() const \
{ \
- typedef _UnClos<_Name,std::_Expr,_Dom> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(this->_M_closure)); \
+ typedef _UnClos<_Name, std::_Expr, _Dom> _Closure; \
+ return _Expr<_Closure, _Tp>(_Closure(this->_M_closure)); \
}
_DEFINE_EXPR_UNARY_OPERATOR(+, __unary_plus)
@@ -282,67 +312,70 @@ namespace std
#undef _DEFINE_EXPR_UNARY_OPERATOR
-
#define _DEFINE_EXPR_BINARY_OPERATOR(_Op, _Name) \
template<class _Dom1, class _Dom2> \
- inline _Expr<_BinClos<_Name,_Expr,_Expr,_Dom1,_Dom2>, \
- typename __fun<_Name, typename _Dom1::value_type>::result_type>\
- operator _Op(const _Expr<_Dom1,typename _Dom1::value_type>& __v, \
- const _Expr<_Dom2,typename _Dom2::value_type>& __w) \
- { \
- typedef typename _Dom1::value_type _Arg; \
- typedef typename __fun<_Name, _Arg>::result_type _Value; \
- typedef _BinClos<_Name,_Expr,_Expr,_Dom1,_Dom2> _Closure; \
- return _Expr<_Closure,_Value>(_Closure(__v(), __w())); \
- } \
+ inline _Expr<_BinClos<_Name, _Expr, _Expr, _Dom1, _Dom2>, \
+ typename __fun<_Name, typename _Dom1::value_type>::result_type> \
+ operator _Op(const _Expr<_Dom1, typename _Dom1::value_type>& __v, \
+ const _Expr<_Dom2, typename _Dom2::value_type>& __w) \
+ { \
+ typedef typename _Dom1::value_type _Arg; \
+ typedef typename __fun<_Name, _Arg>::result_type _Value; \
+ typedef _BinClos<_Name, _Expr, _Expr, _Dom1, _Dom2> _Closure; \
+ return _Expr<_Closure, _Value>(_Closure(__v(), __w())); \
+ } \
\
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_Expr,_Constant,_Dom,typename _Dom::value_type>,\
- typename __fun<_Name, typename _Dom::value_type>::result_type>\
-operator _Op(const _Expr<_Dom,typename _Dom::value_type>& __v, \
- const typename _Dom::value_type& __t) \
-{ \
- typedef typename _Dom::value_type _Arg; \
- typedef typename __fun<_Name, _Arg>::result_type _Value; \
- typedef _BinClos<_Name,_Expr,_Constant,_Dom,_Arg> _Closure; \
- return _Expr<_Closure,_Value>(_Closure(__v(), __t)); \
-} \
+ template<class _Dom> \
+ inline _Expr<_BinClos<_Name, _Expr, _Constant, _Dom, \
+ typename _Dom::value_type>, \
+ typename __fun<_Name, typename _Dom::value_type>::result_type> \
+ operator _Op(const _Expr<_Dom, typename _Dom::value_type>& __v, \
+ const typename _Dom::value_type& __t) \
+ { \
+ typedef typename _Dom::value_type _Arg; \
+ typedef typename __fun<_Name, _Arg>::result_type _Value; \
+ typedef _BinClos<_Name, _Expr, _Constant, _Dom, _Arg> _Closure; \
+ return _Expr<_Closure, _Value>(_Closure(__v(), __t)); \
+ } \
\
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_Constant,_Expr,typename _Dom::value_type,_Dom>,\
- typename __fun<_Name, typename _Dom::value_type>::result_type>\
-operator _Op(const typename _Dom::value_type& __t, \
- const _Expr<_Dom,typename _Dom::value_type>& __v) \
-{ \
- typedef typename _Dom::value_type _Arg; \
- typedef typename __fun<_Name, _Arg>::result_type _Value; \
- typedef _BinClos<_Name,_Constant,_Expr,_Arg,_Dom> _Closure; \
- return _Expr<_Closure,_Value>(_Closure(__t, __v())); \
-} \
+ template<class _Dom> \
+ inline _Expr<_BinClos<_Name, _Constant, _Expr, \
+ typename _Dom::value_type, _Dom>, \
+ typename __fun<_Name, typename _Dom::value_type>::result_type> \
+ operator _Op(const typename _Dom::value_type& __t, \
+ const _Expr<_Dom, typename _Dom::value_type>& __v) \
+ { \
+ typedef typename _Dom::value_type _Arg; \
+ typedef typename __fun<_Name, _Arg>::result_type _Value; \
+ typedef _BinClos<_Name, _Constant, _Expr, _Arg, _Dom> _Closure; \
+ return _Expr<_Closure, _Value>(_Closure(__t, __v())); \
+ } \
\
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_Expr,_ValArray,_Dom,typename _Dom::value_type>,\
- typename __fun<_Name, typename _Dom::value_type>::result_type>\
-operator _Op(const _Expr<_Dom,typename _Dom::value_type>& __e, \
- const valarray<typename _Dom::value_type>& __v) \
-{ \
- typedef typename _Dom::value_type _Arg; \
- typedef typename __fun<_Name, _Arg>::result_type _Value; \
- typedef _BinClos<_Name,_Expr,_ValArray,_Dom,_Arg> _Closure; \
- return _Expr<_Closure,_Value>(_Closure(__e(), __v)); \
-} \
+ template<class _Dom> \
+ inline _Expr<_BinClos<_Name, _Expr, _ValArray, \
+ _Dom, typename _Dom::value_type>, \
+ typename __fun<_Name, typename _Dom::value_type>::result_type> \
+ operator _Op(const _Expr<_Dom,typename _Dom::value_type>& __e, \
+ const valarray<typename _Dom::value_type>& __v) \
+ { \
+ typedef typename _Dom::value_type _Arg; \
+ typedef typename __fun<_Name, _Arg>::result_type _Value; \
+ typedef _BinClos<_Name, _Expr, _ValArray, _Dom, _Arg> _Closure; \
+ return _Expr<_Closure, _Value>(_Closure(__e(), __v)); \
+ } \
\
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_ValArray,_Expr,typename _Dom::value_type,_Dom>,\
- typename __fun<_Name, typename _Dom::value_type>::result_type>\
-operator _Op(const valarray<typename _Dom::value_type>& __v, \
- const _Expr<_Dom,typename _Dom::value_type>& __e) \
-{ \
- typedef typename _Dom::value_type _Tp; \
- typedef typename __fun<_Name, _Tp>::result_type _Value; \
- typedef _BinClos<_Name,_ValArray,_Expr,_Tp,_Dom> _Closure; \
- return _Expr<_Closure,_Value> (_Closure (__v, __e ())); \
-}
+ template<class _Dom> \
+ inline _Expr<_BinClos<_Name, _ValArray, _Expr, \
+ typename _Dom::value_type, _Dom>, \
+ typename __fun<_Name, typename _Dom::value_type>::result_type> \
+ operator _Op(const valarray<typename _Dom::value_type>& __v, \
+ const _Expr<_Dom, typename _Dom::value_type>& __e) \
+ { \
+ typedef typename _Dom::value_type _Tp; \
+ typedef typename __fun<_Name, _Tp>::result_type _Value; \
+ typedef _BinClos<_Name, _ValArray, _Expr, _Tp, _Dom> _Closure; \
+ return _Expr<_Closure, _Value>(_Closure(__v, __e ())); \
+ }
_DEFINE_EXPR_BINARY_OPERATOR(+, __plus)
_DEFINE_EXPR_BINARY_OPERATOR(-, __minus)
@@ -367,20 +400,21 @@ operator _Op(const valarray<typename _Dom::value_type>& __v, \
#define _DEFINE_EXPR_UNARY_FUNCTION(_Name) \
template<class _Dom> \
- inline _Expr<_UnClos<__##_Name,_Expr,_Dom>,typename _Dom::value_type>\
- _Name(const _Expr<_Dom,typename _Dom::value_type>& __e) \
+ inline _Expr<_UnClos<__##_Name, _Expr, _Dom>, \
+ typename _Dom::value_type> \
+ _Name(const _Expr<_Dom, typename _Dom::value_type>& __e) \
{ \
typedef typename _Dom::value_type _Tp; \
- typedef _UnClos<__##_Name,_Expr,_Dom> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__e())); \
+ typedef _UnClos<__##_Name, _Expr, _Dom> _Closure; \
+ return _Expr<_Closure, _Tp>(_Closure(__e())); \
} \
\
template<typename _Tp> \
- inline _Expr<_UnClos<__##_Name,_ValArray,_Tp>,_Tp> \
+ inline _Expr<_UnClos<__##_Name, _ValArray, _Tp>, _Tp> \
_Name(const valarray<_Tp>& __v) \
{ \
- typedef _UnClos<__##_Name,_ValArray,_Tp> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__v)); \
+ typedef _UnClos<__##_Name, _ValArray, _Tp> _Closure; \
+ return _Expr<_Closure, _Tp>(_Closure(__v)); \
}
_DEFINE_EXPR_UNARY_FUNCTION(abs)
@@ -402,86 +436,86 @@ operator _Op(const valarray<typename _Dom::value_type>& __v, \
#define _DEFINE_EXPR_BINARY_FUNCTION(_Fun) \
template<class _Dom1, class _Dom2> \
- inline _Expr<_BinClos<__##_Fun,_Expr,_Expr,_Dom1,_Dom2>, \
+ inline _Expr<_BinClos<__##_Fun, _Expr, _Expr, _Dom1, _Dom2>, \
typename _Dom1::value_type> \
- _Fun(const _Expr<_Dom1,typename _Dom1::value_type>& __e1, \
- const _Expr<_Dom2,typename _Dom2::value_type>& __e2) \
+ _Fun(const _Expr<_Dom1, typename _Dom1::value_type>& __e1, \
+ const _Expr<_Dom2, typename _Dom2::value_type>& __e2) \
{ \
typedef typename _Dom1::value_type _Tp; \
- typedef _BinClos<__##_Fun,_Expr,_Expr,_Dom1,_Dom2> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__e1(), __e2())); \
+ typedef _BinClos<__##_Fun, _Expr, _Expr, _Dom1, _Dom2> _Closure; \
+ return _Expr<_Closure, _Tp>(_Closure(__e1(), __e2())); \
} \
\
template<class _Dom> \
inline _Expr<_BinClos<__##_Fun, _Expr, _ValArray, _Dom, \
typename _Dom::value_type>, \
typename _Dom::value_type> \
- _Fun(const _Expr<_Dom,typename _Dom::value_type>& __e, \
+ _Fun(const _Expr<_Dom, typename _Dom::value_type>& __e, \
const valarray<typename _Dom::value_type>& __v) \
{ \
typedef typename _Dom::value_type _Tp; \
- typedef _BinClos<__##_Fun, _Expr, _ValArray, _Dom, _Tp> _Closure;\
- return _Expr<_Closure,_Tp>(_Closure(__e(), __v)); \
+ typedef _BinClos<__##_Fun, _Expr, _ValArray, _Dom, _Tp> _Closure; \
+ return _Expr<_Closure, _Tp>(_Closure(__e(), __v)); \
} \
\
template<class _Dom> \
inline _Expr<_BinClos<__##_Fun, _ValArray, _Expr, \
- typename _Dom::value_type,_Dom>, \
+ typename _Dom::value_type, _Dom>, \
typename _Dom::value_type> \
_Fun(const valarray<typename _Dom::valarray>& __v, \
- const _Expr<_Dom,typename _Dom::value_type>& __e) \
+ const _Expr<_Dom, typename _Dom::value_type>& __e) \
{ \
typedef typename _Dom::value_type _Tp; \
- typedef _BinClos<__##_Fun,_ValArray,_Expr,_Tp,_Dom> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__v, __e())); \
+ typedef _BinClos<__##_Fun, _ValArray, _Expr, _Tp, _Dom> _Closure; \
+ return _Expr<_Closure, _Tp>(_Closure(__v, __e())); \
} \
\
template<class _Dom> \
- inline _Expr<_BinClos<__##_Fun,_Expr,_Constant,_Dom, \
+ inline _Expr<_BinClos<__##_Fun, _Expr, _Constant, _Dom, \
typename _Dom::value_type>, \
typename _Dom::value_type> \
_Fun(const _Expr<_Dom, typename _Dom::value_type>& __e, \
const typename _Dom::value_type& __t) \
{ \
typedef typename _Dom::value_type _Tp; \
- typedef _BinClos<__##_Fun,_Expr,_Constant,_Dom,_Tp> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__e(), __t)); \
+ typedef _BinClos<__##_Fun, _Expr, _Constant, _Dom, _Tp> _Closure;\
+ return _Expr<_Closure, _Tp>(_Closure(__e(), __t)); \
} \
\
template<class _Dom> \
- inline _Expr<_BinClos<__##_Fun,_Constant,_Expr, \
- typename _Dom::value_type,_Dom>, \
+ inline _Expr<_BinClos<__##_Fun, _Constant, _Expr, \
+ typename _Dom::value_type, _Dom>, \
typename _Dom::value_type> \
_Fun(const typename _Dom::value_type& __t, \
- const _Expr<_Dom,typename _Dom::value_type>& __e) \
+ const _Expr<_Dom, typename _Dom::value_type>& __e) \
{ \
typedef typename _Dom::value_type _Tp; \
- typedef _BinClos<__##_Fun, _Constant,_Expr,_Tp,_Dom> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__t, __e())); \
+ typedef _BinClos<__##_Fun, _Constant, _Expr, _Tp, _Dom> _Closure; \
+ return _Expr<_Closure, _Tp>(_Closure(__t, __e())); \
} \
\
template<typename _Tp> \
- inline _Expr<_BinClos<__##_Fun,_ValArray,_ValArray,_Tp,_Tp>, _Tp> \
+ inline _Expr<_BinClos<__##_Fun, _ValArray, _ValArray, _Tp, _Tp>, _Tp> \
_Fun(const valarray<_Tp>& __v, const valarray<_Tp>& __w) \
{ \
- typedef _BinClos<__##_Fun,_ValArray,_ValArray,_Tp,_Tp> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__v, __w)); \
+ typedef _BinClos<__##_Fun, _ValArray, _ValArray, _Tp, _Tp> _Closure; \
+ return _Expr<_Closure, _Tp>(_Closure(__v, __w)); \
} \
\
template<typename _Tp> \
- inline _Expr<_BinClos<__##_Fun,_ValArray,_Constant,_Tp,_Tp>,_Tp> \
+ inline _Expr<_BinClos<__##_Fun, _ValArray, _Constant, _Tp, _Tp>, _Tp> \
_Fun(const valarray<_Tp>& __v, const _Tp& __t) \
{ \
- typedef _BinClos<__##_Fun,_ValArray,_Constant,_Tp,_Tp> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__v, __t)); \
+ typedef _BinClos<__##_Fun, _ValArray, _Constant, _Tp, _Tp> _Closure; \
+ return _Expr<_Closure, _Tp>(_Closure(__v, __t)); \
} \
\
template<typename _Tp> \
- inline _Expr<_BinClos<__##_Fun,_Constant,_ValArray,_Tp,_Tp>,_Tp> \
+ inline _Expr<_BinClos<__##_Fun, _Constant, _ValArray, _Tp, _Tp>, _Tp> \
_Fun(const _Tp& __t, const valarray<_Tp>& __v) \
{ \
- typedef _BinClos<__##_Fun,_Constant,_ValArray,_Tp,_Tp> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__t, __v)); \
+ typedef _BinClos<__##_Fun, _Constant, _ValArray, _Tp, _Tp> _Closure; \
+ return _Expr<_Closure, _Tp>(_Closure(__t, __v)); \
}
_DEFINE_EXPR_BINARY_FUNCTION(atan2)
@@ -491,7 +525,6 @@ _DEFINE_EXPR_BINARY_FUNCTION(pow)
} // std::
-
#endif /* _CPP_VALARRAY_AFTER_H */
// Local Variables:
diff --git a/libstdc++-v3/include/bits/valarray_array.h b/libstdc++-v3/include/bits/valarray_array.h
index e18e8e8e9e8..a104f7ba752 100644
--- a/libstdc++-v3/include/bits/valarray_array.h
+++ b/libstdc++-v3/include/bits/valarray_array.h
@@ -79,7 +79,10 @@ namespace std
// valarrays aren't required to be exception safe.
inline static void
_S_do_it(_Tp* __restrict__ __b, _Tp* __restrict__ __e)
- { while (__b != __e) new(__b++) _Tp(); }
+ {
+ while (__b != __e)
+ new(__b++) _Tp();
+ }
};
template<typename _Tp>
@@ -88,7 +91,7 @@ namespace std
// For fundamental types, it suffices to say 'memset()'
inline static void
_S_do_it(_Tp* __restrict__ __b, _Tp* __restrict__ __e)
- { std::memset(__b, 0, (__e - __b)*sizeof(_Tp)); }
+ { std::memset(__b, 0, (__e - __b) * sizeof(_Tp)); }
};
template<typename _Tp>
@@ -109,7 +112,10 @@ namespace std
// valarrays aren't required to be exception safe.
inline static void
_S_do_it(_Tp* __restrict__ __b, _Tp* __restrict__ __e, const _Tp __t)
- { while (__b != __e) new(__b++) _Tp(__t); }
+ {
+ while (__b != __e)
+ new(__b++) _Tp(__t);
+ }
};
template<typename _Tp>
@@ -117,7 +123,10 @@ namespace std
{
inline static void
_S_do_it(_Tp* __restrict__ __b, _Tp* __restrict__ __e, const _Tp __t)
- { while (__b != __e) *__b++ = __t; }
+ {
+ while (__b != __e)
+ *__b++ = __t;
+ }
};
template<typename _Tp>
@@ -141,7 +150,10 @@ namespace std
inline static void
_S_do_it(const _Tp* __restrict__ __b, const _Tp* __restrict__ __e,
_Tp* __restrict__ __o)
- { while (__b != __e) new(__o++) _Tp(*__b++); }
+ {
+ while (__b != __e)
+ new(__o++) _Tp(*__b++);
+ }
};
template<typename _Tp>
@@ -170,9 +182,17 @@ namespace std
size_t __s, _Tp* __restrict__ __o)
{
if (__is_fundamental<_Tp>::_M_type)
- while (__n--) { *__o++ = *__a; __a += __s; }
+ while (__n--)
+ {
+ *__o++ = *__a;
+ __a += __s;
+ }
else
- while (__n--) { new(__o++) _Tp(*__a); __a += __s; }
+ while (__n--)
+ {
+ new(__o++) _Tp(*__a);
+ __a += __s;
+ }
}
// copy-construct raw array [__o, *) from indexed array __a[__i[<__n>]]
@@ -183,9 +203,11 @@ namespace std
_Tp* __restrict__ __o, size_t __n)
{
if (__is_fundamental<_Tp>::_M_type)
- while (__n--) *__o++ = __a[*__i++];
+ while (__n--)
+ *__o++ = __a[*__i++];
else
- while (__n--) new (__o++) _Tp(__a[*__i++]);
+ while (__n--)
+ new (__o++) _Tp(__a[*__i++]);
}
// Do the necessary cleanup when we're done with arrays.
@@ -194,28 +216,41 @@ namespace std
__valarray_destroy_elements(_Tp* __restrict__ __b, _Tp* __restrict__ __e)
{
if (!__is_fundamental<_Tp>::_M_type)
- while (__b != __e) { __b->~_Tp(); ++__b; }
+ while (__b != __e)
+ {
+ __b->~_Tp();
+ ++__b;
+ }
}
// Fill a plain array __a[<__n>] with __t
template<typename _Tp>
inline void
- __valarray_fill (_Tp* __restrict__ __a, size_t __n, const _Tp& __t)
- { while (__n--) *__a++ = __t; }
+ __valarray_fill(_Tp* __restrict__ __a, size_t __n, const _Tp& __t)
+ {
+ while (__n--)
+ *__a++ = __t;
+ }
// fill strided array __a[<__n-1 : __s>] with __t
template<typename _Tp>
inline void
- __valarray_fill (_Tp* __restrict__ __a, size_t __n,
- size_t __s, const _Tp& __t)
- { for (size_t __i=0; __i<__n; ++__i, __a+=__s) *__a = __t; }
+ __valarray_fill(_Tp* __restrict__ __a, size_t __n,
+ size_t __s, const _Tp& __t)
+ {
+ for (size_t __i = 0; __i < __n; ++__i, __a += __s)
+ *__a = __t;
+ }
// fill indir ect array __a[__i[<__n>]] with __i
template<typename _Tp>
inline void
__valarray_fill(_Tp* __restrict__ __a, const size_t* __restrict__ __i,
size_t __n, const _Tp& __t)
- { for (size_t __j=0; __j<__n; ++__j, ++__i) __a[*__i] = __t; }
+ {
+ for (size_t __j = 0; __j < __n; ++__j, ++__i)
+ __a[*__i] = __t;
+ }
// copy plain array __a[<__n>] in __b[<__n>]
// For non-fundamental types, it is wrong to say 'memcpy()'
@@ -224,7 +259,10 @@ namespace std
{
inline static void
_S_do_it(const _Tp* __restrict__ __a, size_t __n, _Tp* __restrict__ __b)
- { while (__n--) *__b++ = *__a++; }
+ {
+ while(__n--)
+ *__b++ = *__a++;
+ }
};
template<typename _Tp>
@@ -239,7 +277,7 @@ namespace std
template<typename _Tp>
inline void
__valarray_copy(const _Tp* __restrict__ __a, size_t __n,
- _Tp* __restrict__ __b)
+ _Tp* __restrict__ __b)
{
_Array_copier<_Tp, __is_fundamental<_Tp>::_M_type>::
_S_do_it(__a, __n, __b);
@@ -249,15 +287,21 @@ namespace std
template<typename _Tp>
inline void
__valarray_copy(const _Tp* __restrict__ __a, size_t __n, size_t __s,
- _Tp* __restrict__ __b)
- { for (size_t __i=0; __i<__n; ++__i, ++__b, __a += __s) *__b = *__a; }
+ _Tp* __restrict__ __b)
+ {
+ for (size_t __i = 0; __i < __n; ++__i, ++__b, __a += __s)
+ *__b = *__a;
+ }
// Copy a plain array __a[<__n>] into a strided array __b[<__n : __s>]
template<typename _Tp>
inline void
__valarray_copy(const _Tp* __restrict__ __a, _Tp* __restrict__ __b,
- size_t __n, size_t __s)
- { for (size_t __i=0; __i<__n; ++__i, ++__a, __b+=__s) *__b = *__a; }
+ size_t __n, size_t __s)
+ {
+ for (size_t __i = 0; __i < __n; ++__i, ++__a, __b += __s)
+ *__b = *__a;
+ }
// Copy strided array __src[<__n : __s1>] into another
// strided array __dst[< : __s2>]. Their sizes must match.
@@ -267,7 +311,7 @@ namespace std
_Tp* __restrict__ __dst, size_t __s2)
{
for (size_t __i = 0; __i < __n; ++__i)
- __dst[__i * __s2] = __src [ __i * __s1];
+ __dst[__i * __s2] = __src[__i * __s1];
}
@@ -277,14 +321,20 @@ namespace std
__valarray_copy (const _Tp* __restrict__ __a,
const size_t* __restrict__ __i,
_Tp* __restrict__ __b, size_t __n)
- { for (size_t __j=0; __j<__n; ++__j, ++__b, ++__i) *__b = __a[*__i]; }
+ {
+ for (size_t __j = 0; __j < __n; ++__j, ++__b, ++__i)
+ *__b = __a[*__i];
+ }
// Copy a plain array __a[<__n>] in an indexed array __b[__i[<__n>]]
template<typename _Tp>
inline void
__valarray_copy (const _Tp* __restrict__ __a, size_t __n,
_Tp* __restrict__ __b, const size_t* __restrict__ __i)
- { for (size_t __j=0; __j<__n; ++__j, ++__a, ++__i) __b[*__i] = *__a; }
+ {
+ for (size_t __j = 0; __j < __n; ++__j, ++__a, ++__i)
+ __b[*__i] = *__a;
+ }
// Copy the __n first elements of an indexed array __src[<__i>] into
// another indexed array __dst[<__j>].
@@ -310,7 +360,8 @@ namespace std
__valarray_sum(const _Tp* __restrict__ __f, const _Tp* __restrict__ __l)
{
_Tp __r = _Tp();
- while (__f != __l) __r += *__f++;
+ while (__f != __l)
+ __r += *__f++;
return __r;
}
@@ -321,7 +372,8 @@ namespace std
const _Tp* __restrict__ __l)
{
_Tp __r = _Tp(1);
- while (__f != __l) __r = __r * *__f++;
+ while (__f != __l)
+ __r = __r * *__f++;
return __r;
}
@@ -367,12 +419,12 @@ namespace std
template<typename _Tp>
struct _Array
{
- explicit _Array (size_t);
- explicit _Array (_Tp* const __restrict__);
- explicit _Array (const valarray<_Tp>&);
- _Array (const _Tp* __restrict__, size_t);
+ explicit _Array(size_t);
+ explicit _Array(_Tp* const __restrict__);
+ explicit _Array(const valarray<_Tp>&);
+ _Array(const _Tp* __restrict__, size_t);
- _Tp* begin () const;
+ _Tp* begin() const;
_Tp* const __restrict__ _M_data;
};
@@ -380,18 +432,18 @@ namespace std
template<typename _Tp>
inline void
__valarray_fill (_Array<_Tp> __a, size_t __n, const _Tp& __t)
- { std::__valarray_fill (__a._M_data, __n, __t); }
+ { std::__valarray_fill(__a._M_data, __n, __t); }
template<typename _Tp>
inline void
- __valarray_fill (_Array<_Tp> __a, size_t __n, size_t __s, const _Tp& __t)
- { std::__valarray_fill (__a._M_data, __n, __s, __t); }
+ __valarray_fill(_Array<_Tp> __a, size_t __n, size_t __s, const _Tp& __t)
+ { std::__valarray_fill(__a._M_data, __n, __s, __t); }
template<typename _Tp>
inline void
- __valarray_fill (_Array<_Tp> __a, _Array<size_t> __i,
- size_t __n, const _Tp& __t)
- { std::__valarray_fill (__a._M_data, __i._M_data, __n, __t); }
+ __valarray_fill(_Array<_Tp> __a, _Array<size_t> __i,
+ size_t __n, const _Tp& __t)
+ { std::__valarray_fill(__a._M_data, __i._M_data, __n, __t); }
// Copy a plain array __a[<__n>] into a play array __b[<>]
template<typename _Tp>
@@ -424,14 +476,14 @@ namespace std
template<typename _Tp>
inline void
__valarray_copy(_Array<_Tp> __a, _Array<size_t> __i,
- _Array<_Tp> __b, size_t __n)
+ _Array<_Tp> __b, size_t __n)
{ std::__valarray_copy(__a._M_data, __i._M_data, __b._M_data, __n); }
// Copy a plain array __a[<__n>] in an indexed array __b[__i[<__n>]]
template<typename _Tp>
inline void
__valarray_copy(_Array<_Tp> __a, size_t __n, _Array<_Tp> __b,
- _Array<size_t> __i)
+ _Array<size_t> __i)
{ std::__valarray_copy(__a._M_data, __n, __b._M_data, __i._M_data); }
// Copy the __n first elements of an indexed array __src[<__i>] into
@@ -447,22 +499,24 @@ namespace std
template<typename _Tp>
inline
- _Array<_Tp>::_Array (size_t __n)
- : _M_data(__valarray_get_storage<_Tp>(__n))
+ _Array<_Tp>::_Array(size_t __n)
+ : _M_data(__valarray_get_storage<_Tp>(__n))
{ std::__valarray_default_construct(_M_data, _M_data + __n); }
template<typename _Tp>
inline
- _Array<_Tp>::_Array (_Tp* const __restrict__ __p) : _M_data (__p) {}
+ _Array<_Tp>::_Array(_Tp* const __restrict__ __p)
+ : _M_data (__p) {}
template<typename _Tp>
- inline _Array<_Tp>::_Array (const valarray<_Tp>& __v)
- : _M_data (__v._M_data) {}
+ inline
+ _Array<_Tp>::_Array(const valarray<_Tp>& __v)
+ : _M_data (__v._M_data) {}
template<typename _Tp>
inline
- _Array<_Tp>::_Array (const _Tp* __restrict__ __b, size_t __s)
- : _M_data(__valarray_get_storage<_Tp>(__s))
+ _Array<_Tp>::_Array(const _Tp* __restrict__ __b, size_t __s)
+ : _M_data(__valarray_get_storage<_Tp>(__s))
{ std::__valarray_copy_construct(__b, __s, _M_data); }
template<typename _Tp>
@@ -471,138 +525,152 @@ namespace std
{ return _M_data; }
#define _DEFINE_ARRAY_FUNCTION(_Op, _Name) \
-template<typename _Tp> \
-inline void \
-_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, const _Tp& __t) \
-{ \
- for (_Tp* __p=__a._M_data; __p<__a._M_data+__n; ++__p) \
- *__p _Op##= __t; \
-} \
+ template<typename _Tp> \
+ inline void \
+ _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n, const _Tp& __t) \
+ { \
+ for (_Tp* __p = __a._M_data; __p < __a._M_data + __n; ++__p) \
+ *__p _Op##= __t; \
+ } \
\
-template<typename _Tp> \
-inline void \
-_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, _Array<_Tp> __b) \
-{ \
- _Tp* __p = __a._M_data; \
- for (_Tp* __q=__b._M_data; __q<__b._M_data+__n; ++__p, ++__q) \
- *__p _Op##= *__q; \
-} \
+ template<typename _Tp> \
+ inline void \
+ _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n, _Array<_Tp> __b) \
+ { \
+ _Tp* __p = __a._M_data; \
+ for (_Tp* __q = __b._M_data; __q < __b._M_data + __n; ++__p, ++__q) \
+ *__p _Op##= *__q; \
+ } \
\
-template<typename _Tp, class _Dom> \
-void \
-_Array_augmented_##_Name (_Array<_Tp> __a, \
- const _Expr<_Dom,_Tp>& __e, size_t __n) \
-{ \
- _Tp* __p (__a._M_data); \
- for (size_t __i=0; __i<__n; ++__i, ++__p) *__p _Op##= __e[__i]; \
-} \
+ template<typename _Tp, class _Dom> \
+ void \
+ _Array_augmented_##_Name(_Array<_Tp> __a, \
+ const _Expr<_Dom, _Tp>& __e, size_t __n) \
+ { \
+ _Tp* __p(__a._M_data); \
+ for (size_t __i = 0; __i < __n; ++__i, ++__p) \
+ *__p _Op##= __e[__i]; \
+ } \
\
-template<typename _Tp> \
-inline void \
-_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, size_t __s, \
- _Array<_Tp> __b) \
-{ \
- _Tp* __q (__b._M_data); \
- for (_Tp* __p=__a._M_data; __p<__a._M_data+__s*__n; __p+=__s, ++__q) \
- *__p _Op##= *__q; \
-} \
+ template<typename _Tp> \
+ inline void \
+ _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n, size_t __s, \
+ _Array<_Tp> __b) \
+ { \
+ _Tp* __q(__b._M_data); \
+ for (_Tp* __p = __a._M_data; __p < __a._M_data + __s * __n; \
+ __p += __s, ++__q) \
+ *__p _Op##= *__q; \
+ } \
\
-template<typename _Tp> \
-inline void \
-_Array_augmented_##_Name (_Array<_Tp> __a, _Array<_Tp> __b, \
- size_t __n, size_t __s) \
-{ \
- _Tp* __q (__b._M_data); \
- for (_Tp* __p=__a._M_data; __p<__a._M_data+__n; ++__p, __q+=__s) \
- *__p _Op##= *__q; \
-} \
+ template<typename _Tp> \
+ inline void \
+ _Array_augmented_##_Name(_Array<_Tp> __a, _Array<_Tp> __b, \
+ size_t __n, size_t __s) \
+ { \
+ _Tp* __q(__b._M_data); \
+ for (_Tp* __p = __a._M_data; __p < __a._M_data + __n; \
+ ++__p, __q += __s) \
+ *__p _Op##= *__q; \
+ } \
\
-template<typename _Tp, class _Dom> \
-void \
-_Array_augmented_##_Name (_Array<_Tp> __a, size_t __s, \
- const _Expr<_Dom,_Tp>& __e, size_t __n) \
-{ \
- _Tp* __p (__a._M_data); \
- for (size_t __i=0; __i<__n; ++__i, __p+=__s) *__p _Op##= __e[__i]; \
-} \
+ template<typename _Tp, class _Dom> \
+ void \
+ _Array_augmented_##_Name(_Array<_Tp> __a, size_t __s, \
+ const _Expr<_Dom, _Tp>& __e, size_t __n) \
+ { \
+ _Tp* __p(__a._M_data); \
+ for (size_t __i = 0; __i < __n; ++__i, __p += __s) \
+ *__p _Op##= __e[__i]; \
+ } \
\
-template<typename _Tp> \
-inline void \
-_Array_augmented_##_Name (_Array<_Tp> __a, _Array<size_t> __i, \
- _Array<_Tp> __b, size_t __n) \
-{ \
- _Tp* __q (__b._M_data); \
- for (size_t* __j=__i._M_data; __j<__i._M_data+__n; ++__j, ++__q) \
+ template<typename _Tp> \
+ inline void \
+ _Array_augmented_##_Name(_Array<_Tp> __a, _Array<size_t> __i, \
+ _Array<_Tp> __b, size_t __n) \
+ { \
+ _Tp* __q(__b._M_data); \
+ for (size_t* __j = __i._M_data; __j < __i._M_data + __n; \
+ ++__j, ++__q) \
__a._M_data[*__j] _Op##= *__q; \
-} \
+ } \
\
-template<typename _Tp> \
-inline void \
-_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, \
- _Array<_Tp> __b, _Array<size_t> __i) \
-{ \
- _Tp* __p (__a._M_data); \
- for (size_t* __j=__i._M_data; __j<__i._M_data+__n; ++__j, ++__p) \
+ template<typename _Tp> \
+ inline void \
+ _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n, \
+ _Array<_Tp> __b, _Array<size_t> __i) \
+ { \
+ _Tp* __p(__a._M_data); \
+ for (size_t* __j = __i._M_data; __j<__i._M_data + __n; \
+ ++__j, ++__p) \
*__p _Op##= __b._M_data[*__j]; \
-} \
+ } \
\
-template<typename _Tp, class _Dom> \
-void \
-_Array_augmented_##_Name (_Array<_Tp> __a, _Array<size_t> __i, \
- const _Expr<_Dom, _Tp>& __e, size_t __n) \
-{ \
- size_t* __j (__i._M_data); \
- for (size_t __k=0; __k<__n; ++__k, ++__j) \
- __a._M_data[*__j] _Op##= __e[__k]; \
-} \
+ template<typename _Tp, class _Dom> \
+ void \
+ _Array_augmented_##_Name(_Array<_Tp> __a, _Array<size_t> __i, \
+ const _Expr<_Dom, _Tp>& __e, size_t __n) \
+ { \
+ size_t* __j(__i._M_data); \
+ for (size_t __k = 0; __k<__n; ++__k, ++__j) \
+ __a._M_data[*__j] _Op##= __e[__k]; \
+ } \
\
-template<typename _Tp> \
-void \
-_Array_augmented_##_Name (_Array<_Tp> __a, _Array<bool> __m, \
- _Array<_Tp> __b, size_t __n) \
-{ \
- bool* ok (__m._M_data); \
- _Tp* __p (__a._M_data); \
- for (_Tp* __q=__b._M_data; __q<__b._M_data+__n; ++__q, ++ok, ++__p) { \
- while (! *ok) { \
- ++ok; \
- ++__p; \
+ template<typename _Tp> \
+ void \
+ _Array_augmented_##_Name(_Array<_Tp> __a, _Array<bool> __m, \
+ _Array<_Tp> __b, size_t __n) \
+ { \
+ bool* __ok(__m._M_data); \
+ _Tp* __p(__a._M_data); \
+ for (_Tp* __q = __b._M_data; __q < __b._M_data + __n; \
+ ++__q, ++__ok, ++__p) \
+ { \
+ while (! *__ok) \
+ { \
+ ++__ok; \
+ ++__p; \
+ } \
+ *__p _Op##= *__q; \
} \
- *__p _Op##= *__q; \
} \
-} \
\
-template<typename _Tp> \
-void \
-_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, \
- _Array<_Tp> __b, _Array<bool> __m) \
-{ \
- bool* ok (__m._M_data); \
- _Tp* __q (__b._M_data); \
- for (_Tp* __p=__a._M_data; __p<__a._M_data+__n; ++__p, ++ok, ++__q) { \
- while (! *ok) { \
- ++ok; \
- ++__q; \
+ template<typename _Tp> \
+ void \
+ _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n, \
+ _Array<_Tp> __b, _Array<bool> __m) \
+ { \
+ bool* __ok(__m._M_data); \
+ _Tp* __q(__b._M_data); \
+ for (_Tp* __p = __a._M_data; __p < __a._M_data + __n; \
+ ++__p, ++__ok, ++__q) \
+ { \
+ while (! *__ok) \
+ { \
+ ++__ok; \
+ ++__q; \
+ } \
+ *__p _Op##= *__q; \
} \
- *__p _Op##= *__q; \
} \
-} \
\
-template<typename _Tp, class _Dom> \
-void \
-_Array_augmented_##_Name (_Array<_Tp> __a, _Array<bool> __m, \
- const _Expr<_Dom, _Tp>& __e, size_t __n) \
-{ \
- bool* ok(__m._M_data); \
- _Tp* __p (__a._M_data); \
- for (size_t __i=0; __i<__n; ++__i, ++ok, ++__p) { \
- while (! *ok) { \
- ++ok; \
- ++__p; \
+ template<typename _Tp, class _Dom> \
+ void \
+ _Array_augmented_##_Name(_Array<_Tp> __a, _Array<bool> __m, \
+ const _Expr<_Dom, _Tp>& __e, size_t __n) \
+ { \
+ bool* __ok(__m._M_data); \
+ _Tp* __p(__a._M_data); \
+ for (size_t __i = 0; __i < __n; ++__i, ++__ok, ++__p) \
+ { \
+ while (! *__ok) \
+ { \
+ ++__ok; \
+ ++__p; \
+ } \
+ *__p _Op##= __e[__i]; \
} \
- *__p _Op##= __e[__i]; \
- } \
-}
+ }
_DEFINE_ARRAY_FUNCTION(+, __plus)
_DEFINE_ARRAY_FUNCTION(-, __minus)
diff --git a/libstdc++-v3/include/bits/valarray_before.h b/libstdc++-v3/include/bits/valarray_before.h
index 263ac2f0e22..e1576f07d42 100644
--- a/libstdc++-v3/include/bits/valarray_before.h
+++ b/libstdc++-v3/include/bits/valarray_before.h
@@ -1,6 +1,7 @@
// The template and inlines for the -*- C++ -*- internal _Meta class.
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+// 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
@@ -66,85 +67,99 @@ namespace std
struct __abs
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return abs(__t); }
+ _Tp operator()(const _Tp& __t) const
+ { return abs(__t); }
};
struct __cos
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return cos(__t); }
+ _Tp operator()(const _Tp& __t) const
+ { return cos(__t); }
};
struct __acos
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return acos(__t); }
+ _Tp operator()(const _Tp& __t) const
+ { return acos(__t); }
};
struct __cosh
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return cosh(__t); }
+ _Tp operator()(const _Tp& __t) const
+ { return cosh(__t); }
};
struct __sin
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return sin(__t); }
+ _Tp operator()(const _Tp& __t) const
+ { return sin(__t); }
};
struct __asin
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return asin(__t); }
+ _Tp operator()(const _Tp& __t) const
+ { return asin(__t); }
};
struct __sinh
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return sinh(__t); }
+ _Tp operator()(const _Tp& __t) const
+ { return sinh(__t); }
};
struct __tan
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return tan(__t); }
+ _Tp operator()(const _Tp& __t) const
+ { return tan(__t); }
};
struct __atan
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return atan(__t); }
+ _Tp operator()(const _Tp& __t) const
+ { return atan(__t); }
};
struct __tanh
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return tanh(__t); }
+ _Tp operator()(const _Tp& __t) const
+ { return tanh(__t); }
};
struct __exp
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return exp(__t); }
+ _Tp operator()(const _Tp& __t) const
+ { return exp(__t); }
};
struct __log
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return log(__t); }
+ _Tp operator()(const _Tp& __t) const
+ { return log(__t); }
};
struct __log10
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return log10(__t); }
+ _Tp operator()(const _Tp& __t) const
+ { return log10(__t); }
};
struct __sqrt
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return sqrt(__t); }
+ _Tp operator()(const _Tp& __t) const
+ { return sqrt(__t); }
};
// In the past, we used to tailor operator applications semantics
@@ -154,19 +169,22 @@ namespace std
struct __unary_plus
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return +__t; }
+ _Tp operator()(const _Tp& __t) const
+ { return +__t; }
};
struct __negate
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return -__t; }
+ _Tp operator()(const _Tp& __t) const
+ { return -__t; }
};
struct __bitwise_not
{
template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return ~__t; }
+ _Tp operator()(const _Tp& __t) const
+ { return ~__t; }
};
struct __plus
@@ -381,9 +399,9 @@ namespace std
typedef bool result_type;
};
- //
- // Apply function taking a value/const reference closure
- //
+ //
+ // Apply function taking a value/const reference closure
+ //
template<typename _Dom, typename _Arg>
class _FunBase
@@ -392,7 +410,7 @@ namespace std
typedef typename _Dom::value_type value_type;
_FunBase(const _Dom& __e, value_type __f(_Arg))
- : _M_expr(__e), _M_func(__f) {}
+ : _M_expr(__e), _M_func(__f) {}
value_type operator[](size_t __i) const
{ return _M_func (_M_expr[__i]); }
@@ -400,8 +418,8 @@ namespace std
size_t size() const { return _M_expr.size ();}
private:
- const _Dom& _M_expr;
- value_type (*_M_func)(_Arg);
+ const _Dom& _M_expr;
+ value_type (*_M_func)(_Arg);
};
template<class _Dom>
@@ -424,25 +442,26 @@ namespace std
};
template<class _Dom>
- struct _RefFunClos<_Expr,_Dom> :
- _FunBase<_Dom, const typename _Dom::value_type&>
+ struct _RefFunClos<_Expr, _Dom>
+ : _FunBase<_Dom, const typename _Dom::value_type&>
{
typedef _FunBase<_Dom, const typename _Dom::value_type&> _Base;
typedef typename _Base::value_type value_type;
typedef value_type _Tp;
_RefFunClos(const _Dom& __e, _Tp __f(const _Tp&))
- : _Base(__e, __f) {}
+ : _Base(__e, __f) {}
};
template<typename _Tp>
- struct _RefFunClos<_ValArray,_Tp> : _FunBase<valarray<_Tp>, const _Tp&>
+ struct _RefFunClos<_ValArray, _Tp>
+ : _FunBase<valarray<_Tp>, const _Tp&>
{
typedef _FunBase<valarray<_Tp>, const _Tp&> _Base;
typedef _Tp value_type;
_RefFunClos(const valarray<_Tp>& __v, _Tp __f(const _Tp&))
- : _Base(__v, __f) {}
+ : _Base(__v, __f) {}
};
//
@@ -462,13 +481,14 @@ namespace std
{ return _Oper()(_M_expr[__i]); }
size_t size() const { return _M_expr.size(); }
-
+
private:
const _Arg& _M_expr;
};
template<class _Oper, class _Dom>
- struct _UnClos<_Oper, _Expr, _Dom> : _UnBase<_Oper, _Dom>
+ struct _UnClos<_Oper, _Expr, _Dom>
+ : _UnBase<_Oper, _Dom>
{
typedef _Dom _Arg;
typedef _UnBase<_Oper, _Dom> _Base;
@@ -478,7 +498,8 @@ namespace std
};
template<class _Oper, typename _Tp>
- struct _UnClos<_Oper, _ValArray, _Tp> : _UnBase<_Oper, valarray<_Tp> >
+ struct _UnClos<_Oper, _ValArray, _Tp>
+ : _UnBase<_Oper, valarray<_Tp> >
{
typedef valarray<_Tp> _Arg;
typedef _UnBase<_Oper, valarray<_Tp> > _Base;
@@ -496,11 +517,11 @@ namespace std
class _BinBase
{
public:
- typedef typename _FirstArg::value_type _Vt;
- typedef typename __fun<_Oper, _Vt>::result_type value_type;
+ typedef typename _FirstArg::value_type _Vt;
+ typedef typename __fun<_Oper, _Vt>::result_type value_type;
_BinBase(const _FirstArg& __e1, const _SecondArg& __e2)
- : _M_expr1(__e1), _M_expr2(__e2) {}
+ : _M_expr1(__e1), _M_expr2(__e2) {}
value_type operator[](size_t __i) const
{ return _Oper()(_M_expr1[__i], _M_expr2[__i]); }
@@ -521,7 +542,7 @@ namespace std
typedef typename __fun<_Oper, _Vt>::result_type value_type;
_BinBase2(const _Clos& __e, const _Vt& __t)
- : _M_expr1(__e), _M_expr2(__t) {}
+ : _M_expr1(__e), _M_expr2(__t) {}
value_type operator[](size_t __i) const
{ return _Oper()(_M_expr1[__i], _M_expr2); }
@@ -541,7 +562,7 @@ namespace std
typedef typename __fun<_Oper, _Vt>::result_type value_type;
_BinBase1(const _Vt& __t, const _Clos& __e)
- : _M_expr1(__t), _M_expr2(__e) {}
+ : _M_expr1(__t), _M_expr2(__e) {}
value_type operator[](size_t __i) const
{ return _Oper()(_M_expr1, _M_expr2[__i]); }
@@ -555,52 +576,52 @@ namespace std
template<class _Oper, class _Dom1, class _Dom2>
struct _BinClos<_Oper, _Expr, _Expr, _Dom1, _Dom2>
- : _BinBase<_Oper,_Dom1,_Dom2>
+ : _BinBase<_Oper, _Dom1, _Dom2>
{
- typedef _BinBase<_Oper,_Dom1,_Dom2> _Base;
+ typedef _BinBase<_Oper, _Dom1, _Dom2> _Base;
typedef typename _Base::value_type value_type;
_BinClos(const _Dom1& __e1, const _Dom2& __e2) : _Base(__e1, __e2) {}
};
template<class _Oper, typename _Tp>
- struct _BinClos<_Oper,_ValArray,_ValArray,_Tp,_Tp>
- : _BinBase<_Oper,valarray<_Tp>,valarray<_Tp> >
+ struct _BinClos<_Oper,_ValArray, _ValArray, _Tp, _Tp>
+ : _BinBase<_Oper, valarray<_Tp>, valarray<_Tp> >
{
- typedef _BinBase<_Oper,valarray<_Tp>,valarray<_Tp> > _Base;
+ typedef _BinBase<_Oper, valarray<_Tp>, valarray<_Tp> > _Base;
typedef _Tp value_type;
_BinClos(const valarray<_Tp>& __v, const valarray<_Tp>& __w)
- : _Base(__v, __w) {}
+ : _Base(__v, __w) {}
};
template<class _Oper, class _Dom>
- struct _BinClos<_Oper,_Expr,_ValArray,_Dom,typename _Dom::value_type>
- : _BinBase<_Oper,_Dom,valarray<typename _Dom::value_type> >
+ struct _BinClos<_Oper, _Expr, _ValArray, _Dom, typename _Dom::value_type>
+ : _BinBase<_Oper, _Dom, valarray<typename _Dom::value_type> >
{
typedef typename _Dom::value_type _Tp;
typedef _BinBase<_Oper,_Dom,valarray<_Tp> > _Base;
typedef typename _Base::value_type value_type;
_BinClos(const _Dom& __e1, const valarray<_Tp>& __e2)
- : _Base(__e1, __e2) {}
+ : _Base(__e1, __e2) {}
};
template<class _Oper, class _Dom>
- struct _BinClos<_Oper,_ValArray,_Expr,typename _Dom::value_type,_Dom>
- : _BinBase<_Oper,valarray<typename _Dom::value_type>,_Dom>
+ struct _BinClos<_Oper, _ValArray, _Expr, typename _Dom::value_type, _Dom>
+ : _BinBase<_Oper, valarray<typename _Dom::value_type>,_Dom>
{
typedef typename _Dom::value_type _Tp;
- typedef _BinBase<_Oper,valarray<_Tp>,_Dom> _Base;
+ typedef _BinBase<_Oper, valarray<_Tp>, _Dom> _Base;
typedef typename _Base::value_type value_type;
_BinClos(const valarray<_Tp>& __e1, const _Dom& __e2)
- : _Base(__e1, __e2) {}
+ : _Base(__e1, __e2) {}
};
template<class _Oper, class _Dom>
- struct _BinClos<_Oper,_Expr,_Constant,_Dom,typename _Dom::value_type>
- : _BinBase2<_Oper,_Dom>
+ struct _BinClos<_Oper, _Expr, _Constant, _Dom, typename _Dom::value_type>
+ : _BinBase2<_Oper, _Dom>
{
typedef typename _Dom::value_type _Tp;
typedef _BinBase2<_Oper,_Dom> _Base;
@@ -610,19 +631,19 @@ namespace std
};
template<class _Oper, class _Dom>
- struct _BinClos<_Oper,_Constant,_Expr,typename _Dom::value_type,_Dom>
- : _BinBase1<_Oper,_Dom>
+ struct _BinClos<_Oper, _Constant, _Expr, typename _Dom::value_type, _Dom>
+ : _BinBase1<_Oper, _Dom>
{
typedef typename _Dom::value_type _Tp;
- typedef _BinBase1<_Oper,_Dom> _Base;
+ typedef _BinBase1<_Oper, _Dom> _Base;
typedef typename _Base::value_type value_type;
_BinClos(const _Tp& __e1, const _Dom& __e2) : _Base(__e1, __e2) {}
};
template<class _Oper, typename _Tp>
- struct _BinClos<_Oper,_ValArray,_Constant,_Tp,_Tp>
- : _BinBase2<_Oper,valarray<_Tp> >
+ struct _BinClos<_Oper, _ValArray, _Constant, _Tp, _Tp>
+ : _BinBase2<_Oper, valarray<_Tp> >
{
typedef _BinBase2<_Oper,valarray<_Tp> > _Base;
typedef typename _Base::value_type value_type;
@@ -631,69 +652,86 @@ namespace std
};
template<class _Oper, typename _Tp>
- struct _BinClos<_Oper,_Constant,_ValArray,_Tp,_Tp>
- : _BinBase1<_Oper,valarray<_Tp> >
+ struct _BinClos<_Oper, _Constant, _ValArray, _Tp, _Tp>
+ : _BinBase1<_Oper, valarray<_Tp> >
{
- typedef _BinBase1<_Oper,valarray<_Tp> > _Base;
+ typedef _BinBase1<_Oper, valarray<_Tp> > _Base;
typedef typename _Base::value_type value_type;
_BinClos(const _Tp& __t, const valarray<_Tp>& __v) : _Base(__t, __v) {}
};
-
//
// slice_array closure.
//
- template<typename _Dom> class _SBase {
+ template<typename _Dom>
+ class _SBase
+ {
public:
- typedef typename _Dom::value_type value_type;
-
- _SBase (const _Dom& __e, const slice& __s)
- : _M_expr (__e), _M_slice (__s) {}
- value_type operator[] (size_t __i) const
- { return _M_expr[_M_slice.start () + __i * _M_slice.stride ()]; }
- size_t size() const { return _M_slice.size (); }
+ typedef typename _Dom::value_type value_type;
+
+ _SBase (const _Dom& __e, const slice& __s)
+ : _M_expr (__e), _M_slice (__s) {}
+
+ value_type
+ operator[] (size_t __i) const
+ { return _M_expr[_M_slice.start () + __i * _M_slice.stride ()]; }
+
+ size_t
+ size() const
+ { return _M_slice.size (); }
private:
- const _Dom& _M_expr;
- const slice& _M_slice;
+ const _Dom& _M_expr;
+ const slice& _M_slice;
};
- template<typename _Tp> class _SBase<_Array<_Tp> > {
+ template<typename _Tp>
+ class _SBase<_Array<_Tp> >
+ {
public:
- typedef _Tp value_type;
-
- _SBase (_Array<_Tp> __a, const slice& __s)
- : _M_array (__a._M_data+__s.start()), _M_size (__s.size()),
- _M_stride (__s.stride()) {}
- value_type operator[] (size_t __i) const
- { return _M_array._M_data[__i * _M_stride]; }
- size_t size() const { return _M_size; }
+ typedef _Tp value_type;
+
+ _SBase (_Array<_Tp> __a, const slice& __s)
+ : _M_array (__a._M_data+__s.start()), _M_size (__s.size()),
+ _M_stride (__s.stride()) {}
+
+ value_type
+ operator[] (size_t __i) const
+ { return _M_array._M_data[__i * _M_stride]; }
+
+ size_t
+ size() const
+ { return _M_size; }
private:
- const _Array<_Tp> _M_array;
- const size_t _M_size;
- const size_t _M_stride;
+ const _Array<_Tp> _M_array;
+ const size_t _M_size;
+ const size_t _M_stride;
};
- template<class _Dom> struct _SClos<_Expr,_Dom> : _SBase<_Dom> {
- typedef _SBase<_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _SClos (const _Dom& __e, const slice& __s) : _Base (__e, __s) {}
+ template<class _Dom>
+ struct _SClos<_Expr, _Dom>
+ : _SBase<_Dom>
+ {
+ typedef _SBase<_Dom> _Base;
+ typedef typename _Base::value_type value_type;
+
+ _SClos (const _Dom& __e, const slice& __s) : _Base (__e, __s) {}
};
- template<typename _Tp>
- struct _SClos<_ValArray,_Tp> : _SBase<_Array<_Tp> > {
- typedef _SBase<_Array<_Tp> > _Base;
- typedef _Tp value_type;
-
- _SClos (_Array<_Tp> __a, const slice& __s) : _Base (__a, __s) {}
+ template<typename _Tp>
+ struct _SClos<_ValArray, _Tp>
+ : _SBase<_Array<_Tp> >
+ {
+ typedef _SBase<_Array<_Tp> > _Base;
+ typedef _Tp value_type;
+
+ _SClos (_Array<_Tp> __a, const slice& __s) : _Base (__a, __s) {}
};
} // std::
-
#endif /* _CPP_VALARRAY_BEFORE_H */
// Local Variables:
diff --git a/libstdc++-v3/include/bits/vector.tcc b/libstdc++-v3/include/bits/vector.tcc
index 5e8b9a7108d..4231715fb11 100644
--- a/libstdc++-v3/include/bits/vector.tcc
+++ b/libstdc++-v3/include/bits/vector.tcc
@@ -76,7 +76,8 @@ namespace _GLIBCXX_STD
pointer __tmp = _M_allocate_and_copy(__n,
this->_M_impl._M_start,
this->_M_impl._M_finish);
- std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish);
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ this->get_allocator());
_M_deallocate(this->_M_impl._M_start,
this->_M_impl._M_end_of_storage
- this->_M_impl._M_start);
@@ -91,11 +92,11 @@ namespace _GLIBCXX_STD
vector<_Tp, _Alloc>::
insert(iterator __position, const value_type& __x)
{
- size_type __n = __position - begin();
+ const size_type __n = __position - begin();
if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage
&& __position == end())
{
- std::_Construct(this->_M_impl._M_finish, __x);
+ this->_M_impl.construct(this->_M_impl._M_finish, __x);
++this->_M_impl._M_finish;
}
else
@@ -111,7 +112,7 @@ namespace _GLIBCXX_STD
if (__position + 1 != end())
std::copy(__position + 1, end(), __position);
--this->_M_impl._M_finish;
- std::_Destroy(this->_M_impl._M_finish);
+ this->_M_impl.destroy(this->_M_impl._M_finish);
return __position;
}
@@ -121,7 +122,7 @@ namespace _GLIBCXX_STD
erase(iterator __first, iterator __last)
{
iterator __i(copy(__last, end(), __first));
- std::_Destroy(__i, end());
+ std::_Destroy(__i, end(), this->get_allocator());
this->_M_impl._M_finish = this->_M_impl._M_finish - (__last - __first);
return __first;
}
@@ -138,8 +139,8 @@ namespace _GLIBCXX_STD
{
pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(),
__x.end());
- std::_Destroy(this->_M_impl._M_start,
- this->_M_impl._M_finish);
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ this->get_allocator());
_M_deallocate(this->_M_impl._M_start,
this->_M_impl._M_end_of_storage
- this->_M_impl._M_start);
@@ -149,14 +150,15 @@ namespace _GLIBCXX_STD
else if (size() >= __xlen)
{
iterator __i(copy(__x.begin(), __x.end(), begin()));
- std::_Destroy(__i, end());
+ std::_Destroy(__i, end(), this->get_allocator());
}
else
{
std::copy(__x.begin(), __x.begin() + size(),
this->_M_impl._M_start);
- std::uninitialized_copy(__x.begin() + size(),
- __x.end(), this->_M_impl._M_finish);
+ std::__uninitialized_copy_a(__x.begin() + size(),
+ __x.end(), this->_M_impl._M_finish,
+ this->get_allocator());
}
this->_M_impl._M_finish = this->_M_impl._M_start + __xlen;
}
@@ -176,10 +178,10 @@ namespace _GLIBCXX_STD
else if (__n > size())
{
std::fill(begin(), end(), __val);
- this->_M_impl._M_finish = std::uninitialized_fill_n(this->
- _M_impl._M_finish,
- __n - size(),
- __val);
+ std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
+ __n - size(), __val,
+ this->get_allocator());
+ this->_M_impl._M_finish += __n - size();
}
else
erase(fill_n(begin(), __n, __val), end());
@@ -193,7 +195,7 @@ namespace _GLIBCXX_STD
input_iterator_tag)
{
iterator __cur(begin());
- for ( ; __first != __last && __cur != end(); ++__cur, ++__first)
+ for (; __first != __last && __cur != end(); ++__cur, ++__first)
*__cur = *__first;
if (__first == __last)
erase(__cur, end());
@@ -204,16 +206,17 @@ namespace _GLIBCXX_STD
template<typename _Tp, typename _Alloc>
template<typename _ForwardIterator>
void
- vector<_Tp,_Alloc>::
+ vector<_Tp, _Alloc>::
_M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
forward_iterator_tag)
{
- size_type __len = std::distance(__first, __last);
+ const size_type __len = std::distance(__first, __last);
if (__len > capacity())
{
pointer __tmp(_M_allocate_and_copy(__len, __first, __last));
- std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish);
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ this->get_allocator());
_M_deallocate(this->_M_impl._M_start,
this->_M_impl._M_end_of_storage
- this->_M_impl._M_start);
@@ -225,7 +228,7 @@ namespace _GLIBCXX_STD
{
iterator __new_finish(copy(__first, __last,
this->_M_impl._M_start));
- std::_Destroy(__new_finish, end());
+ std::_Destroy(__new_finish, end(), this->get_allocator());
this->_M_impl._M_finish = __new_finish.base();
}
else
@@ -233,22 +236,22 @@ namespace _GLIBCXX_STD
_ForwardIterator __mid = __first;
std::advance(__mid, size());
std::copy(__first, __mid, this->_M_impl._M_start);
- this->_M_impl._M_finish = std::uninitialized_copy(__mid,
- __last,
- this->_M_impl.
- _M_finish);
+ this->_M_impl._M_finish =
+ std::__uninitialized_copy_a(__mid, __last,
+ this->_M_impl._M_finish,
+ this->get_allocator());
}
}
template<typename _Tp, typename _Alloc>
void
- vector<_Tp,_Alloc>::
+ vector<_Tp, _Alloc>::
_M_insert_aux(iterator __position, const _Tp& __x)
{
if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
{
- std::_Construct(this->_M_impl._M_finish,
- *(this->_M_impl._M_finish - 1));
+ this->_M_impl.construct(this->_M_impl._M_finish,
+ *(this->_M_impl._M_finish - 1));
++this->_M_impl._M_finish;
_Tp __x_copy = __x;
std::copy_backward(__position,
@@ -264,24 +267,26 @@ namespace _GLIBCXX_STD
iterator __new_finish(__new_start);
try
{
- __new_finish = std::uninitialized_copy(iterator(this->
- _M_impl._M_start),
- __position,
- __new_start);
- std::_Construct(__new_finish.base(), __x);
+ __new_finish =
+ std::__uninitialized_copy_a(iterator(this->_M_impl._M_start),
+ __position,
+ __new_start,
+ this->get_allocator());
+ this->_M_impl.construct(__new_finish.base(), __x);
++__new_finish;
- __new_finish = std::uninitialized_copy(__position,
- iterator(this->_M_impl.
- _M_finish),
- __new_finish);
+ __new_finish =
+ std::__uninitialized_copy_a(__position,
+ iterator(this->_M_impl._M_finish),
+ __new_finish,
+ this->get_allocator());
}
catch(...)
{
- std::_Destroy(__new_start,__new_finish);
+ std::_Destroy(__new_start, __new_finish, this->get_allocator());
_M_deallocate(__new_start.base(),__len);
__throw_exception_again;
}
- std::_Destroy(begin(), end());
+ std::_Destroy(begin(), end(), this->get_allocator());
_M_deallocate(this->_M_impl._M_start,
this->_M_impl._M_end_of_storage
- this->_M_impl._M_start);
@@ -293,7 +298,7 @@ namespace _GLIBCXX_STD
template<typename _Tp, typename _Alloc>
void
- vector<_Tp,_Alloc>::
+ vector<_Tp, _Alloc>::
_M_fill_insert(iterator __position, size_type __n, const value_type& __x)
{
if (__n != 0)
@@ -306,9 +311,10 @@ namespace _GLIBCXX_STD
iterator __old_finish(this->_M_impl._M_finish);
if (__elems_after > __n)
{
- std::uninitialized_copy(this->_M_impl._M_finish - __n,
- this->_M_impl._M_finish,
- this->_M_impl._M_finish);
+ std::__uninitialized_copy_a(this->_M_impl._M_finish - __n,
+ this->_M_impl._M_finish,
+ this->_M_impl._M_finish,
+ this->get_allocator());
this->_M_impl._M_finish += __n;
std::copy_backward(__position, __old_finish - __n,
__old_finish);
@@ -316,12 +322,14 @@ namespace _GLIBCXX_STD
}
else
{
- std::uninitialized_fill_n(this->_M_impl._M_finish,
- __n - __elems_after,
- __x_copy);
+ std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
+ __n - __elems_after,
+ __x_copy,
+ this->get_allocator());
this->_M_impl._M_finish += __n - __elems_after;
- std::uninitialized_copy(__position, __old_finish,
- this->_M_impl._M_finish);
+ std::__uninitialized_copy_a(__position, __old_finish,
+ this->_M_impl._M_finish,
+ this->get_allocator());
this->_M_impl._M_finish += __elems_after;
std::fill(__position, __old_finish, __x_copy);
}
@@ -334,20 +342,26 @@ namespace _GLIBCXX_STD
iterator __new_finish(__new_start);
try
{
- __new_finish = std::uninitialized_copy(begin(), __position,
- __new_start);
- __new_finish = std::uninitialized_fill_n(__new_finish, __n,
- __x);
- __new_finish = std::uninitialized_copy(__position, end(),
- __new_finish);
+ __new_finish =
+ std::__uninitialized_copy_a(begin(), __position,
+ __new_start,
+ this->get_allocator());
+ std::__uninitialized_fill_n_a(__new_finish, __n, __x,
+ this->get_allocator());
+ __new_finish += __n;
+ __new_finish =
+ std::__uninitialized_copy_a(__position, end(), __new_finish,
+ this->get_allocator());
}
catch(...)
{
- std::_Destroy(__new_start,__new_finish);
- _M_deallocate(__new_start.base(),__len);
+ std::_Destroy(__new_start, __new_finish,
+ this->get_allocator());
+ _M_deallocate(__new_start.base(), __len);
__throw_exception_again;
}
- std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish);
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ this->get_allocator());
_M_deallocate(this->_M_impl._M_start,
this->_M_impl._M_end_of_storage
- this->_M_impl._M_start);
@@ -360,11 +374,11 @@ namespace _GLIBCXX_STD
template<typename _Tp, typename _Alloc> template<typename _InputIterator>
void
- vector<_Tp,_Alloc>::
+ vector<_Tp, _Alloc>::
_M_range_insert(iterator __pos, _InputIterator __first,
_InputIterator __last, input_iterator_tag)
{
- for ( ; __first != __last; ++__first)
+ for (; __first != __last; ++__first)
{
__pos = insert(__pos, *__first);
++__pos;
@@ -374,13 +388,13 @@ namespace _GLIBCXX_STD
template<typename _Tp, typename _Alloc>
template<typename _ForwardIterator>
void
- vector<_Tp,_Alloc>::
+ vector<_Tp, _Alloc>::
_M_range_insert(iterator __position,_ForwardIterator __first,
_ForwardIterator __last, forward_iterator_tag)
{
if (__first != __last)
{
- size_type __n = std::distance(__first, __last);
+ const size_type __n = std::distance(__first, __last);
if (size_type(this->_M_impl._M_end_of_storage
- this->_M_impl._M_finish) >= __n)
{
@@ -388,9 +402,10 @@ namespace _GLIBCXX_STD
iterator __old_finish(this->_M_impl._M_finish);
if (__elems_after > __n)
{
- std::uninitialized_copy(this->_M_impl._M_finish - __n,
- this->_M_impl._M_finish,
- this->_M_impl._M_finish);
+ std::__uninitialized_copy_a(this->_M_impl._M_finish - __n,
+ this->_M_impl._M_finish,
+ this->_M_impl._M_finish,
+ this->get_allocator());
this->_M_impl._M_finish += __n;
std::copy_backward(__position, __old_finish - __n,
__old_finish);
@@ -400,11 +415,13 @@ namespace _GLIBCXX_STD
{
_ForwardIterator __mid = __first;
std::advance(__mid, __elems_after);
- std::uninitialized_copy(__mid, __last,
- this->_M_impl._M_finish);
+ std::__uninitialized_copy_a(__mid, __last,
+ this->_M_impl._M_finish,
+ this->get_allocator());
this->_M_impl._M_finish += __n - __elems_after;
- std::uninitialized_copy(__position, __old_finish,
- this->_M_impl._M_finish);
+ std::__uninitialized_copy_a(__position, __old_finish,
+ this->_M_impl._M_finish,
+ this->get_allocator());
this->_M_impl._M_finish += __elems_after;
std::copy(__first, __mid, __position);
}
@@ -417,26 +434,29 @@ namespace _GLIBCXX_STD
iterator __new_finish(__new_start);
try
{
- __new_finish = std::uninitialized_copy(iterator(this->
- _M_impl.
- _M_start),
- __position,
- __new_start);
- __new_finish = std::uninitialized_copy(__first, __last,
- __new_finish);
- __new_finish = std::uninitialized_copy(__position,
- iterator(this->
- _M_impl.
- _M_finish),
- __new_finish);
+ __new_finish =
+ std::__uninitialized_copy_a(iterator(this->_M_impl._M_start),
+ __position,
+ __new_start,
+ this->get_allocator());
+ __new_finish =
+ std::__uninitialized_copy_a(__first, __last, __new_finish,
+ this->get_allocator());
+ __new_finish =
+ std::__uninitialized_copy_a(__position,
+ iterator(this->_M_impl._M_finish),
+ __new_finish,
+ this->get_allocator());
}
catch(...)
{
- std::_Destroy(__new_start,__new_finish);
+ std::_Destroy(__new_start,__new_finish,
+ this->get_allocator());
_M_deallocate(__new_start.base(), __len);
__throw_exception_again;
}
- std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish);
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ this->get_allocator());
_M_deallocate(this->_M_impl._M_start,
this->_M_impl._M_end_of_storage
- this->_M_impl._M_start);
diff --git a/libstdc++-v3/include/c_std/std_cwchar.h b/libstdc++-v3/include/c_std/std_cwchar.h
index e3b7cdd5870..d9e11e95a9a 100644
--- a/libstdc++-v3/include/c_std/std_cwchar.h
+++ b/libstdc++-v3/include/c_std/std_cwchar.h
@@ -223,7 +223,7 @@ namespace std
using ::wcsstr;
inline wchar_t*
- wcsstr(wchar_t* __s1, wchar_t* __s2)
+ wcsstr(wchar_t* __s1, const wchar_t* __s2)
{ return wcsstr(const_cast<const wchar_t*>(__s1), __s2); }
using ::wmemchr;
diff --git a/libstdc++-v3/include/debug/map.h b/libstdc++-v3/include/debug/map.h
index 2a6794b31e0..017158479d1 100644
--- a/libstdc++-v3/include/debug/map.h
+++ b/libstdc++-v3/include/debug/map.h
@@ -163,7 +163,7 @@ namespace __gnu_debug_def
void
insert(_InputIterator __first, _InputIterator __last)
{
- __glibcxx_valid_range(__first, __last);
+ __glibcxx_check_valid_range(__first, __last);
_Base::insert(__first, __last);
}
diff --git a/libstdc++-v3/include/debug/safe_base.h b/libstdc++-v3/include/debug/safe_base.h
index fb62620f06a..a1af33ac5f7 100644
--- a/libstdc++-v3/include/debug/safe_base.h
+++ b/libstdc++-v3/include/debug/safe_base.h
@@ -98,7 +98,7 @@ namespace __gnu_debug
_Safe_iterator_base&
operator=(const _Safe_iterator_base&);
- explicit
+ explicit
_Safe_iterator_base(const _Safe_iterator_base&);
~_Safe_iterator_base() { this->_M_detach(); }
@@ -164,25 +164,6 @@ namespace __gnu_debug
: _M_iterators(0), _M_const_iterators(0), _M_version(1)
{ }
- explicit
- _Safe_sequence_base(const _Safe_sequence_base& __seq)
- : _M_iterators(__seq._M_iterators),
- _M_const_iterators(__seq._M_const_iterators),
- _M_version(__seq._M_version)
- { }
-
- _Safe_sequence_base&
- operator=(const _Safe_sequence_base& __seq)
- {
- if (&__seq != this)
- {
- _M_iterators = __seq._M_iterators;
- _M_const_iterators = __seq._M_const_iterators;
- _M_version = __seq._M_version;
- }
- return *this;
- }
-
/** Notify all iterators that reference this sequence that the
sequence is being destroyed. */
~_Safe_sequence_base()
diff --git a/libstdc++-v3/include/ext/hashtable.h b/libstdc++-v3/include/ext/hashtable.h
index 15b04348d1b..6f3aee48bf4 100644
--- a/libstdc++-v3/include/ext/hashtable.h
+++ b/libstdc++-v3/include/ext/hashtable.h
@@ -281,7 +281,7 @@ namespace __gnu_cxx
typedef _Hashtable_node<_Val> _Node;
public:
- typedef _Alloc allocator_type;
+ typedef typename _Alloc::template rebind<value_type>::other allocator_type;
allocator_type
get_allocator() const
{ return _M_node_allocator; }
@@ -607,7 +607,7 @@ namespace __gnu_cxx
__n->_M_next = 0;
try
{
- _Construct(&__n->_M_val, __obj);
+ this->get_allocator().construct(&__n->_M_val, __obj);
return __n;
}
catch(...)
@@ -620,7 +620,7 @@ namespace __gnu_cxx
void
_M_delete_node(_Node* __n)
{
- _Destroy(&__n->_M_val);
+ this->get_allocator().destroy(&__n->_M_val);
_M_put_node(__n);
}
diff --git a/libstdc++-v3/include/ext/memory b/libstdc++-v3/include/ext/memory
index adb15ce2992..dc04657180d 100644
--- a/libstdc++-v3/include/ext/memory
+++ b/libstdc++-v3/include/ext/memory
@@ -128,6 +128,40 @@ namespace __gnu_cxx
{ return __uninitialized_copy_n(__first, __count, __result,
__iterator_category(__first)); }
+
+ // An alternative version of uninitialized_copy_n that constructs
+ // and destroys objects with a user-provided allocator.
+ template<typename _InputIter, typename _Size, typename _ForwardIter,
+ typename _Allocator>
+ pair<_InputIter, _ForwardIter>
+ __uninitialized_copy_n_a(_InputIter __first, _Size __count,
+ _ForwardIter __result,
+ _Allocator __alloc)
+ {
+ _ForwardIter __cur = __result;
+ try
+ {
+ for (; __count > 0 ; --__count, ++__first, ++__cur)
+ __alloc.construct(&*__cur, *__first);
+ return pair<_InputIter, _ForwardIter>(__first, __cur);
+ }
+ catch(...)
+ {
+ std::_Destroy(__result, __cur, __alloc);
+ __throw_exception_again;
+ }
+ }
+
+ template<typename _InputIter, typename _Size, typename _ForwardIter,
+ typename _Tp>
+ inline pair<_InputIter, _ForwardIter>
+ __uninitialized_copy_n_a(_InputIter __first, _Size __count,
+ _ForwardIter __result,
+ std::allocator<_Tp>)
+ {
+ return uninitialized_copy_n(__first, __count, __result);
+ }
+
/**
* This class provides similar behavior and semantics of the standard
* functions get_temporary_buffer() and return_temporary_buffer(), but
diff --git a/libstdc++-v3/include/ext/mt_allocator.h b/libstdc++-v3/include/ext/mt_allocator.h
index 8812c2df44b..b7afdde98ff 100644
--- a/libstdc++-v3/include/ext/mt_allocator.h
+++ b/libstdc++-v3/include/ext/mt_allocator.h
@@ -139,8 +139,12 @@ namespace __gnu_cxx
// See http://gcc.gnu.org/ml/libstdc++/2001-07/msg00077.html
size_t _M_chunk_size;
- // The maximum number of supported threads. Our Linux 2.4.18
- // reports 4070 in /proc/sys/kernel/threads-max
+ // The maximum number of supported threads. For
+ // single-threaded operation, use one. Maximum values will
+ // vary depending on details of the underlying system. (For
+ // instance, Linux 2.4.18 reports 4070 in
+ // /proc/sys/kernel/threads-max, while Linux 2.6.6 reports
+ // 65534)
size_t _M_max_threads;
// Each time a deallocation occurs in a threaded application
@@ -172,6 +176,17 @@ namespace __gnu_cxx
{ }
};
+ static const _Tune
+ _S_get_options()
+ { return _S_options; }
+
+ static void
+ _S_set_options(_Tune __t)
+ {
+ if (!_S_init)
+ _S_options = __t;
+ }
+
private:
// We need to create the initial lists and set up some variables
// before we can answer to the first request for memory.
@@ -186,17 +201,6 @@ namespace __gnu_cxx
// Configuration options.
static _Tune _S_options;
- static const _Tune
- _S_get_options()
- { return _S_options; }
-
- static void
- _S_set_options(_Tune __t)
- {
- if (!_S_init)
- _S_options = __t;
- }
-
// Using short int as type for the binmap implies we are never
// caching blocks larger than 65535 with this allocator
typedef unsigned short int _Binmap_type;
@@ -488,8 +492,25 @@ namespace __gnu_cxx
__mt_alloc<_Tp>::
_S_initialize()
{
- if (_S_options._M_force_new)
- return;
+ // This method is called on the first allocation (when _S_init is still
+ // false) to create the bins.
+
+ // Ensure that the static initialization of _S_options has
+ // happened. This depends on (a) _M_align == 0 being an invalid
+ // value that is only present at startup, and (b) the real
+ // static initialization that happens later not actually
+ // changing anything.
+ if (_S_options._M_align == 0)
+ new (&_S_options) _Tune;
+
+ // _M_force_new must not change after the first allocate(),
+ // which in turn calls this method, so if it's false, it's false
+ // forever and we don't need to return here ever again.
+ if (_S_options._M_force_new)
+ {
+ _S_init = true;
+ return;
+ }
// Calculate the number of bins required based on _M_max_bytes.
// _S_bin_size is statically-initialized to one.
diff --git a/libstdc++-v3/include/ext/pool_allocator.h b/libstdc++-v3/include/ext/pool_allocator.h
index de6299be8cf..eec79e7070a 100644
--- a/libstdc++-v3/include/ext/pool_allocator.h
+++ b/libstdc++-v3/include/ext/pool_allocator.h
@@ -100,7 +100,7 @@ namespace __gnu_cxx
_Obj* volatile*
_M_get_free_list(size_t __bytes);
- __gthread_mutex_t&
+ mutex_type&
_M_get_mutex();
// Returns an object of size __n, and optionally adds to size __n
diff --git a/libstdc++-v3/include/ext/rope b/libstdc++-v3/include/ext/rope
index 8cfcde9534e..ff9e3bd277b 100644
--- a/libstdc++-v3/include/ext/rope
+++ b/libstdc++-v3/include/ext/rope
@@ -1642,7 +1642,7 @@ protected:
return 0;
_CharT* __buf = __a.allocate(_S_rounded_up_size(__size));
- uninitialized_copy_n(__s, __size, __buf);
+ __uninitialized_copy_n_a(__s, __size, __buf, __a);
_S_cond_store_eos(__buf[__size]);
try
{ return _S_new_RopeLeaf(__buf, __size, __a); }
@@ -1790,7 +1790,7 @@ protected:
{
_CharT* __buf = this->_Data_allocate(_S_rounded_up_size(1));
- std::_Construct(__buf, __c);
+ get_allocator().construct(__buf, __c);
try
{ this->_M_tree_ptr = _S_new_RopeLeaf(__buf, 1, __a); }
catch(...)
@@ -1905,7 +1905,7 @@ protected:
void
copy(_CharT* __buffer) const
{
- _Destroy(__buffer, __buffer + size());
+ _Destroy(__buffer, __buffer + size(), get_allocator());
_S_flatten(this->_M_tree_ptr, __buffer);
}
@@ -1920,7 +1920,7 @@ protected:
size_t __size = size();
size_t __len = (__pos + __n > __size? __size - __pos : __n);
- _Destroy(__buffer, __buffer + __len);
+ _Destroy(__buffer, __buffer + __len, get_allocator());
_S_flatten(this->_M_tree_ptr, __pos, __len, __buffer);
return __len;
}
diff --git a/libstdc++-v3/include/ext/ropeimpl.h b/libstdc++-v3/include/ext/ropeimpl.h
index e9f927164c6..7463196c0e9 100644
--- a/libstdc++-v3/include/ext/ropeimpl.h
+++ b/libstdc++-v3/include/ext/ropeimpl.h
@@ -346,7 +346,7 @@ namespace __gnu_cxx
if (0 != __cstr)
{
size_t __size = this->_M_size + 1;
- _Destroy(__cstr, __cstr + __size);
+ _Destroy(__cstr, __cstr + __size, get_allocator());
this->_Data_deallocate(__cstr, __size);
}
}
@@ -357,7 +357,7 @@ namespace __gnu_cxx
_S_free_string(_CharT* __s, size_t __n, allocator_type __a)
{
if (!_S_is_basic_char_type((_CharT*)0))
- _Destroy(__s, __s + __n);
+ _Destroy(__s, __s + __n, __a);
// This has to be a static member, so this gets a bit messy
__a.deallocate(__s,
@@ -1547,7 +1547,8 @@ namespace __gnu_cxx
else
{
__rest_buffer = this->_Data_allocate(_S_rounded_up_size(__rest));
- uninitialized_fill_n(__rest_buffer, __rest, __c);
+ __uninitialized_fill_n_a(__rest_buffer, __rest, __c,
+ get_allocator());
_S_cond_store_eos(__rest_buffer[__rest]);
try
{ __remainder = _S_new_RopeLeaf(__rest_buffer, __rest, __a); }
@@ -1564,7 +1565,8 @@ namespace __gnu_cxx
this->_Data_allocate(_S_rounded_up_size(__exponentiate_threshold));
_RopeLeaf* __base_leaf;
rope __base_rope;
- uninitialized_fill_n(__base_buffer, __exponentiate_threshold, __c);
+ __uninitialized_fill_n_a(__base_buffer, __exponentiate_threshold, __c,
+ get_allocator());
_S_cond_store_eos(__base_buffer[__exponentiate_threshold]);
try
{
diff --git a/libstdc++-v3/include/ext/slist b/libstdc++-v3/include/ext/slist
index 945a503e00e..470e7a98718 100644
--- a/libstdc++-v3/include/ext/slist
+++ b/libstdc++-v3/include/ext/slist
@@ -260,7 +260,7 @@ namespace __gnu_cxx
_Slist_node<_Tp>* __next = (_Slist_node<_Tp>*) (__pos->_M_next);
_Slist_node_base* __next_next = __next->_M_next;
__pos->_M_next = __next_next;
- _Destroy(&__next->_M_data);
+ get_allocator().destroy(&__next->_M_data);
_M_put_node(__next);
return __next_next;
}
@@ -277,7 +277,7 @@ namespace __gnu_cxx
{
_Slist_node<_Tp>* __tmp = __cur;
__cur = (_Slist_node<_Tp>*) __cur->_M_next;
- _Destroy(&__tmp->_M_data);
+ get_allocator().destroy(&__tmp->_M_data);
_M_put_node(__tmp);
}
__before_first->_M_next = __last_node;
@@ -327,7 +327,7 @@ namespace __gnu_cxx
_Node* __node = this->_M_get_node();
try
{
- _Construct(&__node->_M_data, __x);
+ get_allocator().construct(&__node->_M_data, __x);
__node->_M_next = 0;
}
catch(...)
@@ -344,7 +344,7 @@ namespace __gnu_cxx
_Node* __node = this->_M_get_node();
try
{
- _Construct(&__node->_M_data);
+ get_allocator().construct(&__node->_M_data);
__node->_M_next = 0;
}
catch(...)
@@ -490,7 +490,7 @@ namespace __gnu_cxx
{
_Node* __node = (_Node*) this->_M_head._M_next;
this->_M_head._M_next = __node->_M_next;
- _Destroy(&__node->_M_data);
+ get_allocator().destroy(&__node->_M_data);
this->_M_put_node(__node);
}
diff --git a/libstdc++-v3/include/std/std_valarray.h b/libstdc++-v3/include/std/std_valarray.h
index b893b335415..08ea90971a9 100644
--- a/libstdc++-v3/include/std/std_valarray.h
+++ b/libstdc++-v3/include/std/std_valarray.h
@@ -147,7 +147,8 @@ namespace std
valarray(const indirect_array<_Tp>&);
template<class _Dom>
- valarray(const _Expr<_Dom,_Tp>& __e);
+ valarray(const _Expr<_Dom, _Tp>& __e);
+
~valarray();
// _lib.valarray.assign_ assignment:
@@ -211,7 +212,7 @@ namespace std
valarray<_Tp>& operator=(const indirect_array<_Tp>&);
template<class _Dom> valarray<_Tp>&
- operator= (const _Expr<_Dom,_Tp>&);
+ operator= (const _Expr<_Dom, _Tp>&);
// _lib.valarray.access_ element access:
/**
@@ -237,7 +238,7 @@ namespace std
* @param s The source slice.
* @return New valarray containing elements in @a s.
*/
- _Expr<_SClos<_ValArray,_Tp>, _Tp> operator[](slice) const;
+ _Expr<_SClos<_ValArray, _Tp>, _Tp> operator[](slice) const;
/**
* @brief Return a reference to an array subset.
@@ -260,7 +261,7 @@ namespace std
* @param s The source slice.
* @return Slice_array referencing elements indicated by @a s.
*/
- _Expr<_GClos<_ValArray,_Tp>, _Tp> operator[](const gslice&) const;
+ _Expr<_GClos<_ValArray, _Tp>, _Tp> operator[](const gslice&) const;
/**
* @brief Return a reference to an array subset.
@@ -286,7 +287,7 @@ namespace std
* @param m The valarray bitmask.
* @return New valarray containing elements indicated by @a m.
*/
- valarray<_Tp> operator[](const valarray<bool>&) const;
+ valarray<_Tp> operator[](const valarray<bool>&) const;
/**
* @brief Return a reference to an array subset.
@@ -405,26 +406,25 @@ namespace std
valarray<_Tp>& operator>>=(const valarray<_Tp>&);
template<class _Dom>
- valarray<_Tp>& operator*=(const _Expr<_Dom,_Tp>&);
+ valarray<_Tp>& operator*=(const _Expr<_Dom, _Tp>&);
template<class _Dom>
- valarray<_Tp>& operator/=(const _Expr<_Dom,_Tp>&);
+ valarray<_Tp>& operator/=(const _Expr<_Dom, _Tp>&);
template<class _Dom>
- valarray<_Tp>& operator%=(const _Expr<_Dom,_Tp>&);
+ valarray<_Tp>& operator%=(const _Expr<_Dom, _Tp>&);
template<class _Dom>
- valarray<_Tp>& operator+=(const _Expr<_Dom,_Tp>&);
+ valarray<_Tp>& operator+=(const _Expr<_Dom, _Tp>&);
template<class _Dom>
- valarray<_Tp>& operator-=(const _Expr<_Dom,_Tp>&);
+ valarray<_Tp>& operator-=(const _Expr<_Dom, _Tp>&);
template<class _Dom>
- valarray<_Tp>& operator^=(const _Expr<_Dom,_Tp>&);
+ valarray<_Tp>& operator^=(const _Expr<_Dom, _Tp>&);
template<class _Dom>
- valarray<_Tp>& operator|=(const _Expr<_Dom,_Tp>&);
+ valarray<_Tp>& operator|=(const _Expr<_Dom, _Tp>&);
template<class _Dom>
- valarray<_Tp>& operator&=(const _Expr<_Dom,_Tp>&);
+ valarray<_Tp>& operator&=(const _Expr<_Dom, _Tp>&);
template<class _Dom>
- valarray<_Tp>& operator<<=(const _Expr<_Dom,_Tp>&);
+ valarray<_Tp>& operator<<=(const _Expr<_Dom, _Tp>&);
template<class _Dom>
- valarray<_Tp>& operator>>=(const _Expr<_Dom,_Tp>&);
-
+ valarray<_Tp>& operator>>=(const _Expr<_Dom, _Tp>&);
// _lib.valarray.members_ member functions:
/// Return the number of elements in array.
@@ -444,9 +444,6 @@ namespace std
/// Return the maximum element using operator<().
_Tp max() const;
- // // FIXME: Extension
- // _Tp product () const;
-
/**
* @brief Return a shifted array.
*
@@ -491,7 +488,7 @@ namespace std
* @param func Function of Tp returning Tp to apply.
* @return New valarray with transformed elements.
*/
- _Expr<_ValFunClos<_ValArray,_Tp>,_Tp> apply(_Tp func(_Tp)) const;
+ _Expr<_ValFunClos<_ValArray, _Tp>, _Tp> apply(_Tp func(_Tp)) const;
/**
* @brief Apply a function to the array.
@@ -503,7 +500,7 @@ namespace std
* @param func Function of const Tp& returning Tp to apply.
* @return New valarray with transformed elements.
*/
- _Expr<_RefFunClos<_ValArray,_Tp>,_Tp> apply(_Tp func(const _Tp&)) const;
+ _Expr<_RefFunClos<_ValArray, _Tp>, _Tp> apply(_Tp func(const _Tp&)) const;
/**
* @brief Resize array.
@@ -528,7 +525,7 @@ namespace std
valarray<_Tp>::operator[](size_t __i) const
{
__glibcxx_requires_subscript(__i);
- return _M_data[__i];
+ return _M_data[__i];
}
template<typename _Tp>
@@ -536,7 +533,7 @@ namespace std
valarray<_Tp>::operator[](size_t __i)
{
__glibcxx_requires_subscript(__i);
- return _M_data[__i];
+ return _M_data[__i];
}
} // std::
@@ -558,19 +555,19 @@ namespace std
template<typename _Tp>
inline
valarray<_Tp>::valarray(size_t __n)
- : _M_size(__n), _M_data(__valarray_get_storage<_Tp>(__n))
+ : _M_size(__n), _M_data(__valarray_get_storage<_Tp>(__n))
{ std::__valarray_default_construct(_M_data, _M_data + __n); }
template<typename _Tp>
inline
valarray<_Tp>::valarray(const _Tp& __t, size_t __n)
- : _M_size(__n), _M_data(__valarray_get_storage<_Tp>(__n))
+ : _M_size(__n), _M_data(__valarray_get_storage<_Tp>(__n))
{ std::__valarray_fill_construct(_M_data, _M_data + __n, __t); }
template<typename _Tp>
inline
valarray<_Tp>::valarray(const _Tp* __restrict__ __p, size_t __n)
- : _M_size(__n), _M_data(__valarray_get_storage<_Tp>(__n))
+ : _M_size(__n), _M_data(__valarray_get_storage<_Tp>(__n))
{
_GLIBCXX_DEBUG_ASSERT(__p != 0 || __n == 0);
std::__valarray_copy_construct(__p, __p + __n, _M_data);
@@ -579,13 +576,14 @@ namespace std
template<typename _Tp>
inline
valarray<_Tp>::valarray(const valarray<_Tp>& __v)
- : _M_size(__v._M_size), _M_data(__valarray_get_storage<_Tp>(__v._M_size))
- { std::__valarray_copy_construct(__v._M_data, __v._M_data + _M_size, _M_data); }
+ : _M_size(__v._M_size), _M_data(__valarray_get_storage<_Tp>(__v._M_size))
+ { std::__valarray_copy_construct(__v._M_data, __v._M_data + _M_size,
+ _M_data); }
template<typename _Tp>
inline
valarray<_Tp>::valarray(const slice_array<_Tp>& __sa)
- : _M_size(__sa._M_sz), _M_data(__valarray_get_storage<_Tp>(__sa._M_sz))
+ : _M_size(__sa._M_sz), _M_data(__valarray_get_storage<_Tp>(__sa._M_sz))
{
std::__valarray_copy
(__sa._M_array, __sa._M_sz, __sa._M_stride, _Array<_Tp>(_M_data));
@@ -594,8 +592,8 @@ namespace std
template<typename _Tp>
inline
valarray<_Tp>::valarray(const gslice_array<_Tp>& __ga)
- : _M_size(__ga._M_index.size()),
- _M_data(__valarray_get_storage<_Tp>(_M_size))
+ : _M_size(__ga._M_index.size()),
+ _M_data(__valarray_get_storage<_Tp>(_M_size))
{
std::__valarray_copy
(__ga._M_array, _Array<size_t>(__ga._M_index),
@@ -605,7 +603,7 @@ namespace std
template<typename _Tp>
inline
valarray<_Tp>::valarray(const mask_array<_Tp>& __ma)
- : _M_size(__ma._M_sz), _M_data(__valarray_get_storage<_Tp>(__ma._M_sz))
+ : _M_size(__ma._M_sz), _M_data(__valarray_get_storage<_Tp>(__ma._M_sz))
{
std::__valarray_copy
(__ma._M_array, __ma._M_mask, _Array<_Tp>(_M_data), _M_size);
@@ -614,7 +612,7 @@ namespace std
template<typename _Tp>
inline
valarray<_Tp>::valarray(const indirect_array<_Tp>& __ia)
- : _M_size(__ia._M_sz), _M_data(__valarray_get_storage<_Tp>(__ia._M_sz))
+ : _M_size(__ia._M_sz), _M_data(__valarray_get_storage<_Tp>(__ia._M_sz))
{
std::__valarray_copy
(__ia._M_array, __ia._M_index, _Array<_Tp>(_M_data), _M_size);
@@ -623,7 +621,7 @@ namespace std
template<typename _Tp> template<class _Dom>
inline
valarray<_Tp>::valarray(const _Expr<_Dom, _Tp>& __e)
- : _M_size(__e.size()), _M_data(__valarray_get_storage<_Tp>(_M_size))
+ : _M_size(__e.size()), _M_data(__valarray_get_storage<_Tp>(_M_size))
{ std::__valarray_copy(__e, _M_size, _Array<_Tp>(_M_data)); }
template<typename _Tp>
@@ -711,9 +709,7 @@ namespace std
template<typename _Tp>
inline slice_array<_Tp>
valarray<_Tp>::operator[](slice __s)
- {
- return slice_array<_Tp>(_Array<_Tp>(_M_data), __s);
- }
+ { return slice_array<_Tp>(_Array<_Tp>(_M_data), __s); }
template<typename _Tp>
inline _Expr<_GClos<_ValArray,_Tp>, _Tp>
@@ -784,13 +780,6 @@ namespace std
return std::__valarray_sum(_M_data, _M_data + _M_size);
}
-// template<typename _Tp>
-// inline _Tp
-// valarray<_Tp>::product () const
-// {
-// return __valarray_product(_M_data, _M_data + _M_size);
-// }
-
template <class _Tp>
inline valarray<_Tp>
valarray<_Tp>::shift(int __n) const
@@ -805,16 +794,19 @@ namespace std
std::__valarray_default_construct(__a, __a + __n);
else
{
- std::__valarray_copy_construct(_M_data+__n, _M_data + _M_size, __a);
- std::__valarray_default_construct(__a+_M_size-__n, __a + _M_size);
+ std::__valarray_copy_construct(_M_data + __n,
+ _M_data + _M_size, __a);
+ std::__valarray_default_construct(__a + _M_size -__n,
+ __a + _M_size);
}
}
else // __n < 0: shift right
{
- std::__valarray_copy_construct (_M_data, _M_data+_M_size+__n, __a-__n);
+ std::__valarray_copy_construct (_M_data, _M_data + _M_size + __n,
+ __a - __n);
std::__valarray_default_construct(__a, __a - __n);
}
- return valarray<_Tp> (__a, _M_size);
+ return valarray<_Tp>(__a, _M_size);
}
template <class _Tp>
@@ -827,13 +819,15 @@ namespace std
std::__valarray_copy_construct(_M_data, _M_data + _M_size, __a);
else if (__n > 0) // cshift left
{
- std::__valarray_copy_construct(_M_data, _M_data+__n, __a+_M_size-__n);
- std::__valarray_copy_construct(_M_data+__n, _M_data + _M_size, __a);
+ std::__valarray_copy_construct(_M_data, _M_data + __n,
+ __a + _M_size - __n);
+ std::__valarray_copy_construct(_M_data + __n, _M_data + _M_size,
+ __a);
}
else // cshift right
{
std::__valarray_copy_construct
- (_M_data + _M_size+__n, _M_data + _M_size, __a);
+ (_M_data + _M_size + __n, _M_data + _M_size, __a);
std::__valarray_copy_construct
(_M_data, _M_data + _M_size+__n, __a - __n);
}
@@ -862,7 +856,7 @@ namespace std
valarray<_Tp>::min() const
{
_GLIBCXX_DEBUG_ASSERT(_M_size > 0);
- return *std::min_element (_M_data, _M_data+_M_size);
+ return *std::min_element(_M_data, _M_data+_M_size);
}
template<typename _Tp>
@@ -870,34 +864,34 @@ namespace std
valarray<_Tp>::max() const
{
_GLIBCXX_DEBUG_ASSERT(_M_size > 0);
- return *std::max_element (_M_data, _M_data+_M_size);
+ return *std::max_element(_M_data, _M_data+_M_size);
}
template<class _Tp>
- inline _Expr<_ValFunClos<_ValArray,_Tp>,_Tp>
+ inline _Expr<_ValFunClos<_ValArray, _Tp>, _Tp>
valarray<_Tp>::apply(_Tp func(_Tp)) const
{
- typedef _ValFunClos<_ValArray,_Tp> _Closure;
- return _Expr<_Closure,_Tp>(_Closure(*this, func));
+ typedef _ValFunClos<_ValArray, _Tp> _Closure;
+ return _Expr<_Closure, _Tp>(_Closure(*this, func));
}
template<class _Tp>
- inline _Expr<_RefFunClos<_ValArray,_Tp>,_Tp>
+ inline _Expr<_RefFunClos<_ValArray, _Tp>, _Tp>
valarray<_Tp>::apply(_Tp func(const _Tp &)) const
{
- typedef _RefFunClos<_ValArray,_Tp> _Closure;
- return _Expr<_Closure,_Tp>(_Closure(*this, func));
+ typedef _RefFunClos<_ValArray, _Tp> _Closure;
+ return _Expr<_Closure, _Tp>(_Closure(*this, func));
}
#define _DEFINE_VALARRAY_UNARY_OPERATOR(_Op, _Name) \
template<typename _Tp> \
- inline typename valarray<_Tp>::template _UnaryOp<_Name>::_Rt \
- valarray<_Tp>::operator _Op() const \
- { \
- typedef _UnClos<_Name,_ValArray,_Tp> _Closure; \
- typedef typename __fun<_Name, _Tp>::result_type _Rt; \
- return _Expr<_Closure, _Rt>(_Closure(*this)); \
- }
+ inline typename valarray<_Tp>::template _UnaryOp<_Name>::_Rt \
+ valarray<_Tp>::operator _Op() const \
+ { \
+ typedef _UnClos<_Name, _ValArray, _Tp> _Closure; \
+ typedef typename __fun<_Name, _Tp>::result_type _Rt; \
+ return _Expr<_Closure, _Rt>(_Closure(*this)); \
+ }
_DEFINE_VALARRAY_UNARY_OPERATOR(+, __unary_plus)
_DEFINE_VALARRAY_UNARY_OPERATOR(-, __negate)
@@ -941,7 +935,7 @@ _DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(>>, __shift_right)
#define _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(_Op, _Name) \
template<class _Tp> template<class _Dom> \
inline valarray<_Tp>& \
- valarray<_Tp>::operator _Op##=(const _Expr<_Dom,_Tp>& __e) \
+ valarray<_Tp>::operator _Op##=(const _Expr<_Dom, _Tp>& __e) \
{ \
_Array_augmented_##_Name(_Array<_Tp>(_M_data), __e, _M_size); \
return *this; \
@@ -963,35 +957,35 @@ _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(>>, __shift_right)
#define _DEFINE_BINARY_OPERATOR(_Op, _Name) \
template<typename _Tp> \
- inline _Expr<_BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp>, \
+ inline _Expr<_BinClos<_Name, _ValArray, _ValArray, _Tp, _Tp>, \
typename __fun<_Name, _Tp>::result_type> \
operator _Op(const valarray<_Tp>& __v, const valarray<_Tp>& __w) \
{ \
_GLIBCXX_DEBUG_ASSERT(__v.size() == __w.size()); \
- typedef _BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp> _Closure; \
+ typedef _BinClos<_Name, _ValArray, _ValArray, _Tp, _Tp> _Closure; \
typedef typename __fun<_Name, _Tp>::result_type _Rt; \
return _Expr<_Closure, _Rt>(_Closure(__v, __w)); \
} \
\
template<typename _Tp> \
- inline _Expr<_BinClos<_Name,_ValArray,_Constant,_Tp,_Tp>, \
- typename __fun<_Name, _Tp>::result_type> \
- operator _Op(const valarray<_Tp>& __v, const _Tp& __t) \
- { \
- typedef _BinClos<_Name,_ValArray,_Constant,_Tp,_Tp> _Closure; \
- typedef typename __fun<_Name, _Tp>::result_type _Rt; \
- return _Expr<_Closure, _Rt>(_Closure(__v, __t)); \
- } \
+ inline _Expr<_BinClos<_Name, _ValArray,_Constant, _Tp, _Tp>, \
+ typename __fun<_Name, _Tp>::result_type> \
+ operator _Op(const valarray<_Tp>& __v, const _Tp& __t) \
+ { \
+ typedef _BinClos<_Name, _ValArray, _Constant, _Tp, _Tp> _Closure; \
+ typedef typename __fun<_Name, _Tp>::result_type _Rt; \
+ return _Expr<_Closure, _Rt>(_Closure(__v, __t)); \
+ } \
\
template<typename _Tp> \
- inline _Expr<_BinClos<_Name,_Constant,_ValArray,_Tp,_Tp>, \
- typename __fun<_Name, _Tp>::result_type> \
- operator _Op(const _Tp& __t, const valarray<_Tp>& __v) \
- { \
- typedef _BinClos<_Name,_Constant,_ValArray,_Tp,_Tp> _Closure; \
- typedef typename __fun<_Name, _Tp>::result_type _Rt; \
- return _Expr<_Closure, _Tp>(_Closure(__t, __v)); \
- }
+ inline _Expr<_BinClos<_Name, _Constant, _ValArray, _Tp, _Tp>, \
+ typename __fun<_Name, _Tp>::result_type> \
+ operator _Op(const _Tp& __t, const valarray<_Tp>& __v) \
+ { \
+ typedef _BinClos<_Name, _Constant, _ValArray, _Tp, _Tp> _Closure; \
+ typedef typename __fun<_Name, _Tp>::result_type _Rt; \
+ return _Expr<_Closure, _Tp>(_Closure(__t, __v)); \
+ }
_DEFINE_BINARY_OPERATOR(+, __plus)
_DEFINE_BINARY_OPERATOR(-, __minus)
diff --git a/libstdc++-v3/libmath/Makefile.in b/libstdc++-v3/libmath/Makefile.in
index 02c99a20553..b18e09bc483 100644
--- a/libstdc++-v3/libmath/Makefile.in
+++ b/libstdc++-v3/libmath/Makefile.in
@@ -71,6 +71,7 @@ DIST_SOURCES = $(libmath_la_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
ACLOCAL = @ACLOCAL@
ALLOCATOR_H = @ALLOCATOR_H@
ALLOCATOR_NAME = @ALLOCATOR_NAME@
diff --git a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile.in
index bfe7360f39d..b95b0297843 100644
--- a/libstdc++-v3/libsupc++/Makefile.in
+++ b/libstdc++-v3/libsupc++/Makefile.in
@@ -89,6 +89,7 @@ HEADERS = $(glibcxxinstall_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
ACLOCAL = @ACLOCAL@
ALLOCATOR_H = @ALLOCATOR_H@
ALLOCATOR_NAME = @ALLOCATOR_NAME@
diff --git a/libstdc++-v3/libsupc++/cxxabi.h b/libstdc++-v3/libsupc++/cxxabi.h
index 9e8a090b447..f1f74e7fcd9 100644
--- a/libstdc++-v3/libsupc++/cxxabi.h
+++ b/libstdc++-v3/libsupc++/cxxabi.h
@@ -43,6 +43,7 @@
#define _CXXABI_H 1
#include <stddef.h>
+#include <bits/cxxabi_tweaks.h>
#ifdef __cplusplus
namespace __cxxabiv1
@@ -104,14 +105,6 @@ namespace __cxxabiv1
size_t __padding_size, void (*__destructor) (void*),
void (*__dealloc) (void*, size_t));
-#ifdef __ARM_EABI__
- // The ARM EABI says this is a 32-bit type.
- typedef int __guard;
-#else
- // The ABI requires a 64-bit type.
- __extension__ typedef int __guard __attribute__((mode (__DI__)));
-#endif
-
int
__cxa_guard_acquire(__guard*);
diff --git a/libstdc++-v3/libsupc++/guard.cc b/libstdc++-v3/libsupc++/guard.cc
index fb49f1f081a..4d76c308f4a 100644
--- a/libstdc++-v3/libsupc++/guard.cc
+++ b/libstdc++-v3/libsupc++/guard.cc
@@ -38,21 +38,13 @@ namespace __cxxabiv1
extern "C"
int __cxa_guard_acquire (__guard *g)
{
-#ifdef __ARM_EABI__
- return !(*g & 1);
-#else
- return !*(char *)(g);
-#endif
+ return _GLIBCXX_GUARD_ACQUIRE (g);
}
extern "C"
void __cxa_guard_release (__guard *g)
{
-#ifdef __ARM_EABI__
- *g = 1;
-#else
- *(char *)g = 1;
-#endif
+ _GLIBCXX_GUARD_RELEASE (g);
}
extern "C"
diff --git a/libstdc++-v3/libsupc++/tinfo.cc b/libstdc++-v3/libsupc++/tinfo.cc
index ed6500697f0..62fa4486aeb 100644
--- a/libstdc++-v3/libsupc++/tinfo.cc
+++ b/libstdc++-v3/libsupc++/tinfo.cc
@@ -1,5 +1,5 @@
// Methods for type_info for -*- C++ -*- Run Time Type Identification.
-// Copyright (C) 1994, 1996, 1998, 1999, 2000, 2001, 2002, 2003
+// Copyright (C) 1994, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004
// Free Software Foundation
//
// This file is part of GCC.
@@ -203,25 +203,6 @@ struct __class_type_info::__upcast_result
__upcast_result (int d)
:dst_ptr (NULL), part2dst (__unknown), src_details (d), base_type (NULL)
{}
-
- explicit
- __upcast_result(const __upcast_result& r)
- : dst_ptr(r.dst_ptr), part2dst(r.part2dst), src_details(r.src_details),
- base_type(r.base_type)
- { }
-
- __upcast_result&
- operator=(const __upcast_result& r)
- {
- if (&r != this)
- {
- dst_ptr = r.dst_ptr;
- part2dst = r.part2dst;
- src_details = r.src_details;
- base_type = r.base_type;
- }
- return *this;
- }
};
// __dyncast_result is used to hold information during traversal of a class
diff --git a/libstdc++-v3/libsupc++/vec.cc b/libstdc++-v3/libsupc++/vec.cc
index 86d41d9ea98..7681acc7729 100644
--- a/libstdc++-v3/libsupc++/vec.cc
+++ b/libstdc++-v3/libsupc++/vec.cc
@@ -96,6 +96,9 @@ namespace __cxxabiv1
{
base += padding_size;
reinterpret_cast <std::size_t *> (base)[-1] = element_count;
+#ifdef _GLIBCXX_ELTSIZE_IN_COOKIE
+ reinterpret_cast <std::size_t *> (base)[-2] = element_size;
+#endif
}
try
{
@@ -131,6 +134,9 @@ namespace __cxxabiv1
{
base += padding_size;
reinterpret_cast<std::size_t *>(base)[-1] = element_count;
+#ifdef _GLIBCXX_ELTSIZE_IN_COOKIE
+ reinterpret_cast <std::size_t *> (base)[-2] = element_size;
+#endif
}
try
{
diff --git a/libstdc++-v3/po/Makefile.in b/libstdc++-v3/po/Makefile.in
index c08f321d5fd..23bdade4f24 100644
--- a/libstdc++-v3/po/Makefile.in
+++ b/libstdc++-v3/po/Makefile.in
@@ -54,6 +54,7 @@ am__depfiles_maybe =
SOURCES =
DIST_SOURCES =
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
ACLOCAL = @ACLOCAL@
ALLOCATOR_H = @ALLOCATOR_H@
ALLOCATOR_NAME = @ALLOCATOR_NAME@
diff --git a/libstdc++-v3/scripts/create_testsuite_files b/libstdc++-v3/scripts/create_testsuite_files
index 7ebcef5a010..50f2e13f856 100755
--- a/libstdc++-v3/scripts/create_testsuite_files
+++ b/libstdc++-v3/scripts/create_testsuite_files
@@ -35,7 +35,7 @@ dlist=`echo [0-9][0-9]*`
for d in [a-z]*; do
test -d $d && dlist="$dlist $d"
done
-find $dlist "(" -type f -o -type l ")" -name "*.cc" | sort > $tmp.1
+find $dlist "(" -type f -o -type l ")" -name "*.cc" -print | sort > $tmp.1
if test ! -s "$tmp.1"; then
exit 1
fi
diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
index 1ea1bed56a0..43f71b02616 100644
--- a/libstdc++-v3/src/Makefile.in
+++ b/libstdc++-v3/src/Makefile.in
@@ -82,6 +82,7 @@ ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
VPATH = $(top_srcdir)/src:$(top_srcdir)
+ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
ACLOCAL = @ACLOCAL@
ALLOCATOR_H = @ALLOCATOR_H@
ALLOCATOR_NAME = @ALLOCATOR_NAME@
diff --git a/libstdc++-v3/src/allocator.cc b/libstdc++-v3/src/allocator.cc
index af5de4d2cb9..e35aa3eef16 100644
--- a/libstdc++-v3/src/allocator.cc
+++ b/libstdc++-v3/src/allocator.cc
@@ -51,7 +51,7 @@ namespace __gnu_cxx
return _S_free_list + __i;
}
- __gthread_mutex_t&
+ mutex_type&
__pool_base::_M_get_mutex()
{ return __gnu_internal::palloc_init_mutex; }
diff --git a/libstdc++-v3/src/locale_init.cc b/libstdc++-v3/src/locale_init.cc
index 35dc3611a4b..fafe03af7ab 100644
--- a/libstdc++-v3/src/locale_init.cc
+++ b/libstdc++-v3/src/locale_init.cc
@@ -89,9 +89,8 @@ namespace __gnu_internal
extern std::__timepunct_cache<wchar_t> timepunct_cache_w;
#endif
- // Mutex objects for locale initialization.
- __glibcxx_mutex_define_initialized(locale_cons_mutex);
- __glibcxx_mutex_define_initialized(locale_global_mutex);
+ // Mutex object for locale initialization.
+ __glibcxx_mutex_define_initialized(locale_mutex);
} // namespace __gnu_internal
namespace std
@@ -101,7 +100,7 @@ namespace std
locale::locale() throw() : _M_impl(0)
{
_S_initialize();
- __gnu_cxx::lock sentry(__gnu_internal::locale_cons_mutex);
+ __gnu_cxx::lock sentry(__gnu_internal::locale_mutex);
_S_global->_M_add_reference();
_M_impl = _S_global;
}
@@ -112,7 +111,7 @@ namespace std
_S_initialize();
_Impl* __old;
{
- __gnu_cxx::lock sentry(__gnu_internal::locale_global_mutex);
+ __gnu_cxx::lock sentry(__gnu_internal::locale_mutex);
__old = _S_global;
__other._M_impl->_M_add_reference();
_S_global = __other._M_impl;
diff --git a/libstdc++-v3/src/localename.cc b/libstdc++-v3/src/localename.cc
index e90e84734e8..f9c7a82f096 100644
--- a/libstdc++-v3/src/localename.cc
+++ b/libstdc++-v3/src/localename.cc
@@ -209,11 +209,11 @@ namespace std
}
else
{
- const char* __beg = __s;
+ const char* __end = __s;
for (size_t __i = 0; __i < _S_categories_size; ++__i)
{
- __beg = std::strchr(__beg, '=') + 1;
- const char* __end = std::strchr(__beg, ';');
+ const char* __beg = std::strchr(__end + 1, '=') + 1;
+ __end = std::strchr(__beg, ';');
if (!__end)
__end = __s + __len;
_M_names[__i] = new char[__end - __beg + 1];
diff --git a/libstdc++-v3/testsuite/20_util/allocator/1.cc b/libstdc++-v3/testsuite/20_util/allocator/1.cc
deleted file mode 100644
index d34c8daf9c9..00000000000
--- a/libstdc++-v3/testsuite/20_util/allocator/1.cc
+++ /dev/null
@@ -1,71 +0,0 @@
-// 2001-06-14 Benjamin Kosnik <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2002, 2004 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.
-
-// 20.4.1.1 allocator members
-
-#include <memory>
-#include <stdexcept>
-#include <cstdlib>
-#include <testsuite_hooks.h>
-
-struct gnu { };
-
-bool check_new = false;
-bool check_delete = false;
-
-void*
-operator new(std::size_t n) throw(std::bad_alloc)
-{
- check_new = true;
- return std::malloc(n);
-}
-
-void operator delete(void *v) throw()
-{
- check_delete = true;
- return std::free(v);
-}
-
-#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template class __gnu_cxx::__mt_alloc<gnu>;
-#endif
-
-void test01()
-{
- bool test __attribute__((unused)) = true;
- std::allocator<gnu> obj;
-
- // NB: These should work for various size allocation and
- // deallocations. Currently, they only work as expected for sizes >
- // _MAX_BYTES as defined in stl_alloc.h, which happes to be 128.
- gnu* pobj = obj.allocate(256);
- VERIFY( check_new );
-
- obj.deallocate(pobj, 256);
- VERIFY( check_delete );
-}
-
-int main()
-{
- test01();
- return 0;
-}
-
diff --git a/libstdc++-v3/testsuite/20_util/allocator/10378.cc b/libstdc++-v3/testsuite/20_util/allocator/10378.cc
deleted file mode 100644
index 2ac77eaaf16..00000000000
--- a/libstdc++-v3/testsuite/20_util/allocator/10378.cc
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (C) 2003, 2004 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.
-
-// 20.1.5 allocator requirements / 20.4.1.1 allocator members
-
-#include <list>
-#include <cstdlib>
-#include <testsuite_hooks.h>
-
-class Bob
-{
-public:
- static void* operator new(size_t sz)
- { return std::malloc(sz); }
-};
-
-// libstdc++/10378
-void test01()
-{
- using namespace std;
- bool test __attribute__((unused)) = true;
-
- list<Bob> uniset;
- uniset.push_back(Bob());
-}
-
-#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template class __gnu_cxx::__mt_alloc<std::_List_node<Bob> >;
-#endif
-
-int main()
-{
- test01();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/allocator/14176.cc b/libstdc++-v3/testsuite/20_util/allocator/14176.cc
deleted file mode 100644
index cb8a2f5c4bf..00000000000
--- a/libstdc++-v3/testsuite/20_util/allocator/14176.cc
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (C) 2004 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.
-
-// 20.4.1.1 allocator members
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-// libstdc++/14176
-void test02()
-{
- unsigned int len = 0;
- std::allocator<int> a;
- int* p = a.allocate(len);
- a.deallocate(p, len);
-}
-
-#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template class __gnu_cxx::__mt_alloc<int>;
-#endif
-
-int main()
-{
- test02();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/allocator/8230.cc b/libstdc++-v3/testsuite/20_util/allocator/8230.cc
deleted file mode 100644
index 95b6cbee55f..00000000000
--- a/libstdc++-v3/testsuite/20_util/allocator/8230.cc
+++ /dev/null
@@ -1,59 +0,0 @@
-// 2001-06-14 Benjamin Kosnik <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2002, 2004 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.
-
-// 20.4.1.1 allocator members
-
-#include <memory>
-#include <stdexcept>
-#include <testsuite_hooks.h>
-
-// libstdc++/8230
-void test02()
-{
- bool test __attribute__((unused)) = true;
- try
- {
- std::allocator<int> alloc;
- const std::allocator<int>::size_type n = alloc.max_size();
- int* p = alloc.allocate(n + 1);
- p[n] = 2002;
- }
- catch(const std::bad_alloc& e)
- {
- // Allowed.
- test = true;
- }
- catch(...)
- {
- test = false;
- }
- VERIFY( test );
-}
-
-#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template class __gnu_cxx::__mt_alloc<int>;
-#endif
-
-int main()
-{
- test02();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/1.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/1.cc
deleted file mode 100644
index 8e150b0187c..00000000000
--- a/libstdc++-v3/testsuite/20_util/auto_ptr/1.cc
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// 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.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct A
-{
- A() { ++ctor_count; }
- virtual ~A() { ++dtor_count; }
- static long ctor_count;
- static long dtor_count;
-};
-long A::ctor_count = 0;
-long A::dtor_count = 0;
-
-struct B : A
-{
- B() { ++ctor_count; }
- virtual ~B() { ++dtor_count; }
- static long ctor_count;
- static long dtor_count;
-};
-long B::ctor_count = 0;
-long B::dtor_count = 0;
-
-
-struct reset_count_struct
-{
- ~reset_count_struct()
- {
- A::ctor_count = 0;
- A::dtor_count = 0;
- B::ctor_count = 0;
- B::dtor_count = 0;
- }
-};
-
-
-// 20.4.5.1 auto_ptr constructors [lib.auto.ptr.cons]
-
-// Construction from pointer
-int
-test01()
-{
- reset_count_struct __attribute__((unused)) reset;
- bool test __attribute__((unused)) = true;
-
- std::auto_ptr<A> A_default;
- VERIFY( A_default.get() == 0 );
- VERIFY( A::ctor_count == 0 );
- VERIFY( A::dtor_count == 0 );
- VERIFY( B::ctor_count == 0 );
- VERIFY( B::dtor_count == 0 );
-
- std::auto_ptr<A> A_from_A(new A);
- VERIFY( A_from_A.get() != 0 );
- VERIFY( A::ctor_count == 1 );
- VERIFY( A::dtor_count == 0 );
- VERIFY( B::ctor_count == 0 );
- VERIFY( B::dtor_count == 0 );
-
- std::auto_ptr<A> A_from_B(new B);
- VERIFY( A_from_B.get() != 0 );
- VERIFY( A::ctor_count == 2 );
- VERIFY( A::dtor_count == 0 );
- VERIFY( B::ctor_count == 1 );
- VERIFY( B::dtor_count == 0 );
-
- return 0;
-}
-
-int
-main()
-{
- test01();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/2.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/2.cc
deleted file mode 100644
index 6ce31d1fe88..00000000000
--- a/libstdc++-v3/testsuite/20_util/auto_ptr/2.cc
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// 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.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct A
-{
- A() { ++ctor_count; }
- virtual ~A() { ++dtor_count; }
- static long ctor_count;
- static long dtor_count;
-};
-long A::ctor_count = 0;
-long A::dtor_count = 0;
-
-struct B : A
-{
- B() { ++ctor_count; }
- virtual ~B() { ++dtor_count; }
- static long ctor_count;
- static long dtor_count;
-};
-long B::ctor_count = 0;
-long B::dtor_count = 0;
-
-
-struct reset_count_struct
-{
- ~reset_count_struct()
- {
- A::ctor_count = 0;
- A::dtor_count = 0;
- B::ctor_count = 0;
- B::dtor_count = 0;
- }
-};
-
-// Construction from std::auto_ptr
-int
-test02()
-{
- reset_count_struct __attribute__((unused)) reset;
- bool test __attribute__((unused)) = true;
-
- std::auto_ptr<A> A_from_A(new A);
- std::auto_ptr<B> B_from_B(new B);
-
- std::auto_ptr<A> A_from_ptr_A(A_from_A);
- std::auto_ptr<A> A_from_ptr_B(B_from_B);
- VERIFY( A_from_A.get() == 0 );
- VERIFY( B_from_B.get() == 0 );
- VERIFY( A_from_ptr_A.get() != 0 );
- VERIFY( A_from_ptr_B.get() != 0 );
- VERIFY( A::ctor_count == 2 );
- VERIFY( A::dtor_count == 0 );
- VERIFY( B::ctor_count == 1 );
- VERIFY( B::dtor_count == 0 );
-
- return 0;
-}
-
-int
-main()
-{
- test02();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/3.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/3.cc
deleted file mode 100644
index 8090d277783..00000000000
--- a/libstdc++-v3/testsuite/20_util/auto_ptr/3.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// 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.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct A
-{
- A() { ++ctor_count; }
- virtual ~A() { ++dtor_count; }
- static long ctor_count;
- static long dtor_count;
-};
-long A::ctor_count = 0;
-long A::dtor_count = 0;
-
-struct B : A
-{
- B() { ++ctor_count; }
- virtual ~B() { ++dtor_count; }
- static long ctor_count;
- static long dtor_count;
-};
-long B::ctor_count = 0;
-long B::dtor_count = 0;
-
-
-struct reset_count_struct
-{
- ~reset_count_struct()
- {
- A::ctor_count = 0;
- A::dtor_count = 0;
- B::ctor_count = 0;
- B::dtor_count = 0;
- }
-};
-
-// Assignment from std::auto_ptr
-int
-test03()
-{
- reset_count_struct __attribute__((unused)) reset;
- bool test __attribute__((unused)) = true;
-
- std::auto_ptr<A> A_from_ptr_A;
- std::auto_ptr<A> A_from_ptr_B;
- std::auto_ptr<A> A_from_A(new A);
- std::auto_ptr<B> B_from_B(new B);
-
- A_from_ptr_A = A_from_A;
- A_from_ptr_B = B_from_B;
- VERIFY( A_from_A.get() == 0 );
- VERIFY( B_from_B.get() == 0 );
- VERIFY( A_from_ptr_A.get() != 0 );
- VERIFY( A_from_ptr_B.get() != 0 );
- VERIFY( A::ctor_count == 2 );
- VERIFY( A::dtor_count == 0 );
- VERIFY( B::ctor_count == 1 );
- VERIFY( B::dtor_count == 0 );
-
- return 0;
-}
-
-int
-main()
-{
- test03();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc
deleted file mode 100644
index 191ba6f9306..00000000000
--- a/libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// 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.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-// libstdc++/3946
-// http://gcc.gnu.org/ml/libstdc++/2002-07/msg00024.html
-struct Base { };
-struct Derived : public Base { };
-
-std::auto_ptr<Derived>
-conversiontest08() { return std::auto_ptr<Derived>(new Derived); }
-
-void
-test08()
-{
- std::auto_ptr<Base> ptr;
- ptr = conversiontest08();
-}
-
-
-int
-main()
-{
- test08();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/4.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/4.cc
deleted file mode 100644
index 18148005573..00000000000
--- a/libstdc++-v3/testsuite/20_util/auto_ptr/4.cc
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// 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.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct A
-{
- A() { ++ctor_count; }
- virtual ~A() { ++dtor_count; }
- static long ctor_count;
- static long dtor_count;
-};
-long A::ctor_count = 0;
-long A::dtor_count = 0;
-
-struct B : A
-{
- B() { ++ctor_count; }
- virtual ~B() { ++dtor_count; }
- static long ctor_count;
- static long dtor_count;
-};
-long B::ctor_count = 0;
-long B::dtor_count = 0;
-
-
-struct reset_count_struct
-{
- ~reset_count_struct()
- {
- A::ctor_count = 0;
- A::dtor_count = 0;
- B::ctor_count = 0;
- B::dtor_count = 0;
- }
-};
-
-
-// Destruction
-int
-test04()
-{
- reset_count_struct __attribute__((unused)) reset;
- bool test __attribute__((unused)) = true;
-
- {/*lifetine scope*/
- std::auto_ptr<A> A_from_A(new A);
- std::auto_ptr<A> A_from_B(new B);
- std::auto_ptr<B> B_from_B(new B);
- }/*destructors called here*/
-
- VERIFY( A::ctor_count == 3 );
- VERIFY( A::dtor_count == 3 );
- VERIFY( B::ctor_count == 2 );
- VERIFY( B::dtor_count == 2 );
-
- return 0;
-}
-
-int
-main()
-{
- test04();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/5.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/5.cc
deleted file mode 100644
index 77969816496..00000000000
--- a/libstdc++-v3/testsuite/20_util/auto_ptr/5.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// 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.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct A
-{
- A() { ++ctor_count; }
- virtual ~A() { ++dtor_count; }
- static long ctor_count;
- static long dtor_count;
-};
-long A::ctor_count = 0;
-long A::dtor_count = 0;
-
-struct B : A
-{
- B() { ++ctor_count; }
- virtual ~B() { ++dtor_count; }
- static long ctor_count;
- static long dtor_count;
-};
-long B::ctor_count = 0;
-long B::dtor_count = 0;
-
-
-struct reset_count_struct
-{
- ~reset_count_struct()
- {
- A::ctor_count = 0;
- A::dtor_count = 0;
- B::ctor_count = 0;
- B::dtor_count = 0;
- }
-};
-
-
-// Class member construction/destruction
-template <typename T>
-class pimpl
-{
-public:
- pimpl() : p_impl(new T) {}
-private:
- std::auto_ptr<T> p_impl;
-};
-
-int
-test05()
-{
- bool test __attribute__((unused)) = true;
- reset_count_struct __attribute__((unused)) reset;
-
- pimpl<A>();
- pimpl<B>();
- VERIFY( A::ctor_count == 2 );
- VERIFY( A::dtor_count == 2 );
- VERIFY( B::ctor_count == 1 );
- VERIFY( B::dtor_count == 1 );
- return 0;
-}
-
-int
-main()
-{
- test05();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/6.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/6.cc
deleted file mode 100644
index e4e13d9d6b0..00000000000
--- a/libstdc++-v3/testsuite/20_util/auto_ptr/6.cc
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// 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.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct A
-{
- A() { ++ctor_count; }
- virtual ~A() { ++dtor_count; }
- static long ctor_count;
- static long dtor_count;
-};
-long A::ctor_count = 0;
-long A::dtor_count = 0;
-
-struct B : A
-{
- B() { ++ctor_count; }
- virtual ~B() { ++dtor_count; }
- static long ctor_count;
- static long dtor_count;
-};
-long B::ctor_count = 0;
-long B::dtor_count = 0;
-
-
-struct reset_count_struct
-{
- ~reset_count_struct()
- {
- A::ctor_count = 0;
- A::dtor_count = 0;
- B::ctor_count = 0;
- B::dtor_count = 0;
- }
-};
-
-// 20.4.5.2 auto_ptr members [lib.auto.ptr.members]
-
-// Member access
-int
-test06()
-{
- reset_count_struct __attribute__((unused)) reset;
- bool test __attribute__((unused)) = true;
-
- std::auto_ptr<A> A_from_A(new A);
- std::auto_ptr<A> A_from_A_ptr(A_from_A.release());
- VERIFY( A_from_A.get() == 0 );
- VERIFY( A_from_A_ptr.get() != 0 );
- VERIFY( A_from_A_ptr->ctor_count == 1 );
- VERIFY( (*A_from_A_ptr).dtor_count == 0 );
-
- A* A_ptr = A_from_A_ptr.get();
-
- A_from_A_ptr.reset(A_ptr);
- VERIFY( A_from_A_ptr.get() == A_ptr );
- VERIFY( A_from_A_ptr->ctor_count == 1 );
- VERIFY( (*A_from_A_ptr).dtor_count == 0 );
-
- A_from_A_ptr.reset(new A);
- VERIFY( A_from_A_ptr.get() != A_ptr );
- VERIFY( A_from_A_ptr->ctor_count == 2 );
- VERIFY( (*A_from_A_ptr).dtor_count == 1 );
- return 0;
-}
-
-int
-main()
-{
- test06();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/7.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/7.cc
deleted file mode 100644
index a77ba51cb58..00000000000
--- a/libstdc++-v3/testsuite/20_util/auto_ptr/7.cc
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
-//
-// 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.
-
-// 20.4.5 Template class auto_ptr [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct A
-{
- A() { ++ctor_count; }
- virtual ~A() { ++dtor_count; }
- static long ctor_count;
- static long dtor_count;
-};
-long A::ctor_count = 0;
-long A::dtor_count = 0;
-
-struct B : A
-{
- B() { ++ctor_count; }
- virtual ~B() { ++dtor_count; }
- static long ctor_count;
- static long dtor_count;
-};
-long B::ctor_count = 0;
-long B::dtor_count = 0;
-
-
-struct reset_count_struct
-{
- ~reset_count_struct()
- {
- A::ctor_count = 0;
- A::dtor_count = 0;
- B::ctor_count = 0;
- B::dtor_count = 0;
- }
-};
-
-// 20.4.5.3 auto_ptr conversions [lib.auto.ptr.conv]
-
-// Parameters and return values
-template <typename T>
-static std::auto_ptr<T> source()
-{
- return std::auto_ptr<T>(new T);
-}
-
-template <typename T>
-static void drain(std::auto_ptr<T>)
-{}
-
-int
-test07()
-{
- bool test __attribute__((unused)) = true;
- reset_count_struct __attribute__((unused)) reset;
-
- drain(source<A>());
- // The resolution of core issue 84, now a DR, breaks this call.
- // drain<A>(source<B>());
- drain(source<B>());
- VERIFY( A::ctor_count == 2 );
- VERIFY( A::dtor_count == 2 );
- VERIFY( B::ctor_count == 1 );
- VERIFY( B::dtor_count == 1 );
- return 0;
-}
-
-int
-main()
-{
- test07();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc b/libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc
deleted file mode 100644
index 55291676f3d..00000000000
--- a/libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-// { dg-do compile }
-
-// Copyright (C) 2002, 2003, 2004 Free Software Foundation
-//
-// 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.
-
-// 20.4.5 Template class auto_ptr negative tests [lib.auto.ptr]
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-// via Jack Reeves <jack_reeves@hispeed.ch>
-// libstdc++/3946
-// http://gcc.gnu.org/ml/libstdc++/2002-07/msg00024.html
-struct Base { };
-struct Derived : public Base { };
-
-std::auto_ptr<Derived>
-foo() { return std::auto_ptr<Derived>(new Derived); }
-
-int
-test01()
-{
- std::auto_ptr<Base> ptr2;
- ptr2 = new Base; // { dg-error "no match" }
- return 0;
-}
-
-int
-main()
-{
- test01();
- return 0;
-}
-// { dg-error "candidates" "" { target *-*-* } 223 }
-// { dg-error "std::auto_ptr" "" { target *-*-* } 353 }
diff --git a/libstdc++-v3/testsuite/20_util/comparisons.cc b/libstdc++-v3/testsuite/20_util/comparisons.cc
deleted file mode 100644
index fda0332fa07..00000000000
--- a/libstdc++-v3/testsuite/20_util/comparisons.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-// 2001-06-18 Benjamin Kosnik <bkoz@redhat.com>
-
-// Copyright (C) 2001 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.
-
-// 20.3.3 Comparisons
-
-#include <functional>
-
-class gnu_obj
-{
- int i;
-public:
- gnu_obj(int arg = 0): i(arg) { }
- bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
- bool operator!=(const gnu_obj& rhs) const { return i != rhs.i; }
- bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
-};
-
-template<typename T>
- struct gnu_t
- {
- bool b;
- public:
- gnu_t(bool arg = 0): b(arg) { }
- bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
- bool operator!=(const gnu_t& rhs) const { return b != rhs.b; }
- bool operator<(const gnu_t& rhs) const { return b == rhs.b; }
- };
-
-template struct std::not_equal_to<void*>;
-template struct std::not_equal_to<gnu_obj>;
-template struct std::not_equal_to<gnu_t<long> >;
-
-int main()
-{
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/pair/1.cc b/libstdc++-v3/testsuite/20_util/pair/1.cc
deleted file mode 100644
index 7ccee6dd569..00000000000
--- a/libstdc++-v3/testsuite/20_util/pair/1.cc
+++ /dev/null
@@ -1,79 +0,0 @@
-// 2001-06-18 Benjamin Kosnik <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2004 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.
-
-// 20.2.2 Pairs
-
-#include <utility>
-#include <testsuite_hooks.h>
-
-class gnu_obj
-{
- int i;
-public:
- gnu_obj(int arg = 0): i(arg) { }
- bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
- bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
-};
-
-template<typename T>
- struct gnu_t
- {
- bool b;
- public:
- gnu_t(bool arg = 0): b(arg) { }
- bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
- bool operator<(const gnu_t& rhs) const { return int(b) < int(rhs.b); }
- };
-
-
-// heterogeneous
-void test01()
-{
- bool test __attribute__((unused)) = true;
-
- std::pair<bool, long> p_bl_1(true, 433);
- std::pair<bool, long> p_bl_2 = std::make_pair(true, 433);
- VERIFY( p_bl_1 == p_bl_2 );
- VERIFY( !(p_bl_1 < p_bl_2) );
-
- std::pair<const char*, float> p_sf_1("total enlightenment", 433.00);
- std::pair<const char*, float> p_sf_2 = std::make_pair("total enlightenment",
- 433.00);
- VERIFY( p_sf_1 == p_sf_2 );
- VERIFY( !(p_sf_1 < p_sf_2) );
-
- std::pair<const char*, gnu_obj> p_sg_1("enlightenment", gnu_obj(5));
- std::pair<const char*, gnu_obj> p_sg_2 = std::make_pair("enlightenment",
- gnu_obj(5));
- VERIFY( p_sg_1 == p_sg_2 );
- VERIFY( !(p_sg_1 < p_sg_2) );
-
- std::pair<gnu_t<long>, gnu_obj> p_st_1(gnu_t<long>(false), gnu_obj(5));
- std::pair<gnu_t<long>, gnu_obj> p_st_2 = std::make_pair(gnu_t<long>(false),
- gnu_obj(5));
- VERIFY( p_st_1 == p_st_2 );
- VERIFY( !(p_st_1 < p_st_2) );
-}
-
-int main()
-{
- test01();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/pair/2.cc b/libstdc++-v3/testsuite/20_util/pair/2.cc
deleted file mode 100644
index 82d928c2d01..00000000000
--- a/libstdc++-v3/testsuite/20_util/pair/2.cc
+++ /dev/null
@@ -1,60 +0,0 @@
-// 2001-06-18 Benjamin Kosnik <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2004 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.
-
-// 20.2.2 Pairs
-
-#include <utility>
-#include <testsuite_hooks.h>
-
-class gnu_obj
-{
- int i;
-public:
- gnu_obj(int arg = 0): i(arg) { }
- bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
- bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
-};
-
-template<typename T>
- struct gnu_t
- {
- bool b;
- public:
- gnu_t(bool arg = 0): b(arg) { }
- bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
- bool operator<(const gnu_t& rhs) const { return int(b) < int(rhs.b); }
- };
-
-// homogeneous
-void test02()
-{
- bool test __attribute__((unused)) = true;
-
- std::pair<bool, bool> p_bb_1(true, false);
- std::pair<bool, bool> p_bb_2 = std::make_pair(true, false);
- VERIFY( p_bb_1 == p_bb_2 );
- VERIFY( !(p_bb_1 < p_bb_2) );
-}
-
-int main()
-{
- test02();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/pair/3.cc b/libstdc++-v3/testsuite/20_util/pair/3.cc
deleted file mode 100644
index bac0e7eb974..00000000000
--- a/libstdc++-v3/testsuite/20_util/pair/3.cc
+++ /dev/null
@@ -1,79 +0,0 @@
-// 2001-06-18 Benjamin Kosnik <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2004 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.
-
-// 20.2.2 Pairs
-
-#include <utility>
-#include <testsuite_hooks.h>
-
-class gnu_obj
-{
- int i;
-public:
- gnu_obj(int arg = 0): i(arg) { }
- bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
- bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
-};
-
-template<typename T>
- struct gnu_t
- {
- bool b;
- public:
- gnu_t(bool arg = 0): b(arg) { }
- bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
- bool operator<(const gnu_t& rhs) const { return int(b) < int(rhs.b); }
- };
-
-
-// const
-void test03()
-{
- bool test __attribute__((unused)) = true;
-
- const std::pair<bool, long> p_bl_1(true, 433);
- const std::pair<bool, long> p_bl_2 = std::make_pair(true, 433);
- VERIFY( p_bl_1 == p_bl_2 );
- VERIFY( !(p_bl_1 < p_bl_2) );
-
- const std::pair<const char*, float> p_sf_1("total enlightenment", 433.00);
- const std::pair<const char*, float> p_sf_2 =
- std::make_pair("total enlightenment", 433.00);
- VERIFY( p_sf_1 == p_sf_2 );
- VERIFY( !(p_sf_1 < p_sf_2) );
-
- const std::pair<const char*, gnu_obj> p_sg_1("enlightenment", gnu_obj(5));
- const std::pair<const char*, gnu_obj> p_sg_2 =
- std::make_pair("enlightenment", gnu_obj(5));
- VERIFY( p_sg_1 == p_sg_2 );
- VERIFY( !(p_sg_1 < p_sg_2) );
-
- const std::pair<gnu_t<long>, gnu_obj> p_st_1(gnu_t<long>(false), gnu_obj(5));
- const std::pair<gnu_t<long>, gnu_obj> p_st_2 =
- std::make_pair(gnu_t<long>(false), gnu_obj(5));
- VERIFY( p_st_1 == p_st_2 );
- VERIFY( !(p_st_1 < p_st_2) );
-}
-
-int main()
-{
- test03();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/pair/4.cc b/libstdc++-v3/testsuite/20_util/pair/4.cc
deleted file mode 100644
index f6a1b5697d7..00000000000
--- a/libstdc++-v3/testsuite/20_util/pair/4.cc
+++ /dev/null
@@ -1,67 +0,0 @@
-// 2001-06-18 Benjamin Kosnik <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2004 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.
-
-// 20.2.2 Pairs
-
-#include <utility>
-#include <testsuite_hooks.h>
-
-class gnu_obj
-{
- int i;
-public:
- gnu_obj(int arg = 0): i(arg) { }
- bool operator==(const gnu_obj& rhs) const { return i == rhs.i; }
- bool operator<(const gnu_obj& rhs) const { return i < rhs.i; }
-};
-
-template<typename T>
- struct gnu_t
- {
- bool b;
- public:
- gnu_t(bool arg = 0): b(arg) { }
- bool operator==(const gnu_t& rhs) const { return b == rhs.b; }
- bool operator<(const gnu_t& rhs) const { return int(b) < int(rhs.b); }
- };
-
-// const&
-void test04()
-{
- bool test __attribute__((unused)) = true;
- const gnu_obj& obj1 = gnu_obj(5);
- const std::pair<const char*, gnu_obj> p_sg_1("enlightenment", obj1);
- const std::pair<const char*, gnu_obj> p_sg_2 =
- std::make_pair("enlightenment", obj1);
- VERIFY( p_sg_1 == p_sg_2 );
- VERIFY( !(p_sg_1 < p_sg_2) );
-
- const gnu_t<long>& tmpl1 = gnu_t<long>(false);
- const std::pair<gnu_t<long>, gnu_obj> p_st_1(tmpl1, obj1);
- const std::pair<gnu_t<long>, gnu_obj> p_st_2 = std::make_pair(tmpl1, obj1);
- VERIFY( p_st_1 == p_st_2 );
- VERIFY( !(p_st_1 < p_st_2) );
-}
-
-int main()
-{
- test04();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/raw_storage_iterator.cc b/libstdc++-v3/testsuite/20_util/raw_storage_iterator.cc
deleted file mode 100644
index c79e5400581..00000000000
--- a/libstdc++-v3/testsuite/20_util/raw_storage_iterator.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-// 2001-06-18 Benjamin Kosnik <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2003 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.
-
-// 20.4.2 raw storage iterator
-
-#include <memory>
-
-void test01()
-{
- using namespace std;
-
- // Check for required base class.
- long l;
- typedef raw_storage_iterator<long*, long> test_iterator;
- typedef iterator<output_iterator_tag, void, void, void, void> base_iterator;
- test_iterator rs_it(&l);
- base_iterator* base __attribute__((unused)) = &rs_it;
-
- // Check for required typedefs
- typedef test_iterator::value_type value_type;
- typedef test_iterator::difference_type difference_type;
- typedef test_iterator::pointer pointer;
- typedef test_iterator::reference reference;
- typedef test_iterator::iterator_category iteratory_category;
-}
-
-int main()
-{
- test01();
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/20_util/temporary_buffer.cc b/libstdc++-v3/testsuite/20_util/temporary_buffer.cc
deleted file mode 100644
index e83a82efcf8..00000000000
--- a/libstdc++-v3/testsuite/20_util/temporary_buffer.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-// 2002-01-24 Phil Edwards <pme@gcc.gnu.org>
-
-// Copyright (C) 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.
-
-// 20.4.3 temporary buffers
-
-#include <memory>
-#include <testsuite_hooks.h>
-
-struct junk { char j[12]; };
-
-int main(void)
-{
- bool test __attribute__((unused)) = true;
-
- std::pair<junk*,ptrdiff_t> results = std::get_temporary_buffer<junk>(5);
-
- if (results.second != 0)
- {
- // make sure it works: test the returned capacity, and then construct
- // some junk in the buffer.
- // XXX
- VERIFY( results.first != 0 );
- }
- else
- {
- // if it says it didn't work, make sure it didn't work
- VERIFY( results.first == 0 );
- }
-
- std::return_temporary_buffer(results.first);
-
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread.cc b/libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread.cc
deleted file mode 100644
index 3a89d371f62..00000000000
--- a/libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread.cc
+++ /dev/null
@@ -1,67 +0,0 @@
-// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* alpha*-*-osf* } }
-// { dg-options "-pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* alpha*-*-osf* } }
-// { dg-options "-pthreads" { target *-*-solaris* } }
-
-// Copyright (C) 2004 Free Software Foundation
-//
-// 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.
-
-// 22.1.1.2 locale constructors and destructors [lib.locale.cons]
-
-#include <locale>
-#include <pthread.h>
-
-const int max_thread_count = 20;
-//const int max_loop_count = 1000000; // orig value
-const int max_loop_count = 100000;
-const int max_locales = 10;
-
-void* thread_main(void*)
-{
- try
- {
- std::locale loc_c = std::locale::classic();
- std::locale loc[max_locales];
- for (int j = 0; j < max_locales; ++j)
- loc[j] = std::locale(j % 2 ? "en_US" : "fr_FR");
-
- for (int i = 0; i < max_loop_count; ++i)
- {
- int k = i % max_locales;
- loc[k] = std::locale::global(loc[k]);
-
- if (i % 37 == 0)
- loc[k] = loc[k].combine<std::ctype<char> >(loc_c);
- }
- }
- catch (...) { }
- return 0;
-}
-
-int
-main()
-{
- pthread_t tid[max_thread_count];
-
- for (int i = 0; i < max_thread_count; i++)
- pthread_create (&tid[i], NULL, thread_main, 0);
-
- for (int i = 0; i < max_thread_count; i++)
- pthread_join (tid[i], NULL);
-
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/23_containers/multiset/14340.cc b/libstdc++-v3/testsuite/23_containers/multiset/14340.cc
index 354c5153edf..f02613047c0 100644
--- a/libstdc++-v3/testsuite/23_containers/multiset/14340.cc
+++ b/libstdc++-v3/testsuite/23_containers/multiset/14340.cc
@@ -36,7 +36,7 @@
// libstdc++/14340
int main()
{
- typedef std::multiset<int, int> container;
+ typedef std::multiset<int> container;
__gnu_test::conversion<container>::iterator_to_const_iterator();
return 0;
}
diff --git a/libstdc++-v3/testsuite/23_containers/set/14340.cc b/libstdc++-v3/testsuite/23_containers/set/14340.cc
index b24fb4c73e8..d8f403ee247 100644
--- a/libstdc++-v3/testsuite/23_containers/set/14340.cc
+++ b/libstdc++-v3/testsuite/23_containers/set/14340.cc
@@ -36,7 +36,7 @@
// libstdc++/14340
int main()
{
- typedef std::set<int, int> container;
+ typedef std::set<int> container;
__gnu_test::conversion<container>::iterator_to_const_iterator();
return 0;
}
diff --git a/libstdc++-v3/testsuite/24_iterators/rel_ops.cc b/libstdc++-v3/testsuite/24_iterators/rel_ops.cc
deleted file mode 100644
index b11af2a0302..00000000000
--- a/libstdc++-v3/testsuite/24_iterators/rel_ops.cc
+++ /dev/null
@@ -1,51 +0,0 @@
-// 2002-04-13 Paolo Carlini <pcarlini@unitus.it>
-
-// Copyright (C) 2002, 2004 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.
-
-// 20.2.1 Operators
-
-#include <utility>
-#include <vector>
-
-using namespace std::rel_ops;
-
-// libstdc++/3628
-void test01()
-{
- std::vector<int> v;
- std::vector<int>::iterator vi;
- v.push_back(1);
- vi = v.end();
- vi != v.begin();
- vi > v.begin();
- vi <= v.begin();
- vi >= v.begin();
-}
-
-#if !__GXX_WEAK__ && _MT_ALLOCATOR_H
-// Explicitly instantiate for systems with no COMDAT or weak support.
-template class __gnu_cxx::__mt_alloc<int>;
-#endif
-
-int main()
-{
- test01();
- return 0;
-}
-
diff --git a/libstdc++-v3/testsuite/25_algorithms/copy.cc b/libstdc++-v3/testsuite/25_algorithms/copy.cc
deleted file mode 100644
index 6e699113b58..00000000000
--- a/libstdc++-v3/testsuite/25_algorithms/copy.cc
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (C) 2001 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 Pred 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.
-
-// 25.2.12 [lib.alg.partitions] Partitions.
-
-#include <algorithm>
-#include <testsuite_hooks.h>
-
-bool test __attribute__((unused)) = true;
-
-const int A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
-const int N = sizeof(A) / sizeof(int);
-
-// copy
-void
-test01()
-{
- using std::copy;
-
- int s1[N];
- copy(A, A + N, s1);
- VERIFY(std::equal(s1, s1 + N, A));
-}
-
-// copy_backward
-void
-test02()
-{
- using std::copy_backward;
-
- int s1[N];
- copy_backward(A, A + N, s1 + N);
- VERIFY(std::equal(s1, s1 + N, A));
-}
-
-int
-main()
-{
- test01();
- test02();
-
- return 0;
-}
diff --git a/libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/1.cc
index b574cdc6736..24469ba99de 100644
--- a/libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/1.cc
@@ -20,6 +20,7 @@
// USA.
#include <streambuf>
+#include <locale>
#include <testsuite_hooks.h>
class testbuf : public std::streambuf
diff --git a/libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/9322.cc b/libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/9322.cc
index 17d94af7001..964fcca3cf3 100644
--- a/libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/9322.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/9322.cc
@@ -29,10 +29,8 @@
// 27.5.2 template class basic_streambuf
-#include <cstring> // for memset, memcmp
#include <streambuf>
-#include <sstream>
-#include <ostream>
+#include <locale>
#include <testsuite_hooks.h>
class testbuf : public std::streambuf
diff --git a/libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/2.cc b/libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/2.cc
index a6215529251..dbf79bd384a 100644
--- a/libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/2.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/2.cc
@@ -31,6 +31,7 @@
#include <streambuf>
#include <ostream>
+#include <string>
#include <testsuite_hooks.h>
// test03
diff --git a/libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/3599.cc b/libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/3599.cc
index 145e4eb3ec6..82040cdf342 100644
--- a/libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/3599.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/3599.cc
@@ -55,10 +55,10 @@ test07()
std::ostream out(&ob);
out << "gasp";
- VERIFY(out.good());
+ VERIFY( out.good() );
out << std::endl;
- VERIFY(out.good());
+ VERIFY( out.good() );
}
int main()
diff --git a/libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1057.cc b/libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1057.cc
index 628e2e77d73..f3b40500a8a 100644
--- a/libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1057.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1057.cc
@@ -30,7 +30,7 @@
// 27.5.2 template class basic_streambuf
#include <streambuf>
-#include <sstream>
+#include <string>
#include <testsuite_hooks.h>
class nullsetpbuf : public std::streambuf
diff --git a/libstdc++-v3/testsuite/27_io/basic_streambuf/sync/char/1057.cc b/libstdc++-v3/testsuite/27_io/basic_streambuf/sync/char/1057.cc
index 5c75185774b..9bc2ac00664 100644
--- a/libstdc++-v3/testsuite/27_io/basic_streambuf/sync/char/1057.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_streambuf/sync/char/1057.cc
@@ -30,6 +30,7 @@
// 27.5.2 template class basic_streambuf
#include <streambuf>
+#include <string>
#include <testsuite_hooks.h>
class setpbuf : public std::streambuf
diff --git a/libstdc++-v3/testsuite/Makefile.in b/libstdc++-v3/testsuite/Makefile.in
index 0a7439e2262..5e0a4ca48ae 100644
--- a/libstdc++-v3/testsuite/Makefile.in
+++ b/libstdc++-v3/testsuite/Makefile.in
@@ -83,6 +83,7 @@ RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
EXPECT = expect
RUNTEST = runtest
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
ACLOCAL = @ACLOCAL@
ALLOCATOR_H = @ALLOCATOR_H@
ALLOCATOR_NAME = @ALLOCATOR_NAME@
diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
index 04d5a813b14..4e0d86df74a 100644
--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
@@ -71,9 +71,6 @@ proc v3-copy-files {srcfiles} {
remote_download target $dirname/$symlink
}
}
- set dirname [file dirname $f]
- set basename [file tail $f]
- file attributes $dirname/$basename -permissions a+w
}
}
diff --git a/libstdc++-v3/testsuite/testsuite_abi.cc b/libstdc++-v3/testsuite/testsuite_abi.cc
index b94b7eb2df0..0a2141ff71a 100644
--- a/libstdc++-v3/testsuite/testsuite_abi.cc
+++ b/libstdc++-v3/testsuite/testsuite_abi.cc
@@ -163,6 +163,7 @@ check_version(const symbol& test, bool added)
known_versions.push_back("GLIBCPP_3.2.3"); // gcc-3.3.0
known_versions.push_back("GLIBCXX_3.4");
known_versions.push_back("GLIBCXX_3.4.1");
+ known_versions.push_back("GLIBCXX_3.4.2");
known_versions.push_back("CXXABI_1.2");
known_versions.push_back("CXXABI_1.2.1");
known_versions.push_back("CXXABI_1.3");
diff --git a/libstdc++-v3/testsuite/testsuite_allocator.cc b/libstdc++-v3/testsuite/testsuite_allocator.cc
index a98e38884d3..6856226c239 100644
--- a/libstdc++-v3/testsuite/testsuite_allocator.cc
+++ b/libstdc++-v3/testsuite/testsuite_allocator.cc
@@ -28,6 +28,7 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
+#include <iostream>
#include <testsuite_allocator.h>
namespace __gnu_test
@@ -36,5 +37,24 @@ namespace __gnu_test
allocation_tracker::size_type allocation_tracker::deallocationTotal_ = 0;
int allocation_tracker::constructCount_ = 0;
int allocation_tracker::destructCount_ = 0;
+
+ bool
+ check_construct_destroy(const char* tag, int expected_c, int expected_d)
+ {
+ if (allocation_tracker::constructCount() == expected_c &&
+ allocation_tracker::destructCount() == expected_d)
+ return true;
+
+ else {
+ std::cerr << tag << ": "
+ << " construct = " << allocation_tracker::constructCount()
+ << " (should be " << expected_c << "),"
+ << " destroy = " << allocation_tracker::destructCount()
+ << " (should be " << expected_d << ")"
+ << std::endl;
+ return false;
+ }
+ }
+
}; // namespace __cxx_test
diff --git a/libstdc++-v3/testsuite/testsuite_allocator.h b/libstdc++-v3/testsuite/testsuite_allocator.h
index 866fe7cce18..46b7891e9bd 100644
--- a/libstdc++-v3/testsuite/testsuite_allocator.h
+++ b/libstdc++-v3/testsuite/testsuite_allocator.h
@@ -169,6 +169,10 @@ namespace __gnu_test
bool
operator!=(const tracker_alloc<T1>&, const tracker_alloc<T2>&) throw()
{ return false; }
+
+ bool
+ check_construct_destroy(const char* tag, int expected_c, int expected_d);
+
}; // namespace __gnu_test
#endif // _GLIBCXX_TESTSUITE_ALLOCATOR_H