cfenv: New.

2006-01-26  Paolo Carlini  <pcarlini@suse.de>

	* include/tr1/cfenv: New.
	* include/Makefile.am: Add.
	* testsuite/tr1/8_c_compatibility/cfenv/functions.cc: New.
	* testsuite/tr1/8_c_compatibility/cfenv/types.cc: Likewise.
	* acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Add <fenv.h> checks.
	* docs/html/ext/tr1.html: Update; add note.
	* include/Makefile.in: Regenerate.
	* config.h.in: Likewise.
	* configure: Likewise.	

	* testsuite/tr1/8_c_compatibility/complex/functions.cc: Tweak.
	* testsuite/tr1/8_c_compatibility/cctype/functions.cc: Likewise.

	* docs/html/faq/index.html: Fix link to tr1.html text; fix
	formatting.

From-SVN: r110252
This commit is contained in:
Paolo Carlini 2006-01-26 11:29:20 +00:00 committed by Paolo Carlini
parent 5e922d66a7
commit 20921e5333
13 changed files with 526 additions and 58 deletions

View file

@ -1,3 +1,21 @@
2006-01-26 Paolo Carlini <pcarlini@suse.de>
* include/tr1/cfenv: New.
* include/Makefile.am: Add.
* testsuite/tr1/8_c_compatibility/cfenv/functions.cc: New.
* testsuite/tr1/8_c_compatibility/cfenv/types.cc: Likewise.
* acinclude.m4 ([GLIBCXX_CHECK_C99_TR1]): Add <fenv.h> checks.
* docs/html/ext/tr1.html: Update; add note.
* include/Makefile.in: Regenerate.
* config.h.in: Likewise.
* configure: Likewise.
* testsuite/tr1/8_c_compatibility/complex/functions.cc: Tweak.
* testsuite/tr1/8_c_compatibility/cctype/functions.cc: Likewise.
* docs/html/faq/index.html: Fix link to tr1.html text; fix
formatting.
2006-01-25 Paolo Carlini <pcarlini@suse.de> 2006-01-25 Paolo Carlini <pcarlini@suse.de>
* include/tr1/cctype: New. * include/tr1/cctype: New.

View file

@ -1098,7 +1098,8 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
AC_MSG_CHECKING([for ISO C99 support to TR1 in <ctype.h>]) AC_MSG_CHECKING([for ISO C99 support to TR1 in <ctype.h>])
AC_CACHE_VAL(ac_c99_ctype_tr1, [ AC_CACHE_VAL(ac_c99_ctype_tr1, [
AC_TRY_COMPILE([#include <ctype.h>], AC_TRY_COMPILE([#include <ctype.h>],
[isblank(0); [int ch;
isblank(ch);
],[ac_c99_ctype_tr1=yes], [ac_c99_ctype_tr1=no]) ],[ac_c99_ctype_tr1=yes], [ac_c99_ctype_tr1=no])
]) ])
AC_MSG_RESULT($ac_c99_ctype_tr1) AC_MSG_RESULT($ac_c99_ctype_tr1)
@ -1108,6 +1109,35 @@ AC_DEFUN([GLIBCXX_CHECK_C99_TR1], [
<tr1/cctype> in namespace std::tr1.]) <tr1/cctype> in namespace std::tr1.])
fi fi
# Check for the existence of <fenv.h> functions.
AC_CHECK_HEADERS(fenv.h, ac_has_fenv_h=yes, ac_has_fenv_h=no)
ac_c99_fenv_tr1=no;
if test x"$ac_has_fenv_h" = x"yes"; then
AC_MSG_CHECKING([for ISO C99 support to TR1 in <fenv.h>])
AC_TRY_COMPILE([#include <fenv.h>],
[int except, mode;
fexcept_t* pflag;
fenv_t* penv;
feclearexcept(except);
fegetexceptflag(pflag, except);
feraiseexcept(except);
fesetexceptflag(pflag, except);
fetestexcept(except);
fegetround();
fesetround(mode);
fegetenv(penv);
feholdexcept(penv);
fesetenv(penv);
feupdateenv(penv);
],[ac_c99_fenv_tr1=yes], [ac_c99_fenv_tr1=no])
fi
AC_MSG_RESULT($ac_c99_fenv_tr1)
if test x"$ac_c99_fenv_tr1" = x"yes"; then
AC_DEFINE(_GLIBCXX_USE_C99_FENV_TR1, 1,
[Define if C99 functions in <fenv.h> should be imported in
<tr1/cfenv> in namespace std::tr1.])
fi
AC_LANG_RESTORE AC_LANG_RESTORE
]) ])

