This will allow using this class in the library code too. No real changes yet, this is a pure refactoring. This commit is best viewed using git --color-moved option.
50 lines
1.2 KiB
C++
50 lines
1.2 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// 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 <vadim@wxwidgets.org>
|
|
// Licence: wxWindows licence
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_PRIVATE_LOCALESET_H_
|
|
#define _WX_PRIVATE_LOCALESET_H_
|
|
|
|
#include "wx/crt.h" // wxStrdupA()
|
|
|
|
#include <locale.h>
|
|
|
|
// 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_
|