Boost.Locale
generator.hpp
1 //
2 // Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
3 //
4 // Distributed under the Boost Software License, Version 1.0.
5 // https://www.boost.org/LICENSE_1_0.txt
6 
7 #ifndef BOOST_LOCALE_GENERATOR_HPP
8 #define BOOST_LOCALE_GENERATOR_HPP
9 #include <boost/locale/config.hpp>
10 #include <boost/locale/hold_ptr.hpp>
11 #include <boost/cstdint.hpp>
12 #include <string>
13 #include <locale>
14 #include <memory>
15 
16 #ifdef BOOST_MSVC
17 # pragma warning(push)
18 # pragma warning(disable : 4275 4251 4231 4660)
19 #endif
20 
21 namespace boost {
22 
26  namespace locale {
27 
28  class localization_backend;
29  class localization_backend_manager;
30 
31  static const uint32_t nochar_facet = 0;
32  static const uint32_t char_facet = 1 << 0;
33  static const uint32_t wchar_t_facet = 1 << 1;
34  static const uint32_t char16_t_facet = 1 << 2;
35  static const uint32_t char32_t_facet = 1 << 3;
36 
37  static const uint32_t character_first_facet = char_facet;
38  static const uint32_t character_last_facet = char32_t_facet;
39  static const uint32_t all_characters = 0xFFFF;
40 
41  typedef uint32_t character_facet_type;
42 
43  static const uint32_t convert_facet = 1 << 0;
44  static const uint32_t collation_facet = 1 << 1;
45  static const uint32_t formatting_facet= 1 << 2;
46  static const uint32_t parsing_facet = 1 << 3;
47  static const uint32_t message_facet = 1 << 4;
48  static const uint32_t codepage_facet = 1 << 5;
49  static const uint32_t boundary_facet = 1 << 6;
50 
51  static const uint32_t per_character_facet_first = convert_facet;
52  static const uint32_t per_character_facet_last = boundary_facet;
53 
54  static const uint32_t calendar_facet = 1 << 16;
55  static const uint32_t information_facet = 1 << 17;
56 
57  static const uint32_t non_character_facet_first = calendar_facet;
59 
60 
61  static const uint32_t all_categories = 0xFFFFFFFFu;
62 
63  typedef uint32_t locale_category_type;
64 
71 
72  class BOOST_LOCALE_DECL generator {
73  public:
74 
78  generator();
83 
84  ~generator();
85 
89  void categories(locale_category_type cats);
93  locale_category_type categories() const;
94 
98  void characters(character_facet_type chars);
102  character_facet_type characters() const;
103 
124  void add_messages_domain(std::string const &domain);
129  void set_default_messages_domain(std::string const &domain);
130 
134  void clear_domains();
135 
150  void add_messages_path(std::string const &path);
151 
155  void clear_paths();
156 
160  void clear_cache();
161 
165  void locale_cache_enabled(bool on);
166 
170  bool locale_cache_enabled() const;
171 
175  bool use_ansi_encoding() const;
176 
184  void use_ansi_encoding(bool enc);
185 
189  std::locale generate(std::string const &id) const;
194  std::locale generate(std::locale const &base,std::string const &id) const;
198  std::locale operator()(std::string const &id) const
199  {
200  return generate(id);
201  }
202 
206  void set_option(std::string const &name,std::string const &value);
207 
211  void clear_options();
212 
213  private:
214 
215  void set_all_options(localization_backend& backend,std::string const &id) const;
216 
217  generator(generator const &);
218  void operator=(generator const &);
219 
220  struct data;
221  hold_ptr<data> d;
222  };
223 
224  }
225 }
226 #ifdef BOOST_MSVC
227 #pragma warning(pop)
228 #endif
229 
230 
231 #endif
232 
static const uint32_t boundary_facet
Generate boundary analysis facet.
Definition: generator.hpp:49
static const uint32_t non_character_facet_first
First character independent facet.
Definition: generator.hpp:57
the facet that generates calendar for specific locale
Definition: date_time_facet.hpp:230
Localization backend manager is a class that holds various backend and allows creation of their combi...
Definition: localization_backend.hpp:82
static const uint32_t parsing_facet
Generate numbers, currency, date-time formatting facets.
Definition: generator.hpp:46
std::locale operator()(std::string const &id) const
Definition: generator.hpp:198
static const uint32_t nochar_facet
Unspecified character category for character independent facets.
Definition: generator.hpp:31
uint32_t character_facet_type
type that specifies the character type that locales can be generated for
Definition: generator.hpp:41
static const uint32_t formatting_facet
Generate numbers, currency, date-time formatting facets.
Definition: generator.hpp:45
static const uint32_t convert_facet
Generate conversion facets.
Definition: generator.hpp:43
static const uint32_t per_character_facet_last
Last facet specific for character.
Definition: generator.hpp:52
static const uint32_t calendar_facet
Generate boundary analysis facet.
Definition: generator.hpp:54
static const uint32_t message_facet
Generate message facets.
Definition: generator.hpp:47
this class represents a localization backend that can be used for localizing your application.
Definition: localization_backend.hpp:45
static const uint32_t codepage_facet
Generate character set conversion facets (derived from std::codecvt)
Definition: generator.hpp:48
static const uint32_t per_character_facet_first
First facet specific for character.
Definition: generator.hpp:51
static const uint32_t character_last_facet
Last facet specific for character type.
Definition: generator.hpp:38
static const uint32_t character_first_facet
First facet specific for character type.
Definition: generator.hpp:37
static const uint32_t collation_facet
Generate collation facets.
Definition: generator.hpp:44
static const uint32_t non_character_facet_last
Last character independent facet.
Definition: generator.hpp:58
static const uint32_t char16_t_facet
C++0x char16_t facets.
Definition: generator.hpp:34
unspecified_type domain(std::string const &id)
Definition: message.hpp:788
static const uint32_t char32_t_facet
C++0x char32_t facets.
Definition: generator.hpp:35
uint32_t locale_category_type
a type used for more fine grained generation of facets
Definition: generator.hpp:63
static const uint32_t information_facet
Generate general locale information facet.
Definition: generator.hpp:55
the major class used for locale generation
Definition: generator.hpp:72
static const uint32_t char_facet
8-bit character facets
Definition: generator.hpp:32
static const uint32_t all_categories
Generate all of them.
Definition: generator.hpp:61
static const uint32_t wchar_t_facet
wide character facets
Definition: generator.hpp:33
static const uint32_t all_characters
Special mask – generate all.
Definition: generator.hpp:39