15 itk::MutexLock::Pointer mitk::DICOMTagScanner::s_LocaleMutex = itk::MutexLock::New();
28 s_LocaleMutex->Lock();
30 std::string currentCLocale = setlocale(LC_NUMERIC,
nullptr);
31 m_ReplacedCLocales.push(currentCLocale);
32 setlocale(LC_NUMERIC,
"C");
34 std::locale currentCinLocale(std::cin.getloc());
35 m_ReplacedCinLocales.push(currentCinLocale);
39 s_LocaleMutex->Unlock();
44 s_LocaleMutex->Lock();
46 if (!m_ReplacedCLocales.empty())
48 setlocale(LC_NUMERIC, m_ReplacedCLocales.top().c_str());
49 m_ReplacedCLocales.pop();
53 MITK_WARN <<
"Mismatched PopLocale on DICOMITKSeriesGDCMReader.";
56 if (!m_ReplacedCinLocales.empty())
58 std::cin.imbue(m_ReplacedCinLocales.top());
59 m_ReplacedCinLocales.pop();
63 MITK_WARN <<
"Mismatched PopLocale on DICOMITKSeriesGDCMReader.";
66 s_LocaleMutex->Unlock();
71 return setlocale(LC_NUMERIC,
nullptr);