Mercurial > hg > vamp-build-and-test
diff DEPENDENCIES/generic/include/boost/locale/info.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DEPENDENCIES/generic/include/boost/locale/info.hpp Tue Aug 05 11:11:38 2014 +0100 @@ -0,0 +1,125 @@ +// +// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh) +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +#ifndef BOOST_LOCALE_INFO_HPP_INCLUDED +#define BOOST_LOCALE_INFO_HPP_INCLUDED +#include <boost/locale/config.hpp> +#ifdef BOOST_MSVC +# pragma warning(push) +# pragma warning(disable : 4275 4251 4231 4660) +#endif +#include <locale> +#include <string> + + +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: + 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; + } + +#if defined (__SUNPRO_CC) && defined (_RWSTD_VER) + std::locale::id& __get_id (void) const { return id; } +#endif + 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; + }; + + } +} + +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + +#endif + +// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4