Chris@16: // ---------------------------------------------------------------------------- Chris@16: // Copyright (C) 2009 Sebastian Redl Chris@16: // Chris@16: // Distributed under the Boost Software License, Version 1.0. Chris@16: // (See accompanying file LICENSE_1_0.txt or copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: // Chris@16: // For more information, see www.boost.org Chris@16: // ---------------------------------------------------------------------------- Chris@16: Chris@16: #ifndef BOOST_PROPERTY_TREE_ID_TRANSLATOR_HPP_INCLUDED Chris@16: #define BOOST_PROPERTY_TREE_ID_TRANSLATOR_HPP_INCLUDED Chris@16: Chris@16: #include Chris@16: Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace boost { namespace property_tree Chris@16: { Chris@16: Chris@16: /// Simple implementation of the Translator concept. It does no translation. Chris@16: template Chris@16: struct id_translator Chris@16: { Chris@16: typedef T internal_type; Chris@16: typedef T external_type; Chris@16: Chris@16: boost::optional get_value(const T &v) { return v; } Chris@16: boost::optional put_value(const T &v) { return v; } Chris@16: }; Chris@16: Chris@16: // This is the default translator whenever you get two equal types. Chris@16: template Chris@16: struct translator_between Chris@16: { Chris@16: typedef id_translator type; Chris@16: }; Chris@16: Chris@16: // A more specific specialization for std::basic_string. Otherwise, Chris@16: // stream_translator's specialization wins. Chris@16: template Chris@16: struct translator_between< std::basic_string, Chris@16: std::basic_string > Chris@16: { Chris@16: typedef id_translator< std::basic_string > type; Chris@16: }; Chris@16: Chris@16: }} Chris@16: Chris@16: #endif