/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
file Copyright.txt or https://cmake.org/licensing for details. */ | |
#pragma once | |
#include "cmConfigure.h" // IWYU pragma: keep | |
#include <clocale> | |
#include <string> | |
class cmLocaleRAII | |
{ | |
public: | |
cmLocaleRAII() | |
: OldLocale(setlocale(LC_CTYPE, nullptr)) | |
{ | |
setlocale(LC_CTYPE, ""); | |
} | |
~cmLocaleRAII() { setlocale(LC_CTYPE, this->OldLocale.c_str()); } | |
cmLocaleRAII(cmLocaleRAII const&) = delete; | |
cmLocaleRAII& operator=(cmLocaleRAII const&) = delete; | |
private: | |
std::string OldLocale; | |
}; |