# Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. — Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Examples

- File List

# boost/locale/info.hpp

    00001 //
    00002 //  Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
    00003 //
    00004 //  Distributed under the Boost Software License, Version 1.0. (See
    00005 //  accompanying file LICENSE_1_0.txt or copy at
    00006 //  http://www.boost.org/LICENSE_1_0.txt)
    00007 //
    00008 #ifndef BOOST_LOCALE_INFO_HPP_INCLUDED
    00009 #define BOOST_LOCALE_INFO_HPP_INCLUDED
    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 <locale>
    00016 #include <string>
    00017
    00018
    00019 namespace boost {
    00020     namespace locale {
    00021
    00027         class BOOST_LOCALE_DECL info : public std::locale::facet
    00028         {
    00029         public:
    00030             static std::locale::id id;
    00031
    00035             enum string_propery {
    00036                 language_property,
    00037                 country_property,
    00038                 variant_property,
    00039                 encoding_property,
    00040                 name_property
    00041             };
    00042
    00046             enum integer_property {
    00047                 utf8_property
    00048             };
    00049
    00050
    00054             info(size_t refs = 0) : std::locale::facet(refs)
    00055             {
    00056             }
    00060             std::string language() const
    00061             {
    00062                 return get_string_property(language_property);
    00063             }
    00067             std::string country() const
    00068             {
    00069                 return get_string_property(country_property);
    00070             }
    00074             std::string variant() const
    00075             {
    00076                 return get_string_property(variant_property);
    00077             }
    00081             std::string encoding() const
    00082             {
    00083                 return get_string_property(encoding_property);
    00084             }
    00085
    00089             std::string name() const
    00090             {
    00091                 return get_string_property(name_property);
    00092             }
    00093
    00097             bool utf8() const
    00098             {
    00099                 return get_integer_property(utf8_property) != 0;
    00100             }
    00101
    00102 #if defined (__SUNPRO_CC) && defined (_RWSTD_VER)
    00103             std::locale::id& __get_id (void) const { return id; }
    00104 #endif
    00105         protected:
    00109             virtual std::string get_string_property(string_propery v) const = 0;
    00113             virtual int get_integer_property(integer_property v) const = 0;
    00114         };
    00115
    00116     }
    00117 }
    00118
    00119 #ifdef BOOST_MSVC
    00120 #pragma warning(pop)
    00121 #endif
    00122
    00123 #endif
    00124
    00125 // vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4