Blame view

3rdparty/boost_1_81_0/boost/locale/info.hpp 2.49 KB
598bfd3f   Hu Chunming   提交_GLIBCXX_USE_CX...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
  //
  // Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
  //
  // Distributed under the Boost Software License, Version 1.0.
  // https://www.boost.org/LICENSE_1_0.txt
  
  #ifndef BOOST_LOCALE_INFO_HPP_INCLUDED
  #define BOOST_LOCALE_INFO_HPP_INCLUDED
  
  #include <boost/locale/config.hpp>
  #include <locale>
  #include <string>
  
  #ifdef BOOST_MSVC
  #    pragma warning(push)
  #    pragma warning(disable : 4275 4251 4231 4660)
  #endif
  
  namespace boost { namespace locale {
  
      /// \brief a facet that holds general information about locale
      ///
      /// This facet should be always created in order to make all Boost.Locale functions work
      class BOOST_LOCALE_DECL info : public std::locale::facet {
      public:
          ~info();
  
          static std::locale::id id; ///< This member uniquely defines this facet, required by STL
  
          /// String information about the locale
          enum string_propery {
              language_property, ///< ISO 639 language id
              country_property,  ///< ISO 3166 country id
              variant_property,  ///< Variant for locale
              encoding_property, ///< encoding name
              name_property      ///< locale name
          };
  
          /// Integer information about locale
          enum integer_property {
              utf8_property ///< Non zero value if uses UTF-8 encoding
          };
  
          /// Standard facet's constructor
          info(size_t refs = 0) : std::locale::facet(refs) {}
          /// Get language name
          std::string language() const { return get_string_property(language_property); }
          /// Get country name
          std::string country() const { return get_string_property(country_property); }
          /// Get locale variant
          std::string variant() const { return get_string_property(variant_property); }
          /// Get encoding
          std::string encoding() const { return get_string_property(encoding_property); }
  
          /// Get the name of the locale, like en_US.UTF-8
          std::string name() const { return get_string_property(name_property); }
  
          /// True if the underlying encoding is UTF-8 (for char streams and strings)
          bool utf8() const { return get_integer_property(utf8_property) != 0; }
  
      protected:
          /// Get string property by its id \a v
          virtual std::string get_string_property(string_propery v) const = 0;
          /// Get integer property by its id \a v
          virtual int get_integer_property(integer_property v) const = 0;
      };
  
  }} // namespace boost::locale
  
  #ifdef BOOST_MSVC
  #    pragma warning(pop)
  #endif
  
  #endif