CppCMS
info.h
1 //
2 // Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
3 //
4 // Distributed under the Boost Software License, Version 1.0. (See
5 // accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
7 //
8 #ifndef BOOSTER_LOCALE_INFO_H_INCLUDED
9 #define BOOSTER_LOCALE_INFO_H_INCLUDED
10 #include <booster/config.h>
11 #ifdef BOOSTER_MSVC
12 # pragma warning(push)
13 # pragma warning(disable : 4275 4251 4231 4660)
14 #endif
15 #include <locale>
16 #include <string>
17 
18 
19 namespace booster {
20  namespace locale {
21 
27  class BOOSTER_API info : public std::locale::facet
28  {
29  public:
30  static std::locale::id id;
31 
40  name_property
41  };
42 
47  utf8_property
48  };
49 
50 
54  info(size_t refs = 0) : std::locale::facet(refs)
55  {
56  }
60  std::string language() const
61  {
62  return get_string_property(language_property);
63  }
67  std::string country() const
68  {
69  return get_string_property(country_property);
70  }
74  std::string variant() const
75  {
76  return get_string_property(variant_property);
77  }
81  std::string encoding() const
82  {
83  return get_string_property(encoding_property);
84  }
85 
89  std::string name() const
90  {
91  return get_string_property(name_property);
92  }
93 
97  bool utf8() const
98  {
99  return get_integer_property(utf8_property) != 0;
100  }
101 
102 #if defined (__SUNPRO_CC) && defined (_RWSTD_VER)
103  std::locale::id& __get_id (void) const { return id; }
104 #endif
105  protected:
109  virtual std::string get_string_property(string_propery v) const = 0;
113  virtual int get_integer_property(integer_property v) const = 0;
114  };
115 
116  }
117 }
118 
119 #ifdef BOOSTER_MSVC
120 #pragma warning(pop)
121 #endif
122 
123 #endif
124 
125 // vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
info(size_t refs=0)
Definition: info.h:54
Variant for locale.
Definition: info.h:38
string_propery
Definition: info.h:35
ISO 639 language id.
Definition: info.h:36
std::string language() const
Definition: info.h:60
static std::locale::id id
This member uniquely defines this facet, required by STL.
Definition: info.h:30
bool utf8() const
Definition: info.h:97
This is the main namespace that encloses all localization classes.
Definition: locale_fwd.h:14
encoding name
Definition: info.h:39
std::string encoding() const
Definition: info.h:81
a facet that holds general information about locale
Definition: info.h:27
std::string country() const
Definition: info.h:67
std::string name() const
Definition: info.h:89
Booster library namespace. The library that implements Boost Like API in ABI backward compatible way...
Definition: application.h:23
ISO 3166 country id.
Definition: info.h:37
integer_property
Definition: info.h:46
std::string variant() const
Definition: info.h:74