View file

@ -69,6 +69,9 @@
/* Define to 1 if you have the `fabsl' function. */ /* Define to 1 if you have the `fabsl' function. */
#undef HAVE_FABSL #undef HAVE_FABSL
/* Define to 1 if you have the <fenv.h> header file. */
#undef HAVE_FENV_H
/* Define to 1 if you have the `finite' function. */ /* Define to 1 if you have the `finite' function. */
#undef HAVE_FINITE #undef HAVE_FINITE
@ -700,6 +703,10 @@
namespace std::tr1. */ namespace std::tr1. */
#undef _GLIBCXX_USE_C99_CTYPE_TR1 #undef _GLIBCXX_USE_C99_CTYPE_TR1
/* Define if C99 functions in <fenv.h> should be imported in <tr1/cfenv> in
namespace std::tr1. */
#undef _GLIBCXX_USE_C99_FENV_TR1
/* Define if C99 functions or macros in <math.h> should be imported in <cmath> /* Define if C99 functions or macros in <math.h> should be imported in <cmath>
in namespace std. */ in namespace std. */
#undef _GLIBCXX_USE_C99_MATH #undef _GLIBCXX_USE_C99_MATH

230
libstdc++-v3/configure vendored
View file

@ -30238,7 +30238,8 @@ cat >>conftest.$ac_ext <<_ACEOF
int int
main () main ()
{ {
isblank(0); int ch;
isblank(ch);
; ;
return 0; return 0;
@ -30287,6 +30288,233 @@ _ACEOF
fi fi
# Check for the existence of <fenv.h> functions.
for ac_header in fenv.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_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_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_cxx_preproc_warn_flag
ac_cpp_err=$ac_cpp_err$ac_cxx_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_cxx_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_fenv_h=yes
else
ac_has_fenv_h=no
fi
done
ac_c99_fenv_tr1=no;
if test x"$ac_has_fenv_h" = x"yes"; then
echo "$as_me:$LINENO: checking for ISO C99 support to TR1 in <fenv.h>" >&5
echo $ECHO_N "checking for ISO C99 support to TR1 in <fenv.h>... $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 <fenv.h>
int
main ()
{
int except, mode;
fexcept_t* pflag;
fenv_t* penv;
feclearexcept(except);
fegetexceptflag(pflag, except);
feraiseexcept(except);
fesetexceptflag(pflag, except);
fetestexcept(except);
fegetround();
fesetround(mode);
fegetenv(penv);
feholdexcept(penv);
fesetenv(penv);
feupdateenv(penv);
;
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_c99_fenv_tr1=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_c99_fenv_tr1=no
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_c99_fenv_tr1" >&5
echo "${ECHO_T}$ac_c99_fenv_tr1" >&6
if test x"$ac_c99_fenv_tr1" = x"yes"; then
cat >>confdefs.h <<\_ACEOF
#define _GLIBCXX_USE_C99_FENV_TR1 1
_ACEOF
fi
ac_ext=c ac_ext=c
ac_cpp='$CPP $CPPFLAGS' ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'

View file

@ -30,7 +30,14 @@ Draft Technical Report on C++ Library Extensions
</p> </p>
<p> <p>
This page describes the TR1 support in mainline GCC CVS, not in any particular release. In this implementation the header names are prefixed by
<code>tr1/</code>, for instance <code>&lt;tr1/functional&gt;</code>,
<code>&lt;tr1/memory&gt;</code>, and so on.
</p>
<p>
This page describes the TR1 support in mainline GCC CVS, not in any particular
release.
</p> </p>
<table border="1"> <table border="1">
@ -1796,25 +1803,25 @@ This page describes the TR1 support in mainline GCC CVS, not in any particular r
<tr> <tr>
<td>8.4</td> <td>8.4</td>
<td>Additions to header <code>&lt;cctype&gt;</code></td> <td>Additions to header <code>&lt;cctype&gt;</code></td>
<td>done</td>
<td></td> <td></td>
<td></td> <td></td>
<td>missing</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr>
<td>8.4.1</td> <td>8.4.1</td>
<td>Synopsis</td> <td>Synopsis</td>
<td>done</td>
<td></td> <td></td>
<td></td> <td></td>
<td>missing</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr>
<td>8.4.2</td> <td>8.4.2</td>
<td>Function <code>isblank</code></td> <td>Function <code>isblank</code></td>
<td>done</td>
<td></td> <td></td>
<td></td> <td></td>
<td>missing</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr>
@ -1828,25 +1835,25 @@ This page describes the TR1 support in mainline GCC CVS, not in any particular r
<tr> <tr>
<td>8.6</td> <td>8.6</td>
<td>Header <code>&lt;cfenv&gt;</code></td> <td>Header <code>&lt;cfenv&gt;</code></td>
<td>done</td>
<td></td> <td></td>
<td></td> <td></td>
<td>missing</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr>
<td>8.6.1</td> <td>8.6.1</td>
<td>Synopsis</td> <td>Synopsis</td>
<td>done</td>
<td></td> <td></td>
<td></td> <td></td>
<td>missing</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr>
<td>8.6.2</td> <td>8.6.2</td>
<td>Definitions</td> <td>Definitions</td>
<td>done</td>
<td></td> <td></td>
<td></td> <td></td>
<td>missing</td>
<td></td> <td></td>
</tr> </tr>
<tr> <tr>
@ -2259,7 +2266,8 @@ This page describes the TR1 support in mainline GCC CVS, not in any particular r
<li> <li>
<a name="1"/> <a name="1"/>
The shared_ptr implementation uses some code from the The shared_ptr implementation uses some code from the
<a href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">Boost shared_ptr</a> library. <a href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">Boost
shared_ptr</a> library.
</li> </li>
</ol> </ol>

View file

@ -982,64 +982,73 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
<hr /> <hr />
<h2><a name="5_5">5.5 Does libstdc++ support TR1?</a></h2> <h2><a name="5_5">5.5 Does libstdc++ support TR1?</a></h2>
<p>The C++ Standard Library Technical Report adds many new features to the library. <p>The C++ Standard Library Technical Report adds many new features to
The latest version of this effort is described in the library. The latest version of this effort is described in
<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf"> <a href=
"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf">
Technical Report 1</a>. Technical Report 1</a>.
</p> </p>
<p>libstdc++ strives to implement all of TR1. <p>libstdc++ strives to implement all of TR1.
The libstdc++ implementation status of the TR1 draft is listed in An <a href="../ext/tr1.html">overview</a> of the implementation status
<a href="../ext/tr1.html">this page</a>. is available.
</p> </p>
<p>Briefly, the features of TR1 and the current status are: <p>Briefly, the features of TR1 and the current status are:
</p> </p>
<p><strong>Unordered containers - Complete -</strong> <p><strong>Unordered containers - Complete -</strong>
The unordered_set, unordered_map, unordered_multiset, and unordered_multimap containers The unordered_set, unordered_map, unordered_multiset, and
are hashed versions of the map, set, multimap, and multiset containers respectively. unordered_multimap containers are hashed versions of the map, set,
These classes are suitable replacements for the SGI STL hash_map and hash_set extensions. multimap, and multiset containers respectively. These classes are
suitable replacements for the SGI STL hash_map and hash_set
extensions.
</p> </p>
<p><strong>Reference-counted smart pointers - Complete -</strong> <p><strong>Reference-counted smart pointers - Complete -</strong>
The shared_ptr and weak_ptr allow several object to know about a pointer and whether it is valid. The shared_ptr and weak_ptr allow several object to know about a
When the last reference to the pointer is destroyed the pointer is freed. pointer and whether it is valid. When the last reference to the
pointer is destroyed the pointer is freed.
</p> </p>
<p><strong>Type traits - Complete -</strong> <p><strong>Type traits - Complete -</strong>
The type_traits class gives templates the ability to probe information about the input type The type_traits class gives templates the ability to probe
and enable type-dependent logic to be performed without the need of template specializations. information about the input type and enable type-dependent logic
to be performed without the need of template specializations.
</p> </p>
<p><strong>Fixed-size arrays - Complete -</strong> <p><strong>Fixed-size arrays - Complete -</strong>
The array class implements small fixed-sized arrays with container semantics. The array class implements small fixed-sized arrays with container
semantics.
</p> </p>
<p><strong>Tuples - Complete -</strong> <p><strong>Tuples - Complete -</strong>
The tuple class implements small heterogeneous arrays. This is an enhanced pair. The tuple class implements small heterogeneous arrays. This is an
In fact, the standard pair is enhanced with a tuple interface. enhanced pair. In fact, the standard pair is enhanced with a tuple
interface.
</p> </p>
<p><strong>A regular expression engine</strong> <p><strong>A regular expression engine</strong>
This library provides for regular expression objects with traversal of This library provides for regular expression objects with traversal
text with return of subexpressions. of text with return of subexpressions.
</p> </p>
<p><strong>A random number engine</strong> <p><strong>A random number engine</strong>
This library contains randow number generators with several different choices This library contains randow number generators with several different
of distribution. choices of distribution.
</p> </p>
<p><strong>Special functions - Under construction - </strong> <p><strong>Special functions - Under construction - </strong>
Twenty-three mathematical functions familiar to physicists and engineers are included: Twenty-three mathematical functions familiar to physicists and
cylindrical and spherical Bessel and Neumann functions, hypergeometric functions, engineers are included: cylindrical and spherical Bessel and Neumann
Laguerre polynomials, Legendre functions, elliptic integrals, exponential integrals functions, hypergeometric functions, Laguerre polynomials, Legendre
and the Riemann zeta function all for your computing pleasure. functions, elliptic integrals, exponential integrals and the Riemann
zeta function all for your computing pleasure.
</p> </p>
<p><strong>C99 compatibility - Under construction - </strong> <p><strong>C99 compatibility - Under construction - </strong>
There are many features designed to minimize the divergence of the C and the C++ languages. There are many features designed to minimize the divergence of the C
and the C++ languages.
</p> </p>
<hr /> <hr />

View file

@ -485,6 +485,7 @@ tr1_headers = \
${tr1_srcdir}/bind_iterate.h \ ${tr1_srcdir}/bind_iterate.h \
${tr1_srcdir}/boost_shared_ptr.h \ ${tr1_srcdir}/boost_shared_ptr.h \
${tr1_srcdir}/cctype \ ${tr1_srcdir}/cctype \
${tr1_srcdir}/cfenv \
${tr1_srcdir}/common.h \ ${tr1_srcdir}/common.h \
${tr1_srcdir}/complex \ ${tr1_srcdir}/complex \
${tr1_srcdir}/functional \ ${tr1_srcdir}/functional \

View file

@ -702,6 +702,7 @@ tr1_headers = \
${tr1_srcdir}/bind_iterate.h \ ${tr1_srcdir}/bind_iterate.h \
${tr1_srcdir}/boost_shared_ptr.h \ ${tr1_srcdir}/boost_shared_ptr.h \
${tr1_srcdir}/cctype \ ${tr1_srcdir}/cctype \
${tr1_srcdir}/cfenv \
${tr1_srcdir}/common.h \ ${tr1_srcdir}/common.h \
${tr1_srcdir}/complex \ ${tr1_srcdir}/complex \
${tr1_srcdir}/functional \ ${tr1_srcdir}/functional \

View file

@ -0,0 +1,86 @@
// TR1 cctype -*- C++ -*-
// Copyright (C) 2006 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file
* This is a TR1 C++ Library header.
*/
#ifndef _TR1_CFENV
#define _TR1_CFENV 1
#include <bits/c++config.h>
#if _GLIBCXX_HAVE_FENV_H
#include <fenv.h>
#endif
#if _GLIBCXX_USE_C99_FENV_TR1
#undef feclearexcept
#undef fegetexceptflag
#undef feraiseexcept
#undef fesetexceptflag
#undef fetestexcept
#undef fegetround
#undef fesetround
#undef fegetenv
#undef feholdexcept
#undef fesetenv
#undef feupdateenv
// namespace std::tr1
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(tr1)
// types
using ::fenv_t;
using ::fexcept_t;
// functions
using ::feclearexcept;
using ::fegetexceptflag;
using ::feraiseexcept;
using ::fesetexceptflag;
using ::fetestexcept;
using ::fegetround;
using ::fesetround;
using ::fegetenv;
using ::feholdexcept;
using ::fesetenv;
using ::feupdateenv;
_GLIBCXX_END_NAMESPACE
}
#endif
#endif

View file

@ -1,3 +1,5 @@
// { dg-do compile }
// 2006-01-25 Paolo Carlini <pcarlini@suse.de> // 2006-01-25 Paolo Carlini <pcarlini@suse.de>
// //
// Copyright (C) 2006 Free Software Foundation, Inc. // Copyright (C) 2006 Free Software Foundation, Inc.
@ -22,17 +24,12 @@
#include <tr1/cctype> #include <tr1/cctype>
void test01(int r = 0) void test01()
{ {
#if _GLIBCXX_USE_C99_CTYPE_TR1 #if _GLIBCXX_USE_C99_CTYPE_TR1
r = std::tr1::isblank(0);
#else int ch = 0, r;
r = 0; r = std::tr1::isblank(ch);
#endif #endif
} }
int main()
{
test01();
return 0;
}

View file

@ -0,0 +1,52 @@
// { dg-do compile }
// 2006-01-26 Paolo Carlini <pcarlini@suse.de>
//
// Copyright (C) 2006 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// 8.6 Header <cfenv>
#include <tr1/cfenv>
void test01()
{
#if _GLIBCXX_USE_C99_FENV_TR1
int except = 0, mode = 0;
std::tr1::fexcept_t* pflag = 0;
std::tr1::fenv_t* penv = 0;
int r;
r = std::tr1::feclearexcept(except);
r = std::tr1::fegetexceptflag(pflag, except);
r = std::tr1::feraiseexcept(except);
r = std::tr1::fesetexceptflag(pflag, except);
r = std::tr1::fetestexcept(except);
r = std::tr1::fegetround();
r = std::tr1::fesetround(mode);
r = std::tr1::fegetenv(penv);
r = std::tr1::feholdexcept(penv);
r = std::tr1::fesetenv(penv);
r = std::tr1::feupdateenv(penv);
#endif
}

View file

@ -0,0 +1,36 @@
// { dg-do compile }
// 2006-01-26 Paolo Carlini <pcarlini@suse.de>
//
// Copyright (C) 2006 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// 8.6 Header <cfenv>
#include <tr1/cfenv>
void test01()
{
#if _GLIBCXX_USE_C99_FENV_TR1
// Check for required typedefs
typedef std::tr1::fenv_t fenv_t_type;
typedef std::tr1::fexcept_t fexcept_t_type;
#endif
}

View file

@ -1,3 +1,5 @@
// { dg-do compile }
// 2006-01-10 Paolo Carlini <pcarlini@suse.de> // 2006-01-10 Paolo Carlini <pcarlini@suse.de>
// //
// Copyright (C) 2006 Free Software Foundation, Inc. // Copyright (C) 2006 Free Software Foundation, Inc.
@ -25,19 +27,18 @@
template<typename T> template<typename T>
void test01_do() void test01_do()
{ {
using namespace std::tr1;
typedef std::complex<T> cmplx_type; typedef std::complex<T> cmplx_type;
cmplx_type ans; cmplx_type ans;
ans = acos(cmplx_type(1.0, 1.0)); ans = std::tr1::acos(cmplx_type(1.0, 1.0));
ans = asin(cmplx_type(1.0, 1.0)); ans = std::tr1::asin(cmplx_type(1.0, 1.0));
ans = atan(cmplx_type(1.0, 1.0)); ans = std::tr1::atan(cmplx_type(1.0, 1.0));
ans = acosh(cmplx_type(1.0, 1.0)); ans = std::tr1::acosh(cmplx_type(1.0, 1.0));
ans = asinh(cmplx_type(1.0, 1.0)); ans = std::tr1::asinh(cmplx_type(1.0, 1.0));
ans = atanh(cmplx_type(1.0, 1.0)); ans = std::tr1::atanh(cmplx_type(1.0, 1.0));
ans = fabs(cmplx_type(1.0, 1.0)); ans = std::tr1::fabs(cmplx_type(1.0, 1.0));
} }
void test01() void test01()
@ -46,9 +47,3 @@ void test01()
test01_do<double>(); test01_do<double>();
test01_do<long double>(); test01_do<long double>();
} }
int main()
{
test01();
return 0;
}