/////////////////////////////////////////////////////////////////////////////// // Name: wx/private/localeset.h // Purpose: Define helper wxLocaleSetter class. // Author: Vadim Zeitlin // Created: 2021-08-03 (extracted from tests/testprec.h) // Copyright: (c) 2021 Vadim Zeitlin // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #ifndef _WX_PRIVATE_LOCALESET_H_ #define _WX_PRIVATE_LOCALESET_H_ #include "wx/crt.h" // wxStrdupA() #include // Helper class setting the locale to the given one for its lifetime. class wxLocaleSetter { public: wxLocaleSetter(const char *loc) : m_locOld(wxStrdupA(setlocale(LC_ALL, NULL))) { setlocale(LC_ALL, loc); } ~wxLocaleSetter() { setlocale(LC_ALL, m_locOld); free(m_locOld); } private: char * const m_locOld; wxDECLARE_NO_COPY_CLASS(wxLocaleSetter); }; // An even simpler helper for setting the locale to "C" one during its lifetime. class wxCLocaleSetter : private wxLocaleSetter { public: wxCLocaleSetter() : wxLocaleSetter("C") { } private: wxDECLARE_NO_COPY_CLASS(wxCLocaleSetter); }; #endif // _WX_PRIVATE_LOCALESET_H_