Select Git revision
test_PugsUtils.cpp
FPEManager.cpp 1.11 KiB
#include <FPEManager.hpp>
#include <pastis_config.hpp>
#include <rang.hpp>
#ifdef PASTIS_HAS_FENV_H
#include <fenv.h>
#define MANAGED_FPE (FE_DIVBYZERO|FE_INVALID|FE_OVERFLOW|FE_UNDERFLOW)
void FPEManager::enable()
{
std::cout << "FE management: "
<< rang::style::bold
<< rang::fgB::green
<< "enabled"
<< rang::fg::reset
<< rang::style::reset << '\n';
::feenableexcept(MANAGED_FPE);
}
void FPEManager::disable()
{
std::cout << "FE management: "
<< rang::style::bold
<< rang::fgB::red
<< "disabled"
<< rang::fg::reset
<< rang::style::reset << '\n';
::fedisableexcept(MANAGED_FPE);
}
#else // PASTIS_HAS_FENV_H
void FPEManager::enable()
{
std::cout << "FE management: enabled "
<< rang::fg::red
<< "[not supported]"
<< rang::fg::reset << '\n';
}
void FPEManager::disable()
{
std::cout << "FE management: disable "
<< rang::fg::red
<< "[not supported]"
<< rang::fg::reset << '\n';
}
#endif // PASTIS_HAS_FENV_H
void FPEManager::init(const bool& enable)
{
if (enable) {
FPEManager::enable();
} else {
FPEManager::disable();
}
}