CppCMS

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

util.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_UTIL_HPP
9 #define BOOSTER_LOCALE_UTIL_HPP
10 #include <locale>
11 #include <typeinfo>
12 #include <booster/cstdint.h>
13 #include <booster/locale/utf.h>
14 #include <booster/locale/generator.h>
15 #include <booster/assert.h>
16
17 #include <vector>
18 namespace booster {
19 namespace locale {
24 namespace util {
25
39 BOOSTER_API
40 std::string get_system_locale(bool use_utf8_on_windows = false);
41
59 BOOSTER_API
60 std::locale create_info(std::locale const &in,std::string const &name);
61
62
77 class base_converter {
78 public:
79
85 static const uint32_t illegal=utf::illegal;
86
91 static const uint32_t incomplete=utf::incomplete;
92
93 virtual ~base_converter()
94 {
95 }
100 virtual int max_len() const
101 {
102 return 1;
103 }
113 virtual bool is_thread_safe() const
114 {
115 return false;
116 }
120 virtual base_converter *clone() const
121 {
122 BOOSTER_ASSERT(typeid(*this)==typeid(base_converter));
123 return new base_converter();
124 }
125
141 virtual uint32_t to_unicode(char const *&begin,char const *end)
142 {
143 if(begin == end)
144 return incomplete;
145 unsigned char cp = *begin;
146 if(cp <= 0x7F) {
147 begin++;
148 return cp;
149 }
150 return illegal;
151 }
163
164 virtual uint32_t from_unicode(uint32_t u,char *begin,char const *end)
165 {
166 if(begin==end)
167 return incomplete;
168 if(u >= 0x80)
169 return illegal;
170 *begin = static_cast<char>(u);
171 return 1;
172 }
173 };
174
179 BOOSTER_API std::auto_ptr<base_converter> create_utf8_converter();
187 BOOSTER_API std::auto_ptr<base_converter> create_simple_converter(std::string const &encoding);
188
189
201 BOOSTER_API
202 std::locale create_codecvt(std::locale const &in,std::auto_ptr<base_converter> cvt,character_facet_type type);
203
208 BOOSTER_API
209 std::locale create_utf8_codecvt(std::locale const &in,character_facet_type type);
210
217 BOOSTER_API
218 std::locale create_simple_codecvt(std::locale const &in,std::string const &encoding,character_facet_type type);
219 } // util
220 } // locale
221 } // boost
222
223 #endif
224 // vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
booster::locale::util::create_info
BOOSTER_API std::locale create_info(std::locale const &in, std::string const &name)
Installs information facet to locale in based on locale name name.
booster::locale::util::create_simple_codecvt
BOOSTER_API std::locale create_simple_codecvt(std::locale const &in, std::string const &encoding, character_facet_type type)
booster::locale::util::base_converter
This class represent a simple stateless converter from UCS-4 and to UCS-4 for each single code point...
Definition: util.h:77
booster::locale::util::create_utf8_converter
BOOSTER_API std::auto_ptr< base_converter > create_utf8_converter()
booster::locale::utf::incomplete
static const code_point incomplete
Special constant that defines incomplete code point.
Definition: utf.h:44
booster::locale::character_facet_type
uint32_t character_facet_type
type that specifies the character type that locales can be generated for
Definition: generator.h:43
booster::locale::utf::illegal
static const code_point illegal
Special constant that defines illegal code point.
Definition: utf.h:39
booster::locale::util::create_codecvt
BOOSTER_API std::locale create_codecvt(std::locale const &in, std::auto_ptr< base_converter > cvt, character_facet_type type)
booster::locale
This is the main namespace that encloses all localization classes.
Definition: locale_fwd.h:14
booster::locale::util::get_system_locale
BOOSTER_API std::string get_system_locale(bool use_utf8_on_windows=false)
Return default system locale name in POSIX format.
booster::locale::util::base_converter::to_unicode
virtual uint32_t to_unicode(char const *&begin, char const *end)
Definition: util.h:141
booster::locale::util::base_converter::clone
virtual base_converter * clone() const
Definition: util.h:120
booster::locale::util::base_converter::incomplete
static const uint32_t incomplete
Definition: util.h:91
booster::locale::util::create_utf8_codecvt
BOOSTER_API std::locale create_utf8_codecvt(std::locale const &in, character_facet_type type)
booster::locale::util::base_converter::from_unicode
virtual uint32_t from_unicode(uint32_t u, char *begin, char const *end)
Definition: util.h:164
booster::locale::util::base_converter::illegal
static const uint32_t illegal
Definition: util.h:85
booster::locale::util::create_simple_converter
BOOSTER_API std::auto_ptr< base_converter > create_simple_converter(std::string const &encoding)
booster::locale::util::base_converter::is_thread_safe
virtual bool is_thread_safe() const
Definition: util.h:113
booster
Booster library namespace. The library that implements Boost Like API in ABI backward compatible way...
Definition: application.h:23
booster::locale::util::base_converter::max_len
virtual int max_len() const
Definition: util.h:100