mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-02-12 07:47:12 +01:00
Switched to POCO library for unified platform/library interface. Deprecated the external module API. It was creating more problems than solving. Removed most built-in libraries in favor of system libraries for easier maintenance. Cleaned and secured code with help from static analyzers.
77 lines
1.1 KiB
C++
77 lines
1.1 KiB
C++
//
|
|
// FPEnvironment_WIN32.cpp
|
|
//
|
|
// Library: Foundation
|
|
// Package: Core
|
|
// Module: FPEnvironment
|
|
//
|
|
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
|
|
// and Contributors.
|
|
//
|
|
// SPDX-License-Identifier: BSL-1.0
|
|
//
|
|
|
|
|
|
#include "Poco/FPEnvironment_WIN32.h"
|
|
|
|
|
|
namespace Poco {
|
|
|
|
|
|
FPEnvironmentImpl::FPEnvironmentImpl()
|
|
{
|
|
_env = _controlfp(0, 0);
|
|
}
|
|
|
|
|
|
FPEnvironmentImpl::FPEnvironmentImpl(const FPEnvironmentImpl& env)
|
|
{
|
|
_env = env._env;
|
|
}
|
|
|
|
|
|
FPEnvironmentImpl::~FPEnvironmentImpl()
|
|
{
|
|
_controlfp(_env, _MCW_RC);
|
|
}
|
|
|
|
|
|
FPEnvironmentImpl& FPEnvironmentImpl::operator = (const FPEnvironmentImpl& env)
|
|
{
|
|
_env = env._env;
|
|
return *this;
|
|
}
|
|
|
|
|
|
void FPEnvironmentImpl::keepCurrentImpl()
|
|
{
|
|
_env = _controlfp(0, 0);
|
|
}
|
|
|
|
|
|
void FPEnvironmentImpl::clearFlagsImpl()
|
|
{
|
|
_clearfp();
|
|
}
|
|
|
|
|
|
bool FPEnvironmentImpl::isFlagImpl(FlagImpl flag)
|
|
{
|
|
return (_statusfp() & flag) != 0;
|
|
}
|
|
|
|
|
|
void FPEnvironmentImpl::setRoundingModeImpl(RoundingModeImpl mode)
|
|
{
|
|
_controlfp(mode, _MCW_RC);
|
|
}
|
|
|
|
|
|
FPEnvironmentImpl::RoundingModeImpl FPEnvironmentImpl::getRoundingModeImpl()
|
|
{
|
|
return RoundingModeImpl(_controlfp(0, 0) & _MCW_RC);
|
|
}
|
|
|
|
|
|
} // namespace Poco
|