00001
00002
00003
00004
00005
00006
00007
00008 #ifndef BOOST_LOCALE_GENERATOR_HPP
00009 #define BOOST_LOCALE_GENERATOR_HPP
00010 #include <boost/locale/config.hpp>
00011 #ifdef BOOST_MSVC
00012 # pragma warning(push)
00013 # pragma warning(disable : 4275 4251 4231 4660)
00014 #endif
00015 #include <string>
00016 #include <locale>
00017 #include <memory>
00018
00019 namespace boost {
00023 namespace locale {
00024
00028 typedef enum {
00029 char_facet = 1 << 0,
00030 wchar_t_facet = 1 << 1,
00031 char16_t_facet = 1 << 2,
00032 char32_t_facet = 1 << 3,
00033
00034 all_characters = 0xFFFF
00035 } character_facet_type;
00036
00040 typedef enum {
00041 collation_facet = 1 << 0,
00042 formatting_facet= 1 << 1,
00043 message_facet = 1 << 2,
00044 codepage_facet= 1 << 3,
00045
00046 all_categories = 0xFFFFFFFFu
00047 } locale_category_type;
00048
00055
00056 class BOOST_LOCALE_DECL generator {
00057 public:
00058
00059 generator();
00060 ~generator();
00061
00065 void categories(unsigned cats);
00069 unsigned categories() const;
00070
00074 void characters(unsigned chars);
00078 unsigned characters() const;
00079
00083 void octet_encoding(std::string const &encoding);
00087 std::string octet_encoding() const;
00088
00089
00094 void add_messages_domain(std::string const &domain);
00099 void set_default_messages_domain(std::string const &domain);
00100
00104 void clear_domains();
00105
00109 void add_messages_path(std::string const &path);
00110
00114 void clear_paths();
00115
00119 void clear_cache();
00120
00124 void preload(std::string const &id);
00128 void preload(std::string const &id,std::string const &encoding);
00129
00134 void preload(std::locale const &base,std::string const &id);
00139 void preload(std::locale const &base,std::string const &id,std::string const &encoding);
00140
00144 std::locale generate(std::string const &id) const;
00148 std::locale generate(std::string const &id,std::string const &encoding) const;
00149
00154 std::locale generate(std::locale const &base,std::string const &id) const;
00159 std::locale generate(std::locale const &base,std::string const &id,std::string const &encoding) const;
00160
00164 std::locale get(std::string const &id) const;
00168 std::locale get(std::string const &id,std::string const &encoding) const;
00169
00173 std::locale operator()(std::string const &id) const
00174 {
00175 return get(id);
00176 }
00180 std::locale operator()(std::string const &id,std::string const &encoding) const
00181 {
00182 return get(id,encoding);
00183 }
00184
00185 private:
00186
00187 template<typename CharType>
00188 std::locale generate_for(std::locale const &source) const;
00189 std::locale complete_generation(std::locale const &source) const;
00190
00191 generator(generator const &);
00192 void operator=(generator const &);
00193
00194 struct data;
00195 std::auto_ptr<data> d;
00196 };
00197
00198 }
00199 }
00200 #ifdef BOOST_MSVC
00201 #pragma warning(pop)
00202 #endif
00203
00204
00205 #endif
00206
00207