poco/Foundation/include/Poco/FPEnvironment_C99.h

188 lines
3.7 KiB
C
Raw Normal View History

2012-04-29 18:52:25 +00:00
//
// FPEnvironment_C99.h
//
// $Id: //poco/1.4/Foundation/include/Poco/FPEnvironment_C99.h#1 $
//
// Library: Foundation
// Package: Core
// Module: FPEnvironment
//
// Definitions of class FPEnvironmentImpl for C99.
//
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier: BSL-1.0
2012-04-29 18:52:25 +00:00
//
#ifndef Foundation_FPEnvironment_C99_INCLUDED
#define Foundation_FPEnvironment_C99_INCLUDED
#include "Poco/Foundation.h"
#include <fenv.h>
#include <cmath>
2012-04-29 18:52:25 +00:00
namespace Poco {
class FPEnvironmentImpl
{
protected:
enum RoundingModeImpl
{
fp: support environments without hardware floating point | cd <build>/Foundation && \ | mipsel-poky-linux-musl-g++ -DFoundation_EXPORTS -DHAVE_PTHREAD_SETAFFINITY_NP -DHAVE_THREE_PARAM_SCHED_SETAFFINITY \ | -DPCRE_STATIC -DPOCO_HAVE_FD_EPOLL -DPOCO_NO_AUTOMATIC_LIBS -DPOCO_OS_FAMILY_UNIX -DPOCO_UNBUNDLED \ | -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_REENTRANT -D_THREAD_SAFE -D_XOPEN_SOURCE=500 \ | -I<sysroot>/usr/include -I<poco>/Foundation/include -I<poco>/Foundation/src \ | -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed -mtune=24kec -mdsp \ | --sysroot=<sysroot> -O2 -pipe -g -feliminate-unused-debug-types \ | -fstack-protector-strong -pie -fpie -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security \ | -fvisibility-inlines-hidden -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed \ | -mtune=24kec -mdsp --sysroot=<sysroot> -O2 -g -DNDEBUG -fPIC \ | -o CMakeFiles/Foundation.dir/src/ArchiveStrategy.cpp.o \ | -c <poco>/Foundation/src/ArchiveStrategy.cpp | In file included from <poco>/Foundation/include/Poco/FPEnvironment.h:33:0, | from <poco>/Foundation/include/Poco/NumericString.h:25, | from <poco>/Foundation/include/Poco/NumberFormatter.h:24, | from <poco>/Foundation/include/Poco/ArchiveStrategy.h:27, | from <poco>/Foundation/src/ArchiveStrategy.cpp:17: | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:36:30: error: 'FE_DOWNWARD' was not declared in this scope | FP_ROUND_DOWNWARD_IMPL = FE_DOWNWARD, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:37:30: error: 'FE_UPWARD' was not declared in this scope | FP_ROUND_UPWARD_IMPL = FE_UPWARD, | ^~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:39:30: error: 'FE_TOWARDZERO' was not declared in this scope | FP_ROUND_TOWARDZERO_IMPL = FE_TOWARDZERO | ^~~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:43:28: error: 'FE_DIVBYZERO' was not declared in this scope | FP_DIVIDE_BY_ZERO_IMPL = FE_DIVBYZERO, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:44:28: error: 'FE_INEXACT' was not declared in this scope | FP_INEXACT_IMPL = FE_INEXACT, | ^~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:45:28: error: 'FE_OVERFLOW' was not declared in this scope | FP_OVERFLOW_IMPL = FE_OVERFLOW, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:46:28: error: 'FE_UNDERFLOW' was not declared in this scope | FP_UNDERFLOW_IMPL = FE_UNDERFLOW, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:47:28: error: 'FE_INVALID' was not declared in this scope | FP_INVALID_IMPL = FE_INVALID | ^~~~~~~~~~ The reason is that some (notably FPU-less) architectures, including mips*-nf, don't define/implement some of the floating point constants, even though fenv.h is available. The key point is: A fully standards conforming fenv.h does not have to define any FE_* macros, and if it does define them, then it defines macros only for the FP exceptions it actually supports. See similar issue in boost: https://svn.boost.org/trac/boost/ticket/11756
2017-03-22 11:07:16 +00:00
#if defined(FE_DOWNWARD)
2012-04-29 18:52:25 +00:00
FP_ROUND_DOWNWARD_IMPL = FE_DOWNWARD,
fp: support environments without hardware floating point | cd <build>/Foundation && \ | mipsel-poky-linux-musl-g++ -DFoundation_EXPORTS -DHAVE_PTHREAD_SETAFFINITY_NP -DHAVE_THREE_PARAM_SCHED_SETAFFINITY \ | -DPCRE_STATIC -DPOCO_HAVE_FD_EPOLL -DPOCO_NO_AUTOMATIC_LIBS -DPOCO_OS_FAMILY_UNIX -DPOCO_UNBUNDLED \ | -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_REENTRANT -D_THREAD_SAFE -D_XOPEN_SOURCE=500 \ | -I<sysroot>/usr/include -I<poco>/Foundation/include -I<poco>/Foundation/src \ | -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed -mtune=24kec -mdsp \ | --sysroot=<sysroot> -O2 -pipe -g -feliminate-unused-debug-types \ | -fstack-protector-strong -pie -fpie -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security \ | -fvisibility-inlines-hidden -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed \ | -mtune=24kec -mdsp --sysroot=<sysroot> -O2 -g -DNDEBUG -fPIC \ | -o CMakeFiles/Foundation.dir/src/ArchiveStrategy.cpp.o \ | -c <poco>/Foundation/src/ArchiveStrategy.cpp | In file included from <poco>/Foundation/include/Poco/FPEnvironment.h:33:0, | from <poco>/Foundation/include/Poco/NumericString.h:25, | from <poco>/Foundation/include/Poco/NumberFormatter.h:24, | from <poco>/Foundation/include/Poco/ArchiveStrategy.h:27, | from <poco>/Foundation/src/ArchiveStrategy.cpp:17: | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:36:30: error: 'FE_DOWNWARD' was not declared in this scope | FP_ROUND_DOWNWARD_IMPL = FE_DOWNWARD, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:37:30: error: 'FE_UPWARD' was not declared in this scope | FP_ROUND_UPWARD_IMPL = FE_UPWARD, | ^~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:39:30: error: 'FE_TOWARDZERO' was not declared in this scope | FP_ROUND_TOWARDZERO_IMPL = FE_TOWARDZERO | ^~~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:43:28: error: 'FE_DIVBYZERO' was not declared in this scope | FP_DIVIDE_BY_ZERO_IMPL = FE_DIVBYZERO, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:44:28: error: 'FE_INEXACT' was not declared in this scope | FP_INEXACT_IMPL = FE_INEXACT, | ^~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:45:28: error: 'FE_OVERFLOW' was not declared in this scope | FP_OVERFLOW_IMPL = FE_OVERFLOW, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:46:28: error: 'FE_UNDERFLOW' was not declared in this scope | FP_UNDERFLOW_IMPL = FE_UNDERFLOW, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:47:28: error: 'FE_INVALID' was not declared in this scope | FP_INVALID_IMPL = FE_INVALID | ^~~~~~~~~~ The reason is that some (notably FPU-less) architectures, including mips*-nf, don't define/implement some of the floating point constants, even though fenv.h is available. The key point is: A fully standards conforming fenv.h does not have to define any FE_* macros, and if it does define them, then it defines macros only for the FP exceptions it actually supports. See similar issue in boost: https://svn.boost.org/trac/boost/ticket/11756
2017-03-22 11:07:16 +00:00
#else
FP_ROUND_DOWNWARD_IMPL = 0,
#endif
#if defined(FE_UPWARD)
2012-04-29 18:52:25 +00:00
FP_ROUND_UPWARD_IMPL = FE_UPWARD,
fp: support environments without hardware floating point | cd <build>/Foundation && \ | mipsel-poky-linux-musl-g++ -DFoundation_EXPORTS -DHAVE_PTHREAD_SETAFFINITY_NP -DHAVE_THREE_PARAM_SCHED_SETAFFINITY \ | -DPCRE_STATIC -DPOCO_HAVE_FD_EPOLL -DPOCO_NO_AUTOMATIC_LIBS -DPOCO_OS_FAMILY_UNIX -DPOCO_UNBUNDLED \ | -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_REENTRANT -D_THREAD_SAFE -D_XOPEN_SOURCE=500 \ | -I<sysroot>/usr/include -I<poco>/Foundation/include -I<poco>/Foundation/src \ | -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed -mtune=24kec -mdsp \ | --sysroot=<sysroot> -O2 -pipe -g -feliminate-unused-debug-types \ | -fstack-protector-strong -pie -fpie -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security \ | -fvisibility-inlines-hidden -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed \ | -mtune=24kec -mdsp --sysroot=<sysroot> -O2 -g -DNDEBUG -fPIC \ | -o CMakeFiles/Foundation.dir/src/ArchiveStrategy.cpp.o \ | -c <poco>/Foundation/src/ArchiveStrategy.cpp | In file included from <poco>/Foundation/include/Poco/FPEnvironment.h:33:0, | from <poco>/Foundation/include/Poco/NumericString.h:25, | from <poco>/Foundation/include/Poco/NumberFormatter.h:24, | from <poco>/Foundation/include/Poco/ArchiveStrategy.h:27, | from <poco>/Foundation/src/ArchiveStrategy.cpp:17: | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:36:30: error: 'FE_DOWNWARD' was not declared in this scope | FP_ROUND_DOWNWARD_IMPL = FE_DOWNWARD, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:37:30: error: 'FE_UPWARD' was not declared in this scope | FP_ROUND_UPWARD_IMPL = FE_UPWARD, | ^~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:39:30: error: 'FE_TOWARDZERO' was not declared in this scope | FP_ROUND_TOWARDZERO_IMPL = FE_TOWARDZERO | ^~~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:43:28: error: 'FE_DIVBYZERO' was not declared in this scope | FP_DIVIDE_BY_ZERO_IMPL = FE_DIVBYZERO, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:44:28: error: 'FE_INEXACT' was not declared in this scope | FP_INEXACT_IMPL = FE_INEXACT, | ^~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:45:28: error: 'FE_OVERFLOW' was not declared in this scope | FP_OVERFLOW_IMPL = FE_OVERFLOW, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:46:28: error: 'FE_UNDERFLOW' was not declared in this scope | FP_UNDERFLOW_IMPL = FE_UNDERFLOW, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:47:28: error: 'FE_INVALID' was not declared in this scope | FP_INVALID_IMPL = FE_INVALID | ^~~~~~~~~~ The reason is that some (notably FPU-less) architectures, including mips*-nf, don't define/implement some of the floating point constants, even though fenv.h is available. The key point is: A fully standards conforming fenv.h does not have to define any FE_* macros, and if it does define them, then it defines macros only for the FP exceptions it actually supports. See similar issue in boost: https://svn.boost.org/trac/boost/ticket/11756
2017-03-22 11:07:16 +00:00
#else
FP_ROUND_UPWARD_IMPL = 0,
#endif
#if defined(FE_TONEAREST)
2012-04-29 18:52:25 +00:00
FP_ROUND_TONEAREST_IMPL = FE_TONEAREST,
fp: support environments without hardware floating point | cd <build>/Foundation && \ | mipsel-poky-linux-musl-g++ -DFoundation_EXPORTS -DHAVE_PTHREAD_SETAFFINITY_NP -DHAVE_THREE_PARAM_SCHED_SETAFFINITY \ | -DPCRE_STATIC -DPOCO_HAVE_FD_EPOLL -DPOCO_NO_AUTOMATIC_LIBS -DPOCO_OS_FAMILY_UNIX -DPOCO_UNBUNDLED \ | -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_REENTRANT -D_THREAD_SAFE -D_XOPEN_SOURCE=500 \ | -I<sysroot>/usr/include -I<poco>/Foundation/include -I<poco>/Foundation/src \ | -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed -mtune=24kec -mdsp \ | --sysroot=<sysroot> -O2 -pipe -g -feliminate-unused-debug-types \ | -fstack-protector-strong -pie -fpie -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security \ | -fvisibility-inlines-hidden -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed \ | -mtune=24kec -mdsp --sysroot=<sysroot> -O2 -g -DNDEBUG -fPIC \ | -o CMakeFiles/Foundation.dir/src/ArchiveStrategy.cpp.o \ | -c <poco>/Foundation/src/ArchiveStrategy.cpp | In file included from <poco>/Foundation/include/Poco/FPEnvironment.h:33:0, | from <poco>/Foundation/include/Poco/NumericString.h:25, | from <poco>/Foundation/include/Poco/NumberFormatter.h:24, | from <poco>/Foundation/include/Poco/ArchiveStrategy.h:27, | from <poco>/Foundation/src/ArchiveStrategy.cpp:17: | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:36:30: error: 'FE_DOWNWARD' was not declared in this scope | FP_ROUND_DOWNWARD_IMPL = FE_DOWNWARD, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:37:30: error: 'FE_UPWARD' was not declared in this scope | FP_ROUND_UPWARD_IMPL = FE_UPWARD, | ^~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:39:30: error: 'FE_TOWARDZERO' was not declared in this scope | FP_ROUND_TOWARDZERO_IMPL = FE_TOWARDZERO | ^~~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:43:28: error: 'FE_DIVBYZERO' was not declared in this scope | FP_DIVIDE_BY_ZERO_IMPL = FE_DIVBYZERO, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:44:28: error: 'FE_INEXACT' was not declared in this scope | FP_INEXACT_IMPL = FE_INEXACT, | ^~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:45:28: error: 'FE_OVERFLOW' was not declared in this scope | FP_OVERFLOW_IMPL = FE_OVERFLOW, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:46:28: error: 'FE_UNDERFLOW' was not declared in this scope | FP_UNDERFLOW_IMPL = FE_UNDERFLOW, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:47:28: error: 'FE_INVALID' was not declared in this scope | FP_INVALID_IMPL = FE_INVALID | ^~~~~~~~~~ The reason is that some (notably FPU-less) architectures, including mips*-nf, don't define/implement some of the floating point constants, even though fenv.h is available. The key point is: A fully standards conforming fenv.h does not have to define any FE_* macros, and if it does define them, then it defines macros only for the FP exceptions it actually supports. See similar issue in boost: https://svn.boost.org/trac/boost/ticket/11756
2017-03-22 11:07:16 +00:00
#else
FP_ROUND_TONEAREST_IMPL = 0,
#endif
#if defined(FE_TOWARDZERO)
2012-04-29 18:52:25 +00:00
FP_ROUND_TOWARDZERO_IMPL = FE_TOWARDZERO
fp: support environments without hardware floating point | cd <build>/Foundation && \ | mipsel-poky-linux-musl-g++ -DFoundation_EXPORTS -DHAVE_PTHREAD_SETAFFINITY_NP -DHAVE_THREE_PARAM_SCHED_SETAFFINITY \ | -DPCRE_STATIC -DPOCO_HAVE_FD_EPOLL -DPOCO_NO_AUTOMATIC_LIBS -DPOCO_OS_FAMILY_UNIX -DPOCO_UNBUNDLED \ | -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_REENTRANT -D_THREAD_SAFE -D_XOPEN_SOURCE=500 \ | -I<sysroot>/usr/include -I<poco>/Foundation/include -I<poco>/Foundation/src \ | -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed -mtune=24kec -mdsp \ | --sysroot=<sysroot> -O2 -pipe -g -feliminate-unused-debug-types \ | -fstack-protector-strong -pie -fpie -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security \ | -fvisibility-inlines-hidden -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed \ | -mtune=24kec -mdsp --sysroot=<sysroot> -O2 -g -DNDEBUG -fPIC \ | -o CMakeFiles/Foundation.dir/src/ArchiveStrategy.cpp.o \ | -c <poco>/Foundation/src/ArchiveStrategy.cpp | In file included from <poco>/Foundation/include/Poco/FPEnvironment.h:33:0, | from <poco>/Foundation/include/Poco/NumericString.h:25, | from <poco>/Foundation/include/Poco/NumberFormatter.h:24, | from <poco>/Foundation/include/Poco/ArchiveStrategy.h:27, | from <poco>/Foundation/src/ArchiveStrategy.cpp:17: | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:36:30: error: 'FE_DOWNWARD' was not declared in this scope | FP_ROUND_DOWNWARD_IMPL = FE_DOWNWARD, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:37:30: error: 'FE_UPWARD' was not declared in this scope | FP_ROUND_UPWARD_IMPL = FE_UPWARD, | ^~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:39:30: error: 'FE_TOWARDZERO' was not declared in this scope | FP_ROUND_TOWARDZERO_IMPL = FE_TOWARDZERO | ^~~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:43:28: error: 'FE_DIVBYZERO' was not declared in this scope | FP_DIVIDE_BY_ZERO_IMPL = FE_DIVBYZERO, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:44:28: error: 'FE_INEXACT' was not declared in this scope | FP_INEXACT_IMPL = FE_INEXACT, | ^~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:45:28: error: 'FE_OVERFLOW' was not declared in this scope | FP_OVERFLOW_IMPL = FE_OVERFLOW, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:46:28: error: 'FE_UNDERFLOW' was not declared in this scope | FP_UNDERFLOW_IMPL = FE_UNDERFLOW, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:47:28: error: 'FE_INVALID' was not declared in this scope | FP_INVALID_IMPL = FE_INVALID | ^~~~~~~~~~ The reason is that some (notably FPU-less) architectures, including mips*-nf, don't define/implement some of the floating point constants, even though fenv.h is available. The key point is: A fully standards conforming fenv.h does not have to define any FE_* macros, and if it does define them, then it defines macros only for the FP exceptions it actually supports. See similar issue in boost: https://svn.boost.org/trac/boost/ticket/11756
2017-03-22 11:07:16 +00:00
#else
FP_ROUND_TOWARDZERO_IMPL = 0
#endif
2012-04-29 18:52:25 +00:00
};
enum FlagImpl
{
fp: support environments without hardware floating point | cd <build>/Foundation && \ | mipsel-poky-linux-musl-g++ -DFoundation_EXPORTS -DHAVE_PTHREAD_SETAFFINITY_NP -DHAVE_THREE_PARAM_SCHED_SETAFFINITY \ | -DPCRE_STATIC -DPOCO_HAVE_FD_EPOLL -DPOCO_NO_AUTOMATIC_LIBS -DPOCO_OS_FAMILY_UNIX -DPOCO_UNBUNDLED \ | -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_REENTRANT -D_THREAD_SAFE -D_XOPEN_SOURCE=500 \ | -I<sysroot>/usr/include -I<poco>/Foundation/include -I<poco>/Foundation/src \ | -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed -mtune=24kec -mdsp \ | --sysroot=<sysroot> -O2 -pipe -g -feliminate-unused-debug-types \ | -fstack-protector-strong -pie -fpie -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security \ | -fvisibility-inlines-hidden -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed \ | -mtune=24kec -mdsp --sysroot=<sysroot> -O2 -g -DNDEBUG -fPIC \ | -o CMakeFiles/Foundation.dir/src/ArchiveStrategy.cpp.o \ | -c <poco>/Foundation/src/ArchiveStrategy.cpp | In file included from <poco>/Foundation/include/Poco/FPEnvironment.h:33:0, | from <poco>/Foundation/include/Poco/NumericString.h:25, | from <poco>/Foundation/include/Poco/NumberFormatter.h:24, | from <poco>/Foundation/include/Poco/ArchiveStrategy.h:27, | from <poco>/Foundation/src/ArchiveStrategy.cpp:17: | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:36:30: error: 'FE_DOWNWARD' was not declared in this scope | FP_ROUND_DOWNWARD_IMPL = FE_DOWNWARD, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:37:30: error: 'FE_UPWARD' was not declared in this scope | FP_ROUND_UPWARD_IMPL = FE_UPWARD, | ^~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:39:30: error: 'FE_TOWARDZERO' was not declared in this scope | FP_ROUND_TOWARDZERO_IMPL = FE_TOWARDZERO | ^~~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:43:28: error: 'FE_DIVBYZERO' was not declared in this scope | FP_DIVIDE_BY_ZERO_IMPL = FE_DIVBYZERO, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:44:28: error: 'FE_INEXACT' was not declared in this scope | FP_INEXACT_IMPL = FE_INEXACT, | ^~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:45:28: error: 'FE_OVERFLOW' was not declared in this scope | FP_OVERFLOW_IMPL = FE_OVERFLOW, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:46:28: error: 'FE_UNDERFLOW' was not declared in this scope | FP_UNDERFLOW_IMPL = FE_UNDERFLOW, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:47:28: error: 'FE_INVALID' was not declared in this scope | FP_INVALID_IMPL = FE_INVALID | ^~~~~~~~~~ The reason is that some (notably FPU-less) architectures, including mips*-nf, don't define/implement some of the floating point constants, even though fenv.h is available. The key point is: A fully standards conforming fenv.h does not have to define any FE_* macros, and if it does define them, then it defines macros only for the FP exceptions it actually supports. See similar issue in boost: https://svn.boost.org/trac/boost/ticket/11756
2017-03-22 11:07:16 +00:00
#if defined(FE_DIVBYZERO)
2012-04-29 18:52:25 +00:00
FP_DIVIDE_BY_ZERO_IMPL = FE_DIVBYZERO,
fp: support environments without hardware floating point | cd <build>/Foundation && \ | mipsel-poky-linux-musl-g++ -DFoundation_EXPORTS -DHAVE_PTHREAD_SETAFFINITY_NP -DHAVE_THREE_PARAM_SCHED_SETAFFINITY \ | -DPCRE_STATIC -DPOCO_HAVE_FD_EPOLL -DPOCO_NO_AUTOMATIC_LIBS -DPOCO_OS_FAMILY_UNIX -DPOCO_UNBUNDLED \ | -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_REENTRANT -D_THREAD_SAFE -D_XOPEN_SOURCE=500 \ | -I<sysroot>/usr/include -I<poco>/Foundation/include -I<poco>/Foundation/src \ | -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed -mtune=24kec -mdsp \ | --sysroot=<sysroot> -O2 -pipe -g -feliminate-unused-debug-types \ | -fstack-protector-strong -pie -fpie -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security \ | -fvisibility-inlines-hidden -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed \ | -mtune=24kec -mdsp --sysroot=<sysroot> -O2 -g -DNDEBUG -fPIC \ | -o CMakeFiles/Foundation.dir/src/ArchiveStrategy.cpp.o \ | -c <poco>/Foundation/src/ArchiveStrategy.cpp | In file included from <poco>/Foundation/include/Poco/FPEnvironment.h:33:0, | from <poco>/Foundation/include/Poco/NumericString.h:25, | from <poco>/Foundation/include/Poco/NumberFormatter.h:24, | from <poco>/Foundation/include/Poco/ArchiveStrategy.h:27, | from <poco>/Foundation/src/ArchiveStrategy.cpp:17: | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:36:30: error: 'FE_DOWNWARD' was not declared in this scope | FP_ROUND_DOWNWARD_IMPL = FE_DOWNWARD, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:37:30: error: 'FE_UPWARD' was not declared in this scope | FP_ROUND_UPWARD_IMPL = FE_UPWARD, | ^~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:39:30: error: 'FE_TOWARDZERO' was not declared in this scope | FP_ROUND_TOWARDZERO_IMPL = FE_TOWARDZERO | ^~~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:43:28: error: 'FE_DIVBYZERO' was not declared in this scope | FP_DIVIDE_BY_ZERO_IMPL = FE_DIVBYZERO, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:44:28: error: 'FE_INEXACT' was not declared in this scope | FP_INEXACT_IMPL = FE_INEXACT, | ^~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:45:28: error: 'FE_OVERFLOW' was not declared in this scope | FP_OVERFLOW_IMPL = FE_OVERFLOW, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:46:28: error: 'FE_UNDERFLOW' was not declared in this scope | FP_UNDERFLOW_IMPL = FE_UNDERFLOW, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:47:28: error: 'FE_INVALID' was not declared in this scope | FP_INVALID_IMPL = FE_INVALID | ^~~~~~~~~~ The reason is that some (notably FPU-less) architectures, including mips*-nf, don't define/implement some of the floating point constants, even though fenv.h is available. The key point is: A fully standards conforming fenv.h does not have to define any FE_* macros, and if it does define them, then it defines macros only for the FP exceptions it actually supports. See similar issue in boost: https://svn.boost.org/trac/boost/ticket/11756
2017-03-22 11:07:16 +00:00
#else
FP_DIVIDE_BY_ZERO_IMPL = 0,
#endif
#if defined(FE_INEXACT)
2012-04-29 18:52:25 +00:00
FP_INEXACT_IMPL = FE_INEXACT,
fp: support environments without hardware floating point | cd <build>/Foundation && \ | mipsel-poky-linux-musl-g++ -DFoundation_EXPORTS -DHAVE_PTHREAD_SETAFFINITY_NP -DHAVE_THREE_PARAM_SCHED_SETAFFINITY \ | -DPCRE_STATIC -DPOCO_HAVE_FD_EPOLL -DPOCO_NO_AUTOMATIC_LIBS -DPOCO_OS_FAMILY_UNIX -DPOCO_UNBUNDLED \ | -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_REENTRANT -D_THREAD_SAFE -D_XOPEN_SOURCE=500 \ | -I<sysroot>/usr/include -I<poco>/Foundation/include -I<poco>/Foundation/src \ | -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed -mtune=24kec -mdsp \ | --sysroot=<sysroot> -O2 -pipe -g -feliminate-unused-debug-types \ | -fstack-protector-strong -pie -fpie -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security \ | -fvisibility-inlines-hidden -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed \ | -mtune=24kec -mdsp --sysroot=<sysroot> -O2 -g -DNDEBUG -fPIC \ | -o CMakeFiles/Foundation.dir/src/ArchiveStrategy.cpp.o \ | -c <poco>/Foundation/src/ArchiveStrategy.cpp | In file included from <poco>/Foundation/include/Poco/FPEnvironment.h:33:0, | from <poco>/Foundation/include/Poco/NumericString.h:25, | from <poco>/Foundation/include/Poco/NumberFormatter.h:24, | from <poco>/Foundation/include/Poco/ArchiveStrategy.h:27, | from <poco>/Foundation/src/ArchiveStrategy.cpp:17: | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:36:30: error: 'FE_DOWNWARD' was not declared in this scope | FP_ROUND_DOWNWARD_IMPL = FE_DOWNWARD, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:37:30: error: 'FE_UPWARD' was not declared in this scope | FP_ROUND_UPWARD_IMPL = FE_UPWARD, | ^~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:39:30: error: 'FE_TOWARDZERO' was not declared in this scope | FP_ROUND_TOWARDZERO_IMPL = FE_TOWARDZERO | ^~~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:43:28: error: 'FE_DIVBYZERO' was not declared in this scope | FP_DIVIDE_BY_ZERO_IMPL = FE_DIVBYZERO, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:44:28: error: 'FE_INEXACT' was not declared in this scope | FP_INEXACT_IMPL = FE_INEXACT, | ^~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:45:28: error: 'FE_OVERFLOW' was not declared in this scope | FP_OVERFLOW_IMPL = FE_OVERFLOW, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:46:28: error: 'FE_UNDERFLOW' was not declared in this scope | FP_UNDERFLOW_IMPL = FE_UNDERFLOW, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:47:28: error: 'FE_INVALID' was not declared in this scope | FP_INVALID_IMPL = FE_INVALID | ^~~~~~~~~~ The reason is that some (notably FPU-less) architectures, including mips*-nf, don't define/implement some of the floating point constants, even though fenv.h is available. The key point is: A fully standards conforming fenv.h does not have to define any FE_* macros, and if it does define them, then it defines macros only for the FP exceptions it actually supports. See similar issue in boost: https://svn.boost.org/trac/boost/ticket/11756
2017-03-22 11:07:16 +00:00
#else
FP_INEXACT_IMPL = 0,
#endif
#if defined(FE_OVERFLOW)
2012-04-29 18:52:25 +00:00
FP_OVERFLOW_IMPL = FE_OVERFLOW,
fp: support environments without hardware floating point | cd <build>/Foundation && \ | mipsel-poky-linux-musl-g++ -DFoundation_EXPORTS -DHAVE_PTHREAD_SETAFFINITY_NP -DHAVE_THREE_PARAM_SCHED_SETAFFINITY \ | -DPCRE_STATIC -DPOCO_HAVE_FD_EPOLL -DPOCO_NO_AUTOMATIC_LIBS -DPOCO_OS_FAMILY_UNIX -DPOCO_UNBUNDLED \ | -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_REENTRANT -D_THREAD_SAFE -D_XOPEN_SOURCE=500 \ | -I<sysroot>/usr/include -I<poco>/Foundation/include -I<poco>/Foundation/src \ | -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed -mtune=24kec -mdsp \ | --sysroot=<sysroot> -O2 -pipe -g -feliminate-unused-debug-types \ | -fstack-protector-strong -pie -fpie -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security \ | -fvisibility-inlines-hidden -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed \ | -mtune=24kec -mdsp --sysroot=<sysroot> -O2 -g -DNDEBUG -fPIC \ | -o CMakeFiles/Foundation.dir/src/ArchiveStrategy.cpp.o \ | -c <poco>/Foundation/src/ArchiveStrategy.cpp | In file included from <poco>/Foundation/include/Poco/FPEnvironment.h:33:0, | from <poco>/Foundation/include/Poco/NumericString.h:25, | from <poco>/Foundation/include/Poco/NumberFormatter.h:24, | from <poco>/Foundation/include/Poco/ArchiveStrategy.h:27, | from <poco>/Foundation/src/ArchiveStrategy.cpp:17: | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:36:30: error: 'FE_DOWNWARD' was not declared in this scope | FP_ROUND_DOWNWARD_IMPL = FE_DOWNWARD, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:37:30: error: 'FE_UPWARD' was not declared in this scope | FP_ROUND_UPWARD_IMPL = FE_UPWARD, | ^~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:39:30: error: 'FE_TOWARDZERO' was not declared in this scope | FP_ROUND_TOWARDZERO_IMPL = FE_TOWARDZERO | ^~~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:43:28: error: 'FE_DIVBYZERO' was not declared in this scope | FP_DIVIDE_BY_ZERO_IMPL = FE_DIVBYZERO, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:44:28: error: 'FE_INEXACT' was not declared in this scope | FP_INEXACT_IMPL = FE_INEXACT, | ^~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:45:28: error: 'FE_OVERFLOW' was not declared in this scope | FP_OVERFLOW_IMPL = FE_OVERFLOW, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:46:28: error: 'FE_UNDERFLOW' was not declared in this scope | FP_UNDERFLOW_IMPL = FE_UNDERFLOW, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:47:28: error: 'FE_INVALID' was not declared in this scope | FP_INVALID_IMPL = FE_INVALID | ^~~~~~~~~~ The reason is that some (notably FPU-less) architectures, including mips*-nf, don't define/implement some of the floating point constants, even though fenv.h is available. The key point is: A fully standards conforming fenv.h does not have to define any FE_* macros, and if it does define them, then it defines macros only for the FP exceptions it actually supports. See similar issue in boost: https://svn.boost.org/trac/boost/ticket/11756
2017-03-22 11:07:16 +00:00
#else
FP_OVERFLOW_IMPL = 0,
#endif
#if defined(FE_UNDERFLOW)
2012-04-29 18:52:25 +00:00
FP_UNDERFLOW_IMPL = FE_UNDERFLOW,
fp: support environments without hardware floating point | cd <build>/Foundation && \ | mipsel-poky-linux-musl-g++ -DFoundation_EXPORTS -DHAVE_PTHREAD_SETAFFINITY_NP -DHAVE_THREE_PARAM_SCHED_SETAFFINITY \ | -DPCRE_STATIC -DPOCO_HAVE_FD_EPOLL -DPOCO_NO_AUTOMATIC_LIBS -DPOCO_OS_FAMILY_UNIX -DPOCO_UNBUNDLED \ | -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_REENTRANT -D_THREAD_SAFE -D_XOPEN_SOURCE=500 \ | -I<sysroot>/usr/include -I<poco>/Foundation/include -I<poco>/Foundation/src \ | -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed -mtune=24kec -mdsp \ | --sysroot=<sysroot> -O2 -pipe -g -feliminate-unused-debug-types \ | -fstack-protector-strong -pie -fpie -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security \ | -fvisibility-inlines-hidden -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed \ | -mtune=24kec -mdsp --sysroot=<sysroot> -O2 -g -DNDEBUG -fPIC \ | -o CMakeFiles/Foundation.dir/src/ArchiveStrategy.cpp.o \ | -c <poco>/Foundation/src/ArchiveStrategy.cpp | In file included from <poco>/Foundation/include/Poco/FPEnvironment.h:33:0, | from <poco>/Foundation/include/Poco/NumericString.h:25, | from <poco>/Foundation/include/Poco/NumberFormatter.h:24, | from <poco>/Foundation/include/Poco/ArchiveStrategy.h:27, | from <poco>/Foundation/src/ArchiveStrategy.cpp:17: | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:36:30: error: 'FE_DOWNWARD' was not declared in this scope | FP_ROUND_DOWNWARD_IMPL = FE_DOWNWARD, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:37:30: error: 'FE_UPWARD' was not declared in this scope | FP_ROUND_UPWARD_IMPL = FE_UPWARD, | ^~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:39:30: error: 'FE_TOWARDZERO' was not declared in this scope | FP_ROUND_TOWARDZERO_IMPL = FE_TOWARDZERO | ^~~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:43:28: error: 'FE_DIVBYZERO' was not declared in this scope | FP_DIVIDE_BY_ZERO_IMPL = FE_DIVBYZERO, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:44:28: error: 'FE_INEXACT' was not declared in this scope | FP_INEXACT_IMPL = FE_INEXACT, | ^~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:45:28: error: 'FE_OVERFLOW' was not declared in this scope | FP_OVERFLOW_IMPL = FE_OVERFLOW, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:46:28: error: 'FE_UNDERFLOW' was not declared in this scope | FP_UNDERFLOW_IMPL = FE_UNDERFLOW, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:47:28: error: 'FE_INVALID' was not declared in this scope | FP_INVALID_IMPL = FE_INVALID | ^~~~~~~~~~ The reason is that some (notably FPU-less) architectures, including mips*-nf, don't define/implement some of the floating point constants, even though fenv.h is available. The key point is: A fully standards conforming fenv.h does not have to define any FE_* macros, and if it does define them, then it defines macros only for the FP exceptions it actually supports. See similar issue in boost: https://svn.boost.org/trac/boost/ticket/11756
2017-03-22 11:07:16 +00:00
#else
FP_UNDERFLOW_IMPL = 0,
#endif
#if defined(FE_INVALID)
2012-04-29 18:52:25 +00:00
FP_INVALID_IMPL = FE_INVALID
fp: support environments without hardware floating point | cd <build>/Foundation && \ | mipsel-poky-linux-musl-g++ -DFoundation_EXPORTS -DHAVE_PTHREAD_SETAFFINITY_NP -DHAVE_THREE_PARAM_SCHED_SETAFFINITY \ | -DPCRE_STATIC -DPOCO_HAVE_FD_EPOLL -DPOCO_NO_AUTOMATIC_LIBS -DPOCO_OS_FAMILY_UNIX -DPOCO_UNBUNDLED \ | -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_REENTRANT -D_THREAD_SAFE -D_XOPEN_SOURCE=500 \ | -I<sysroot>/usr/include -I<poco>/Foundation/include -I<poco>/Foundation/src \ | -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed -mtune=24kec -mdsp \ | --sysroot=<sysroot> -O2 -pipe -g -feliminate-unused-debug-types \ | -fstack-protector-strong -pie -fpie -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security \ | -fvisibility-inlines-hidden -mel -mabi=32 -msoft-float -march=mips32r2 -mno-mips16 -minterlink-compressed \ | -mtune=24kec -mdsp --sysroot=<sysroot> -O2 -g -DNDEBUG -fPIC \ | -o CMakeFiles/Foundation.dir/src/ArchiveStrategy.cpp.o \ | -c <poco>/Foundation/src/ArchiveStrategy.cpp | In file included from <poco>/Foundation/include/Poco/FPEnvironment.h:33:0, | from <poco>/Foundation/include/Poco/NumericString.h:25, | from <poco>/Foundation/include/Poco/NumberFormatter.h:24, | from <poco>/Foundation/include/Poco/ArchiveStrategy.h:27, | from <poco>/Foundation/src/ArchiveStrategy.cpp:17: | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:36:30: error: 'FE_DOWNWARD' was not declared in this scope | FP_ROUND_DOWNWARD_IMPL = FE_DOWNWARD, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:37:30: error: 'FE_UPWARD' was not declared in this scope | FP_ROUND_UPWARD_IMPL = FE_UPWARD, | ^~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:39:30: error: 'FE_TOWARDZERO' was not declared in this scope | FP_ROUND_TOWARDZERO_IMPL = FE_TOWARDZERO | ^~~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:43:28: error: 'FE_DIVBYZERO' was not declared in this scope | FP_DIVIDE_BY_ZERO_IMPL = FE_DIVBYZERO, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:44:28: error: 'FE_INEXACT' was not declared in this scope | FP_INEXACT_IMPL = FE_INEXACT, | ^~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:45:28: error: 'FE_OVERFLOW' was not declared in this scope | FP_OVERFLOW_IMPL = FE_OVERFLOW, | ^~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:46:28: error: 'FE_UNDERFLOW' was not declared in this scope | FP_UNDERFLOW_IMPL = FE_UNDERFLOW, | ^~~~~~~~~~~~ | <poco>/Foundation/include/Poco/FPEnvironment_C99.h:47:28: error: 'FE_INVALID' was not declared in this scope | FP_INVALID_IMPL = FE_INVALID | ^~~~~~~~~~ The reason is that some (notably FPU-less) architectures, including mips*-nf, don't define/implement some of the floating point constants, even though fenv.h is available. The key point is: A fully standards conforming fenv.h does not have to define any FE_* macros, and if it does define them, then it defines macros only for the FP exceptions it actually supports. See similar issue in boost: https://svn.boost.org/trac/boost/ticket/11756
2017-03-22 11:07:16 +00:00
#else
FP_INVALID_IMPL = 0
#endif
2012-04-29 18:52:25 +00:00
};
FPEnvironmentImpl();
FPEnvironmentImpl(const FPEnvironmentImpl& env);
~FPEnvironmentImpl();
FPEnvironmentImpl& operator = (const FPEnvironmentImpl& env);
void keepCurrentImpl();
static void clearFlagsImpl();
static bool isFlagImpl(FlagImpl flag);
static void setRoundingModeImpl(RoundingModeImpl mode);
static RoundingModeImpl getRoundingModeImpl();
static bool isInfiniteImpl(float value);
static bool isInfiniteImpl(double value);
static bool isInfiniteImpl(long double value);
static bool isNaNImpl(float value);
static bool isNaNImpl(double value);
static bool isNaNImpl(long double value);
static float copySignImpl(float target, float source);
static double copySignImpl(double target, double source);
static long double copySignImpl(long double target, long double source);
private:
fenv_t _env;
};
//
// inlines
//
inline bool FPEnvironmentImpl::isInfiniteImpl(float value)
{
#if POCO_OS == POCO_OS_AIX
return ::isinf(value) != 0;
#else
return std::isinf(value) != 0;
#endif
2012-04-29 18:52:25 +00:00
}
inline bool FPEnvironmentImpl::isInfiniteImpl(double value)
{
#if POCO_OS == POCO_OS_AIX
return ::isinf(value) != 0;
#else
return std::isinf(value) != 0;
#endif
2012-04-29 18:52:25 +00:00
}
inline bool FPEnvironmentImpl::isInfiniteImpl(long double value)
{
#if POCO_OS == POCO_OS_AIX
return ::isinf((double) value) != 0;
#else
return std::isinf((double) value) != 0;
#endif
2012-04-29 18:52:25 +00:00
}
inline bool FPEnvironmentImpl::isNaNImpl(float value)
{
#if POCO_OS == POCO_OS_AIX
return ::isnan(value) != 0;
#else
return std::isnan(value) != 0;
#endif
2012-04-29 18:52:25 +00:00
}
inline bool FPEnvironmentImpl::isNaNImpl(double value)
{
#if POCO_OS == POCO_OS_AIX
return ::isnan(value) != 0;
#else
return std::isnan(value) != 0;
#endif
2012-04-29 18:52:25 +00:00
}
inline bool FPEnvironmentImpl::isNaNImpl(long double value)
{
#if POCO_OS == POCO_OS_AIX
return ::isnan((double) value) != 0;
#else
return std::isnan((double) value) != 0;
#endif
2012-04-29 18:52:25 +00:00
}
inline float FPEnvironmentImpl::copySignImpl(float target, float source)
{
return copysignf(target, source);
}
inline double FPEnvironmentImpl::copySignImpl(double target, double source)
{
return copysign(target, source);
}
} // namespace Poco
#endif // Foundation_FPEnvironment_C99_INCLUDED