ardour
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
libs
pbd
locale_guard.cc
Go to the documentation of this file.
1
/*
2
Copyright (C) 2012 Paul Davis
3
4
This program is free software; you can redistribute it and/or modify
5
it under the terms of the GNU General Public License as published by
6
the Free Software Foundation; either version 2 of the License, or
7
(at your option) any later version.
8
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
GNU General Public License for more details.
13
14
You should have received a copy of the GNU General Public License
15
along with this program; if not, write to the Free Software
16
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
18
*/
19
20
#include <stdlib.h>
21
#include <string.h>
22
#include <locale.h>
23
24
#include "
pbd/locale_guard.h
"
25
26
using namespace
PBD
;
27
28
// try to avoid calling setlocale() recursively. this is not thread-safe.
29
std::string
PBD::LocaleGuard::current
;
30
31
LocaleGuard::LocaleGuard
(
const
char
* str)
32
: old(0)
33
{
34
if
(
current
!= str) {
35
old
= strdup (setlocale (LC_NUMERIC, NULL));
36
if
(strcmp (
old
, str)) {
37
if
(setlocale (LC_NUMERIC, str)) {
38
current
= str;
39
}
40
}
41
}
42
}
43
44
LocaleGuard::~LocaleGuard
()
45
{
46
if
(
old
) {
47
if
(setlocale (LC_NUMERIC,
old
)) {
48
current
=
old
;
49
}
50
51
free (
old
);
52
}
53
}
54
PBD::LocaleGuard::~LocaleGuard
~LocaleGuard()
Definition:
locale_guard.cc:44
PBD::LocaleGuard::current
static std::string current
Definition:
locale_guard.h:33
PBD::LocaleGuard::LocaleGuard
LocaleGuard(const char *)
Definition:
locale_guard.cc:31
PBD
Definition:
debug.h:30
locale_guard.h
PBD::LocaleGuard::old
char * old
Definition:
locale_guard.h:36
Generated on Sun May 24 2015 12:15:08 for ardour by
1.8.8