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