You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by Martin Sebor <se...@roguewave.com> on 2008/02/21 18:44:13 UTC

Re: svn commit: r629825 - in /stdcxx/trunk/etc/config/src: FLOAT.cpp LDBL_PRINTF_PREFIX.cpp float_defs.h

faridz@apache.org wrote:
> Author: faridz
> Date: Thu Feb 21 07:33:55 2008
> New Revision: 629825
> 
> URL: http://svn.apache.org/viewvc?rev=629825&view=rev
> Log:
> 2008-02-21  Farid Zaripov  <fa...@epam.com>
> 
> 	* etc/config/src/float_defs.h: New file with a definitions
> 	of the floating point constants.
> 	* etc/config/src/FLOAT.cpp: #including the "float_defs.h"
> 	instead of defining the floating point constants in file.
> 	* etc/config/src/LDBL_PRINTF_PREFIX.cpp: Ditto.
> 
> Added:
>     stdcxx/trunk/etc/config/src/float_defs.h   (with props)
> Modified:
>     stdcxx/trunk/etc/config/src/FLOAT.cpp
>     stdcxx/trunk/etc/config/src/LDBL_PRINTF_PREFIX.cpp
> 
> Modified: stdcxx/trunk/etc/config/src/FLOAT.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/trunk/etc/config/src/FLOAT.cpp?rev=629825&r1=629824&r2=629825&view=diff
> ==============================================================================
> --- stdcxx/trunk/etc/config/src/FLOAT.cpp (original)
> +++ stdcxx/trunk/etc/config/src/FLOAT.cpp Thu Feb 21 07:33:55 2008
> @@ -30,10 +30,10 @@
>  #include "config.h"
>  
>  enum {
> -    // the enumerators belo are expected to be hidden by macros #defined
> -    // in the <float.h> header #included below; references to macros that
> -    // are not #defined in the header will silently use these enumerators
> -    // and prevent compilation errors that would result otherwise
> +    // the enumerators below are expected to be hidden by macros #defined
> +    // in the "float_defs.h" header #included below;
                   ^^^^^^^^^^^^

FYI: In the general case, we do expect the enums to be hidden by
the macros defined in <float.h>. It's only when the macros aren't
#defined there that the enums should be picked up. The exception
is platforms where we can't compile <float.h> and for which we
define the FLT_XXX, DBL_XXX, and LDBL_XXX macros ourselves.

Martin

>         references to macros
> +    // that are not #defined in the header will silently use these
> +    // enumerators and prevent compilation errors that would result otherwise
>      DBL_DIG         =    15,   // default
>      DBL_MANT_DIG    =    53,
>      DBL_MAX_10_EXP  =   308,
> @@ -62,99 +62,7 @@
>  #include <stdio.h>    // for printf()
>  #include <stdlib.h>   // for strtod()
>  
> -#ifndef _RWSTD_NO_FLOAT_H
> -#  include <float.h>
> -
> -#  if defined (__EDG__) && !defined (__INTEL_COMPILER)
> -     // define gcc 4 intrinsics otherwise not recognized
> -     // by the front end
> -#    define __FLT_DIG__              6
> -#    define __FLT_EPSILON__          1.19209290e-7F
> -#    define __FLT_MANT_DIG__        24
> -#    define __FLT_MAX__              3.40282347e+38F
> -#    define __FLT_MAX_10_EXP__      38
> -#    define __FLT_MAX_EXP__        128
> -#    define __FLT_MIN__              1.17549435e-38F
> -#    define __FLT_MIN_10_EXP__     -37
> -#    define __FLT_MIN_EXP__       -125
> -#    define __FLT_RADIX__            2
> -
> -#    define __DBL_DIG__             15
> -#    define __DBL_EPSILON__          2.2204460492503131e-16
> -#    define __DBL_MANT_DIG__        53
> -#    define __DBL_MAX__              1.7976931348623157e+308
> -#    define __DBL_MAX_10_EXP__     308
> -#    define __DBL_MAX_EXP__       1024
> -#    define __DBL_MIN__              2.2250738585072014e-308
> -#    define __DBL_MIN_10_EXP__    -307
> -#    define __DBL_MIN_EXP__      -1021
> -
> -#    define __LDBL_DIG__            18
> -#    define __LDBL_EPSILON__         1.08420217248550443401e-19L
> -#    define __LDBL_MANT_DIG__       64
> -#    define __LDBL_MAX__             1.18973149535723176502e+4932L
> -#    define __LDBL_MAX_10_EXP__   4932
> -#    define __LDBL_MAX_EXP__     16384
> -#    define __LDBL_MIN__             3.36210314311209350626e-4932L
> -#    define __LDBL_MIN_10_EXP__  -4931
> -#    define __LDBL_MIN_EXP__    -16381
> -
> -     // Linux value
> -#    define _RWSTD_FLT_ROUNDS     1   /* round to nearest */
> -
> -#    if __GNUC__ < 4
> -
> -      // prevent the propriterary gcc __extension__ from
> -      // throwing the vanilla EDG demo for a loop
> -
> -#      undef LDBL_EPSILON
> -#      undef LDBL_MIN
> -#      undef LDBL_MAX
> -
> -       // redefine to prevent compilation errors
> -#      define LDBL_EPSILON 1.0842021724855044e-19L
> -#      define LDBL_MIN     3.3621031431120935e-4932L
> -#      define LDBL_MAX     1.1897314953572317e+4932L
> -#    endif   //gcc 3 (as the back end for eccp)
> -#  endif   //  EDG eccp vanilla front end
> -#else   // if defined (_RWSTD_NO_FLOAT_H)
> -   // assume IEEE 754 floating point
> -   // FIXME: autodetect floating point format
> -#  define FLT_DIG               6
> -#  define FLT_EPSILON           1.19209290e-7F
> -#  define FLT_MANT_DIG         24
> -#  define FLT_MAX               3.40282347e+38F
> -#  define FLT_MAX_10_EXP       38
> -#  define FLT_MAX_EXP         128
> -#  define FLT_MIN               1.17549435e-38F
> -#  define FLT_MIN_10_EXP      -37
> -#  define FLT_MIN_EXP        -125
> -#  define FLT_RADIX             2
> -
> -#  define DBL_DIG              15
> -#  define DBL_EPSILON           2.2204460492503131e-16
> -#  define DBL_MANT_DIG         53
> -#  define DBL_MAX               1.7976931348623157e+308
> -#  define DBL_MAX_10_EXP      308
> -#  define DBL_MAX_EXP        1024
> -#  define DBL_MIN               2.2250738585072014e-308
> -#  define DBL_MIN_10_EXP     -307
> -#  define DBL_MIN_EXP       -1021
> -
> -#  define LDBL_DIG             18
> -#  define LDBL_EPSILON          1.08420217248550443401e-19L
> -#  define LDBL_MANT_DIG        64
> -#  define LDBL_MAX              1.18973149535723176502e+4932L
> -#  define LDBL_MAX_10_EXP    4932
> -#  define LDBL_MAX_EXP      16384
> -#  define LDBL_MIN              3.36210314311209350626e-4932L
> -#  define LDBL_MIN_10_EXP   -4931
> -#  define LDBL_MIN_EXP     -16381
> -
> -   // Linux value
> -#  define _RWSTD_FLT_ROUNDS     1   /* round to nearest */
> -#endif   // _RWSTD_NO_FLOAT_H
> -
> +#include "float_defs.h"   // for FLT_XXX, DBL_XXX, LDBL_XXX constants
>  
>  #ifndef _RWSTD_NO_LIBC_EXCEPTION_SPEC
>  #  define LIBC_THROWS()   throw ()
> 
> Modified: stdcxx/trunk/etc/config/src/LDBL_PRINTF_PREFIX.cpp
> URL: http://svn.apache.org/viewvc/stdcxx/trunk/etc/config/src/LDBL_PRINTF_PREFIX.cpp?rev=629825&r1=629824&r2=629825&view=diff
> ==============================================================================
> --- stdcxx/trunk/etc/config/src/LDBL_PRINTF_PREFIX.cpp (original)
> +++ stdcxx/trunk/etc/config/src/LDBL_PRINTF_PREFIX.cpp Thu Feb 21 07:33:55 2008
> @@ -25,24 +25,7 @@
>  #include <stdio.h>
>  
>  #include "config.h"
> -
> -#ifndef _RWSTD_NO_FLOAT_H
> -#  include <float.h>
> -
> -#  if defined (__EDG__) && defined (__linux__)
> -
> -     // gcc on Linux #defines these using its own propriterary __extension__
> -#    undef LDBL_EPSILON
> -#    undef LDBL_MIN
> -#    undef LDBL_MAX
> -
> -     // redefine to prevent compilation errors
> -#    define LDBL_EPSILON 1.0842021724855044e-19L
> -#    define LDBL_MIN     3.3621031431120935e-4932L
> -#    define LDBL_MAX     1.1897314953572317e+4932L
> -#  endif   // defined (__EDG__) && defined (__linux__)
> -
> -#endif   // _RWSTD_NO_FLOAT_H
> +#include "float_defs.h"   // for LDBL_XXX constants
>  
>  
>  // avoid having to #include <string.h>
> 
> Added: stdcxx/trunk/etc/config/src/float_defs.h
> URL: http://svn.apache.org/viewvc/stdcxx/trunk/etc/config/src/float_defs.h?rev=629825&view=auto
> ==============================================================================
> --- stdcxx/trunk/etc/config/src/float_defs.h (added)
> +++ stdcxx/trunk/etc/config/src/float_defs.h Thu Feb 21 07:33:55 2008
> @@ -0,0 +1,118 @@
> +// definitions of the floating point constants
> +
> +/***************************************************************************
> + *
> + * Licensed to the Apache Software  Foundation (ASF) under one or more
> + * contributor  license agreements.  See  the NOTICE  file distributed
> + * with  this  work  for  additional information  regarding  copyright
> + * ownership.   The ASF  licenses this  file to  you under  the Apache
> + * License, Version  2.0 (the  License); you may  not use  this file
> + * except in  compliance with the License.   You may obtain  a copy of
> + * the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the  License is distributed on an  "AS IS" BASIS,
> + * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
> + * implied.   See  the License  for  the  specific language  governing
> + * permissions and limitations under the License.
> + *
> + * Copyright 1999-2008 Rogue Wave Software, Inc.
> + * 
> + **************************************************************************/
> +
> +// this file must be included only after the config.h
> +
> +#ifndef _RWSTD_NO_FLOAT_H
> +#  include <float.h>
> +
> +#  if defined (__EDG__) && !defined (__INTEL_COMPILER)
> +     // define gcc 4 intrinsics otherwise not recognized
> +     // by the front end
> +#    define __FLT_DIG__              6
> +#    define __FLT_EPSILON__          1.19209290e-7F
> +#    define __FLT_MANT_DIG__        24
> +#    define __FLT_MAX__              3.40282347e+38F
> +#    define __FLT_MAX_10_EXP__      38
> +#    define __FLT_MAX_EXP__        128
> +#    define __FLT_MIN__              1.17549435e-38F
> +#    define __FLT_MIN_10_EXP__     -37
> +#    define __FLT_MIN_EXP__       -125
> +#    define __FLT_RADIX__            2
> +
> +#    define __DBL_DIG__             15
> +#    define __DBL_EPSILON__          2.2204460492503131e-16
> +#    define __DBL_MANT_DIG__        53
> +#    define __DBL_MAX__              1.7976931348623157e+308
> +#    define __DBL_MAX_10_EXP__     308
> +#    define __DBL_MAX_EXP__       1024
> +#    define __DBL_MIN__              2.2250738585072014e-308
> +#    define __DBL_MIN_10_EXP__    -307
> +#    define __DBL_MIN_EXP__      -1021
> +
> +#    define __LDBL_DIG__            18
> +#    define __LDBL_EPSILON__         1.08420217248550443401e-19L
> +#    define __LDBL_MANT_DIG__       64
> +#    define __LDBL_MAX__             1.18973149535723176502e+4932L
> +#    define __LDBL_MAX_10_EXP__   4932
> +#    define __LDBL_MAX_EXP__     16384
> +#    define __LDBL_MIN__             3.36210314311209350626e-4932L
> +#    define __LDBL_MIN_10_EXP__  -4931
> +#    define __LDBL_MIN_EXP__    -16381
> +
> +     // Linux value
> +#    define _RWSTD_FLT_ROUNDS     1   /* round to nearest */
> +
> +#    if __GNUC__ < 4
> +
> +      // prevent the propriterary gcc __extension__ from
> +      // throwing the vanilla EDG demo for a loop
> +
> +#      undef LDBL_EPSILON
> +#      undef LDBL_MIN
> +#      undef LDBL_MAX
> +
> +       // redefine to prevent compilation errors
> +#      define LDBL_EPSILON 1.0842021724855044e-19L
> +#      define LDBL_MIN     3.3621031431120935e-4932L
> +#      define LDBL_MAX     1.1897314953572317e+4932L
> +#    endif   //gcc 3 (as the back end for eccp)
> +#  endif   //  EDG eccp vanilla front end
> +#else   // if defined (_RWSTD_NO_FLOAT_H)
> +   // assume IEEE 754 floating point
> +   // FIXME: autodetect floating point format
> +#  define FLT_DIG               6
> +#  define FLT_EPSILON           1.19209290e-7F
> +#  define FLT_MANT_DIG         24
> +#  define FLT_MAX               3.40282347e+38F
> +#  define FLT_MAX_10_EXP       38
> +#  define FLT_MAX_EXP         128
> +#  define FLT_MIN               1.17549435e-38F
> +#  define FLT_MIN_10_EXP      -37
> +#  define FLT_MIN_EXP        -125
> +#  define FLT_RADIX             2
> +
> +#  define DBL_DIG              15
> +#  define DBL_EPSILON           2.2204460492503131e-16
> +#  define DBL_MANT_DIG         53
> +#  define DBL_MAX               1.7976931348623157e+308
> +#  define DBL_MAX_10_EXP      308
> +#  define DBL_MAX_EXP        1024
> +#  define DBL_MIN               2.2250738585072014e-308
> +#  define DBL_MIN_10_EXP     -307
> +#  define DBL_MIN_EXP       -1021
> +
> +#  define LDBL_DIG             18
> +#  define LDBL_EPSILON          1.08420217248550443401e-19L
> +#  define LDBL_MANT_DIG        64
> +#  define LDBL_MAX              1.18973149535723176502e+4932L
> +#  define LDBL_MAX_10_EXP    4932
> +#  define LDBL_MAX_EXP      16384
> +#  define LDBL_MIN              3.36210314311209350626e-4932L
> +#  define LDBL_MIN_10_EXP   -4931
> +#  define LDBL_MIN_EXP     -16381
> +
> +   // Linux value
> +#  define _RWSTD_FLT_ROUNDS     1   /* round to nearest */
> +#endif   // _RWSTD_NO_FLOAT_H
> 
> Propchange: stdcxx/trunk/etc/config/src/float_defs.h
> ------------------------------------------------------------------------------
>     svn:eol-style = native
> 
> Propchange: stdcxx/trunk/etc/config/src/float_defs.h
> ------------------------------------------------------------------------------
>     svn:keywords = Id
> 
> 
>