Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r71437 - in sandbox/convert: . boost boost/convert libs libs/convert libs/convert/doc libs/convert/doc/html libs/convert/doc/html/boost libs/convert/doc/html/boost/conversion libs/convert/doc/html/boost/convert libs/convert/doc/html/boost/parameter libs/convert/doc/html/header libs/convert/doc/html/header/boost libs/convert/doc/html/header/boost/convert libs/convert/doc/html/images libs/convert/doc/html/index libs/convert/doc/html/the_convert_library libs/convert/example libs/convert/test libs/project.vc++ libs/project.vc++/convert
From: eldiener_at_[hidden]
Date: 2011-04-23 09:50:06


Author: eldiener
Date: 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
New Revision: 71437
URL: http://svn.boost.org/trac/boost/changeset/71437

Log:
Files
Added:
   sandbox/convert/Jamfile.v2 (contents, props changed)
   sandbox/convert/Jamroot.jam (contents, props changed)
   sandbox/convert/boost/
   sandbox/convert/boost/convert/
   sandbox/convert/boost/convert.hpp (contents, props changed)
   sandbox/convert/boost/convert/api.hpp (contents, props changed)
   sandbox/convert/boost/convert/boost_parameter_ext.hpp (contents, props changed)
   sandbox/convert/boost/convert/converter_base.hpp (contents, props changed)
   sandbox/convert/boost/convert/stream_based_string_convertor.hpp (contents, props changed)
   sandbox/convert/boost/convert/string_sfinae.hpp (contents, props changed)
   sandbox/convert/boost/convert/string_to_bool.hpp (contents, props changed)
   sandbox/convert/boost/convert/string_to_type.hpp (contents, props changed)
   sandbox/convert/boost/convert/type_to_bool.hpp (contents, props changed)
   sandbox/convert/boost/convert/type_to_string.hpp (contents, props changed)
   sandbox/convert/boost/convert/workarounds.hpp (contents, props changed)
   sandbox/convert/boost/safebool.hpp (contents, props changed)
   sandbox/convert/libs/
   sandbox/convert/libs/convert/
   sandbox/convert/libs/convert/doc/
   sandbox/convert/libs/convert/doc/Jamfile.v2 (contents, props changed)
   sandbox/convert/libs/convert/doc/convert.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_acknowledgments.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_algorithms.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_better_conversion.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_direct.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_formatted.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_getting_started.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_index.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_integration.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_intro.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_locale.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_modified.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_more_converters.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_motivation.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_ref.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_ref.xml (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_ref.xml.saved (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_requirements.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_string.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/convert_two_behavioral.qbk (contents, props changed)
   sandbox/convert/libs/convert/doc/generate-html.sh (contents, props changed)
   sandbox/convert/libs/convert/doc/html/
   sandbox/convert/libs/convert/doc/html/boost/
   sandbox/convert/libs/convert/doc/html/boost/conversion/
   sandbox/convert/libs/convert/doc/html/boost/conversion/result.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/boost/convert/
   sandbox/convert/libs/convert/doc/html/boost/convert.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/boost/convert/format.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/boost/convert_StringOut__type_id266688.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/boost/convert_bool_id266619.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/boost/parameter/
   sandbox/convert/libs/convert/doc/html/boost/parameter/parameter_type.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/boost/parameter/parameter_type_aux_arg__id266508.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/boost/parameter/parameter_type_aux_arg__id266540.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/boost/parameter/parameter_type_aux_tagg_id266451.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/boost/parameter/parameter_type_aux_tagg_id266477.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/boost/safebool.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/boostbook.css (contents, props changed)
   sandbox/convert/libs/convert/doc/html/convert_reference.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/docutils.css (contents, props changed)
   sandbox/convert/libs/convert/doc/html/header/
   sandbox/convert/libs/convert/doc/html/header/boost/
   sandbox/convert/libs/convert/doc/html/header/boost/convert/
   sandbox/convert/libs/convert/doc/html/header/boost/convert/api_hpp.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/header/boost/convert/boost_parameter_ext_hpp.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/header/boost/convert/converter_base_hpp.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/header/boost/convert/stream_based_string_convertor_hpp.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/header/boost/convert/string_sfinae_hpp.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/header/boost/convert/string_to_bool_hpp.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/header/boost/convert/string_to_type_hpp.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/header/boost/convert/type_to_bool_hpp.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/header/boost/convert/type_to_string_hpp.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/header/boost/safebool_hpp.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/
   sandbox/convert/libs/convert/doc/html/images/alert.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/blank.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/caution.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/draft.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/home.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/important.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/next.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/next_disabled.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/note.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/prev.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/prev_disabled.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/smiley.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/tip.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/toc-blank.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/toc-minus.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/toc-plus.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/up.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/up_disabled.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/images/warning.png (contents, props changed)
   sandbox/convert/libs/convert/doc/html/index/
   sandbox/convert/libs/convert/doc/html/index.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/index/s17.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/minimal.css (contents, props changed)
   sandbox/convert/libs/convert/doc/html/reference.css (contents, props changed)
   sandbox/convert/libs/convert/doc/html/standalone_HTML.manifest (contents, props changed)
   sandbox/convert/libs/convert/doc/html/the_convert_library/
   sandbox/convert/libs/convert/doc/html/the_convert_library/convert_acknowledgements.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/the_convert_library/convert_algorithms.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/the_convert_library/convert_better_conv.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/the_convert_library/convert_direct.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/the_convert_library/convert_formatted.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/the_convert_library/convert_integration.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/the_convert_library/convert_locale.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/the_convert_library/convert_modified.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/the_convert_library/convert_more_converters.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/the_convert_library/convert_motivation.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/the_convert_library/convert_requirements.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/the_convert_library/convert_started.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/the_convert_library/convert_string.html (contents, props changed)
   sandbox/convert/libs/convert/doc/html/the_convert_library/convert_two_behavioral.html (contents, props changed)
   sandbox/convert/libs/convert/doc/index.idx (contents, props changed)
   sandbox/convert/libs/convert/example/
   sandbox/convert/libs/convert/index.html (contents, props changed)
   sandbox/convert/libs/convert/test/
   sandbox/convert/libs/convert/test/Jamfile.v2 (contents, props changed)
   sandbox/convert/libs/convert/test/test_convert.cpp (contents, props changed)
   sandbox/convert/libs/project.vc++/
   sandbox/convert/libs/project.vc++/convert/
   sandbox/convert/libs/project.vc++/convert/convert.ncb (contents, props changed)
   sandbox/convert/libs/project.vc++/convert/convert.sln (contents, props changed)
   sandbox/convert/libs/project.vc++/convert/convert.suo (contents, props changed)
   sandbox/convert/libs/project.vc++/convert/convert.vcproj (contents, props changed)

Added: sandbox/convert/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/convert/Jamfile.v2 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,12 @@
+#
+# Copyright © 2009-2011 Vladimir Batov
+#
+# This file is taken from the 'example' sandbox library
+#
+
+project convert
+ : requirements
+ <include>.&&$(BOOST_ROOT)
+ :
+ build-dir bin.v2
+ ;

Added: sandbox/convert/Jamroot.jam
==============================================================================
--- (empty file)
+++ sandbox/convert/Jamroot.jam 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,40 @@
+#
+# Copyright © 2009-2011 Vladimir Batov
+#
+# This file is taken from the 'example' sandbox library
+#
+
+##
+## IMPORTANT NOTE: This file MUST NOT be copied over a boost installation
+##
+
+path-constant top : . ;
+
+import modules ;
+import path ;
+
+local boost-root = [ modules.peek : BOOST_ROOT ] ;
+
+if ! $(boost-root)
+{
+ local boost-search-dirs = [ modules.peek : BOOST_BUILD_PATH ] ;
+
+ for local dir in $(boost-search-dirs)
+ {
+ if [ path.glob $(dir)/../../../ : boost/version.hpp ]
+ {
+ boost-root += $(dir)/../../../ ;
+ }
+ }
+
+ if $(boost-root)
+ {
+ boost-root = [ path.make $(boost-root[1]) ] ;
+ }
+ else
+ {
+ ECHO "Warning: couldn't find BOOST_ROOT in" $(boost-root) ;
+ }
+}
+
+path-constant BOOST_ROOT : $(boost-root) ;
\ No newline at end of file

Added: sandbox/convert/boost/convert.hpp
==============================================================================
--- (empty file)
+++ sandbox/convert/boost/convert.hpp 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,22 @@
+/// \file boost/convert.hpp
+/// Public interface to the Boost.Convert framework. Includes all of the supporting headers.
+//
+// Boost.Convert library
+//
+// Copyright (c) 2009-2011 Vladimir Batov.
+// Many thanks to Robert Stewart, Scott McMurray, Andrey Semashev, Dave Abrahams,
+// Hartmut Kaiser, Anders Dalvander, Andrzej Krzemienski, Andrew Troschinetz and
+// all the Boosters participated in the related discussions and the review.
+// In many ways the library has been influenced and shaped by them.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+
+#ifndef __BOOST_CONVERT_PUBLIC_HPP__
+#define __BOOST_CONVERT_PUBLIC_HPP__
+
+#include "./convert/api.hpp"
+#include "./convert/string_to_type.hpp"
+#include "./convert/type_to_string.hpp"
+#include "./convert/string_to_bool.hpp"
+
+#endif // __BOOST_CONVERT_PUBLIC_HPP__

Added: sandbox/convert/boost/convert/api.hpp
==============================================================================
--- (empty file)
+++ sandbox/convert/boost/convert/api.hpp 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,132 @@
+/// \file boost/convert/api.hpp
+/// Defines the Boost.Convert interface
+//
+// Copyright (c) 2009-2011 Vladimir Batov.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+
+#ifndef __BOOST_CONVERT_PRIVATE_HPP__
+#define __BOOST_CONVERT_PRIVATE_HPP__
+
+#include "../safebool.hpp"
+#include "./workarounds.hpp"
+#include "./boost_parameter_ext.hpp"
+#include <boost/throw_exception.hpp>
+#include <boost/optional.hpp>
+#include <stdexcept>
+
+namespace boost
+{
+ template<class TypeOut =void, class Enable =void> struct convert;
+
+ namespace conversion
+ {
+ template<class TypeOut> struct result;
+
+ namespace parameter
+ {
+ BOOST_PARAMETER_KEYWORD(type, throw_); ///< Specify throw-on-failure behavior explicitly.
+ BOOST_PARAMETER_KEYWORD(type, locale_); ///< Specify locale.
+ BOOST_PARAMETER_KEYWORD(type, fallback_); ///< Provide fallback value.
+ BOOST_PARAMETER_KEYWORD(type, format_); ///< Not used. Work in progress.
+ }
+ }
+}
+
+/// Encapsulation of the conversion result
+template<class TypeOut>
+struct boost::conversion::result
+{
+ typedef boost::safebool<result> safebool;
+ typedef TypeOut out_type;
+ typedef boost::optional<out_type> optional_out_type;
+ enum status { good, bad, throw_bad };
+
+ result(out_type const& v, status s) : value_(v), status_(s) {}
+ result(optional_out_type const& v, status s) : value_(v), status_(s) {}
+
+ /// Implicit conversion to safe-bool to allow checking the success of the conversion.
+ /// For example,
+ /// @code
+ /// convert<foo>::result result = convert<foo>::from(str, fallback_value);
+ /// if ( result) conversion succeeded
+ /// if (!result) conversion failed
+ /// @endcode
+ operator typename safebool::type() const { return safebool(status_ == good); }
+
+ /// Retrieve the actual result (value) of the conversion.
+ /// For example,
+ /// @code
+ /// convert<foo_type>::result result = convert<foo_type>::from(str, foo_value);
+ /// if (result)
+ /// {
+ /// foo_type value = result.value(); // Safe to retrieve the result
+ /// }
+ /// @endcode
+ out_type const& value() const
+ {
+ if (!value_ || status_ == throw_bad)
+ BOOST_THROW_EXCEPTION(std::invalid_argument("boost::convert failed"));
+
+ return value_.get();
+ }
+
+ private:
+
+ optional_out_type value_;
+ status status_;
+};
+
+/// Boost.Convert framework public interface
+template<class TypeOut, class EnableOut>
+struct boost::convert
+{
+ struct format;
+ typedef conversion::result<TypeOut> result;
+
+ /// Forward declaration of TypeIn-to-TypeOut converter.
+ /// This class is implemented/specialized for every TypeIn/TypeOut combination.
+ template<class TypeIn, class EnableIn =void> struct converter;
+
+ /// Conversion API with syntax and behavior similar to boost::lexical_cast,
+ /// i.e. it throws (std::invalid_argument) if conversion fails.
+ /// TODO. Need to pass boost::optional<TypeOut> instead of constructing
+ /// with the default constructors.
+ template<class TypeIn>
+ static
+ converter<TypeIn>
+ from(TypeIn const& value_in)
+ {
+ return converter<TypeIn>(value_in, TypeOut(), true);
+ }
+
+ /// Returns the 'fallback_value' if conversion fails.
+ /// Throws nothing by itself.
+ template<class TypeIn, class FallbackType>
+ static
+ converter<TypeIn>
+ from(TypeIn const& value_in, FallbackType const& fallback_value)
+ {
+ return converter<TypeIn>(value_in, fallback_value, false);
+ }
+
+ /// Create an empty converter. To be used with algorithms or directly.
+ /// TODO. Need to pass boost::optional<TypeIn> and boost::optional<TypeOut> instead of
+ /// constructing with the default constructors.
+ template<class TypeIn>
+ static
+ converter<TypeIn>
+ from()
+ {
+ return converter<TypeIn>(TypeIn(), TypeOut(), true);
+ }
+};
+
+/// Work in progress
+template<class TypeOut, class Enable>
+struct boost::convert<TypeOut, Enable>::format
+{
+ // Work in progress
+};
+
+#endif // __BOOST_CONVERT_PRIVATE_HPP__

Added: sandbox/convert/boost/convert/boost_parameter_ext.hpp
==============================================================================
--- (empty file)
+++ sandbox/convert/boost/convert/boost_parameter_ext.hpp 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,58 @@
+#ifndef __BOOST_PARAMETER_EXT_PRIVATE_HPP__
+#define __BOOST_PARAMETER_EXT_PRIVATE_HPP__
+
+#include <boost/parameter/keyword.hpp>
+
+// A Boost.Parameter extension by Andrey Semashev.
+// This should really go to Boost.Parameter in the end.
+
+namespace boost { namespace parameter {
+
+// The metafunction, given the type of the arguments pack and the keyword tag,
+// returns the corresponding parameter type
+template< typename ArgsT, typename KeywordTagT >
+struct parameter_type
+{
+ typedef void type;
+};
+
+template< typename ArgT, typename KeywordTagT >
+struct parameter_type<aux::tagged_argument<KeywordTagT, ArgT>, KeywordTagT>
+{
+ typedef typename aux::tagged_argument< KeywordTagT, ArgT >::value_type type;
+};
+
+template< typename KeywordTagT1, typename ArgT, typename KeywordTagT2 >
+struct parameter_type< aux::tagged_argument< KeywordTagT1, ArgT >, KeywordTagT2 >
+{
+ typedef void type;
+};
+
+template< typename ArgT, typename TailT, typename KeywordTagT >
+struct parameter_type<
+ aux::arg_list<
+ aux::tagged_argument< KeywordTagT, ArgT >,
+ TailT
+ >,
+ KeywordTagT
+>
+{
+ typedef typename aux::tagged_argument< KeywordTagT, ArgT >::value_type type;
+};
+
+template< typename KeywordTagT1, typename ArgT, typename TailT, typename KeywordTagT2 >
+struct parameter_type<
+ aux::arg_list<
+ aux::tagged_argument< KeywordTagT1, ArgT >,
+ TailT
+ >,
+ KeywordTagT2
+> :
+ public parameter_type< TailT, KeywordTagT2 >
+{
+};
+
+}} // boost::parameter
+
+#endif // __BOOST_PARAMETER_EXT_PRIVATE_HPP__
+

Added: sandbox/convert/boost/convert/converter_base.hpp
==============================================================================
--- (empty file)
+++ sandbox/convert/boost/convert/converter_base.hpp 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,74 @@
+// Boost.Convert library
+//
+// Copyright (c) 2009-2011 Vladimir Batov.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+
+#ifndef __BOOST_BASE_IMPLEMENTATION_PRIVATE_HPP__
+#define __BOOST_BASE_IMPLEMENTATION_PRIVATE_HPP__
+
+#include "./api.hpp"
+#include "./string_sfinae.hpp"
+
+namespace boost { namespace convert_detail {
+
+template<class Derived, class TypeIn, class TypeOut>
+struct converter_base
+{
+ typedef typename corrected_type< TypeIn>::type corrected_in_type;
+ typedef typename corrected_type<TypeOut>::type corrected_out_type;
+ typedef typename corrected_type<TypeOut>::out_type out_type;
+ typedef conversion::result<out_type> result_type;
+ typedef typename result_type::status status_type;
+ typedef boost::optional<out_type> optional_out_type;
+
+ template<class FallbackTypeOut>
+ converter_base(TypeIn const& value_in, FallbackTypeOut const& fallback_value, bool dothrow)
+ :
+ value_in_ (value_in),
+ fallback_ (fallback_value),
+ throw_ (dothrow ? result_type::throw_bad : result_type::bad)
+ {}
+
+ // To be used with algorithms
+ template<class OtherTypeIn>
+ Derived& operator()(OtherTypeIn const& value_in)
+ {
+ return (value_in_ = corrected_in_type(value_in), *(Derived*) this);
+ }
+
+ template<typename Arg>
+ Derived& operator()(parameter::aux::tagged_argument<conversion::parameter::type::throw_, Arg> const& arg)
+ {
+ bool const& value = arg[conversion::parameter::throw_];
+ throw_ = value ? result_type::throw_bad : result_type::bad;
+
+ return *(Derived*) this;
+ }
+ template<typename Arg>
+ Derived& operator()(parameter::aux::tagged_argument<conversion::parameter::type::fallback_, Arg> const& arg)
+ {
+ fallback_ = arg[conversion::parameter::fallback_];
+ throw_ = result_type::bad; // Disable throw-on-failure behavior
+
+ return *(Derived*) this;
+ }
+ out_type value () const { return this->operator result_type().value(); }
+ operator out_type () const { return this->operator result_type().value(); }
+ operator result_type () const
+ {
+ optional_out_type const& ret (((Derived*) this)->convert_(value_in_));
+
+ return ret ? result_type(ret, result_type::good) : result_type(fallback_, throw_);
+ }
+
+ private:
+
+ corrected_in_type value_in_;
+ corrected_out_type fallback_;
+ status_type throw_;
+};
+
+}}
+
+#endif // __BOOST_BASE_IMPLEMENTATION_PRIVATE_HPP__

Added: sandbox/convert/boost/convert/stream_based_string_convertor.hpp
==============================================================================
--- (empty file)
+++ sandbox/convert/boost/convert/stream_based_string_convertor.hpp 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,153 @@
+// Boost.Convert library
+//
+// Copyright (c) 2009-2011 Vladimir Batov.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+
+#ifndef __BOOST_CONVERT_STREAM_BASED_STRING_CONVERTOR_PRIVATE_HPP__
+#define __BOOST_CONVERT_STREAM_BASED_STRING_CONVERTOR_PRIVATE_HPP__
+
+#include "./api.hpp"
+#include "./string_sfinae.hpp"
+#include <boost/shared_ptr.hpp>
+#include <sstream>
+
+namespace boost { namespace convert_detail {
+
+template<typename TypeIn, typename TypeOut, typename Enable =void>
+struct stream_based_string_convertor;
+
+template<typename TypeIn, typename TypeOut>
+struct stream_based_string_convertor<
+ TypeIn,
+ TypeOut,
+ typename boost::enable_if_c<is_any_string<TypeIn>::value || is_any_string<TypeOut>::value, void>::type>
+{
+ typedef typename mpl::if_<is_any_string<TypeOut>,
+ TypeOut, TypeIn>::type string_type;
+ typedef typename range_value<string_type>::type char_type;
+ typedef std::basic_stringstream<char_type> stream_type;
+ typedef boost::shared_ptr<stream_type> shared_stream_type; // std::streams are not copyable. Can we do better?
+ typedef stream_based_string_convertor this_type;
+
+ typedef typename corrected_type< TypeIn>::type corrected_in_type;
+ typedef typename corrected_type<TypeOut>::type corrected_out_type;
+ typedef typename corrected_type<TypeOut>::out_type out_type;
+ typedef conversion::result<out_type> result_type;
+ typedef typename result_type::status status_type;
+ typedef boost::optional<out_type> optional_out_type;
+
+ template<typename SomeTypeIn, typename FallbackTypeOut>
+ stream_based_string_convertor( // For type-to-string conversions
+ SomeTypeIn const& value_in,
+ FallbackTypeOut const& fallback_value,
+ bool dothrow,
+ typename boost::enable_if_c<boost::is_same<TypeIn, SomeTypeIn>::value && !is_any_string<TypeIn>::value, void>::type* =0)
+ :
+ value_in_ (value_in),
+ fallback_ (fallback_value),
+ throw_ (dothrow ? result_type::throw_bad : result_type::bad),
+ stream_ (new stream_type(std::ios_base::in | std::ios_base::out))
+ {}
+
+ template<typename SomeTypeIn, typename FallbackTypeOut>
+ stream_based_string_convertor( // For string-to-type conversions
+ SomeTypeIn const& value_in,
+ FallbackTypeOut const& fallback_value,
+ bool dothrow,
+ typename boost::enable_if<is_same_string<TypeIn, SomeTypeIn>, void>::type* =0)
+ :
+ value_in_ (value_in),
+ fallback_ (fallback_value),
+ throw_ (dothrow ? result_type::throw_bad : result_type::bad),
+ stream_ (new stream_type(std::ios_base::in | std::ios_base::out))
+ {
+ *stream_ << value_in_;
+ }
+
+ // To be used with algorithms
+
+ template<typename SomeTypeIn>
+ typename boost::enable_if_c<boost::is_same<TypeIn, SomeTypeIn>::value && !is_any_string<TypeIn>::value, this_type>::type&
+ operator()(SomeTypeIn const& value_in) // For type-to-string conversions
+ {
+ stream_->clear();
+ stream_->str(corrected_out_type());
+ value_in_ = corrected_in_type(value_in);
+
+ return *this;
+ }
+ template<typename OtherStringIn>
+ typename boost::enable_if<is_same_string<TypeIn, OtherStringIn>, this_type>::type&
+ operator()(OtherStringIn const& from_str) // For string-to-type conversions
+ {
+ stream_->clear();
+ stream_->str(corrected_in_type(from_str));
+
+ return *this;
+ }
+
+ template<typename Arg>
+ this_type& operator()(parameter::aux::tagged_argument<conversion::parameter::type::throw_, Arg> const& arg)
+ {
+ bool const& value = arg[conversion::parameter::throw_];
+ throw_ = value ? result_type::throw_bad : result_type::bad;
+
+ return *this;
+ }
+ template<typename Arg>
+ this_type& operator()(parameter::aux::tagged_argument<conversion::parameter::type::fallback_, Arg> const& arg)
+ {
+ fallback_ = arg[conversion::parameter::fallback_];
+ throw_ = result_type::bad; // Disable throw-on-failure behavior
+
+ return *this;
+ }
+ template<typename Arg>
+ this_type& operator()(parameter::aux::tagged_argument<conversion::parameter::type::locale_, Arg> const& arg)
+ {
+ std::locale const& locale = arg[conversion::parameter::locale_];
+ return (stream_->imbue(locale), *this);
+ }
+
+ template<typename Manipulator>
+ this_type& operator>> (Manipulator m) { return (*stream_ >> m, *this); }
+
+ out_type value () const { return this->operator result_type().value(); }
+ operator out_type () const { return this->operator result_type().value(); }
+ operator result_type () const
+ {
+ optional_out_type const& res(this->convert_<corrected_in_type>());
+
+ return res ? result_type(res, result_type::good) : result_type(fallback_, throw_);
+ }
+
+ private:
+
+ template<typename SomeTypeIn>
+ typename boost::enable_if_c<boost::is_same<TypeIn, SomeTypeIn>::value && !is_any_string<TypeIn>::value, optional_out_type>::type
+ convert_() const // For type-to-string conversions
+ {
+ bool success (*stream_ && *stream_ << value_in_);
+ return success ? optional_out_type(stream_->str()) : optional_out_type();
+ }
+
+ template<typename SomeTypeIn>
+ typename boost::enable_if_c<is_same_string<TypeIn, SomeTypeIn>::value, optional_out_type>::type
+ convert_() const // For string-to-type conversions
+ {
+ out_type value (fallback_);
+ bool success (*stream_ && *stream_ >> value);
+
+ return success ? optional_out_type(value) : optional_out_type();
+ }
+
+ corrected_in_type value_in_;
+ corrected_out_type fallback_;
+ status_type throw_;
+ shared_stream_type stream_;
+};
+
+}}
+
+#endif // __BOOST_CONVERT_STREAM_BASED_STRING_CONVERTOR_PRIVATE_HPP__

Added: sandbox/convert/boost/convert/string_sfinae.hpp
==============================================================================
--- (empty file)
+++ sandbox/convert/boost/convert/string_sfinae.hpp 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,170 @@
+/// \file boost/convert/string_sfinae.hpp
+/// Defines various string-related type checks
+//
+// Copyright (c) 2009-2011 Vladimir Batov.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+
+#ifndef __BOOST_CONVERT_STRING_SFINAE_HPP__
+#define __BOOST_CONVERT_STRING_SFINAE_HPP__
+
+#include <boost/type_traits.hpp>
+#include <boost/type_traits/decay.hpp>
+#include <boost/type_traits/detail/yes_no_type.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/range.hpp>
+#include <boost/range/as_literal.hpp>
+
+namespace boost { namespace convert_detail {
+
+namespace sfinae_detail {
+
+using ::boost::type_traits::yes_type;
+using ::boost::type_traits:: no_type;
+
+template<typename T>
+class is_range // not completed and not used
+{
+ // Does not work for derived classes (like derived from std::string) as the U::begin signature
+ // is different (of the base class).
+
+ template<typename U, typename U::const_iterator (U::*)() const> struct exists {};
+ template<typename U> static no_type test (...);
+ template<typename C> static yes_type test (exists<C, &C::begin>*);
+
+ public:
+
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(yes_type) == sizeof(test<T>(0))));
+};
+
+template<class String, class Char>
+class is_any_string
+{
+ typedef
+ typename boost::remove_const<
+ typename boost::remove_pointer<
+ typename boost::remove_reference<
+ typename boost::decay<String>::type /* Char(&)[] -> Char* */
+ >::type
+ >::type
+ >::type* ptr_type;
+
+ static no_type test (...);
+ static yes_type test (Char*);
+ template<class T, class A> static yes_type test (std::basic_string<Char,T,A>*);
+
+ // Support for Char-based range-like containers (std::list<char>, etc) have been
+ // disabled as the attempt seems overzealous and in addition some unexpected
+ // types seem to jump in (like boost::regex) which happen to define container-like
+ // properties.
+// template<class C> static yes_type test (
+// C/*ontainer*/ const*,
+// typename boost::enable_if<boost::is_same<typename C::value_type, Char> >::type* =0,
+// typename C::const_iterator* =0);
+
+ public:
+
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(yes_type) == sizeof(test(ptr_type(0)))));
+};
+
+template<class String, class Char>
+class is_std_string
+{
+ typedef
+ typename boost::remove_const<
+ typename boost::remove_pointer<
+ typename boost::remove_reference<String>::type
+ >::type
+ >::type* ptr_type;
+
+ static no_type test (...);
+ template<class T, class A> static yes_type test (std::basic_string<Char,T,A>*);
+
+ public:
+
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(yes_type) == sizeof(test(ptr_type(0)))));
+};
+
+} // end of sfinae_detail
+
+/// Check if the provided type is a char-based range
+template<class T>
+struct is_char_string
+{
+ BOOST_STATIC_CONSTANT(bool, value = (sfinae_detail::is_any_string<T, char>::value));
+};
+
+/// Check if the provided type is a wide-char-based range
+template<class T>
+struct is_wide_string
+{
+ BOOST_STATIC_CONSTANT(bool, value = (sfinae_detail::is_any_string<T, wchar_t>::value));
+};
+
+/// Check if both provided types are char-based or wide-char-based ranges
+template<class T, class Y>
+struct is_same_string
+{
+ BOOST_STATIC_CONSTANT(
+ bool,
+ value = ((is_char_string<T>::value && is_char_string<Y>::value) ||
+ (is_wide_string<T>::value && is_wide_string<Y>::value)));
+};
+
+template<class T>
+struct is_any_string
+{
+ BOOST_STATIC_CONSTANT(
+ bool,
+ value = (is_char_string<T>::value || is_wide_string<T>::value));
+};
+
+/// Check if the provided type is std::string, std::wstring (or derived)
+template<class T>
+struct is_std_string
+{
+ BOOST_STATIC_CONSTANT(
+ bool,
+ value = (sfinae_detail::is_std_string<T, char>::value ||
+ sfinae_detail::is_std_string<T, wchar_t>::value));
+};
+
+template<class Type, class Enable =void>
+struct corrected_type
+{
+ typedef Type type;
+ typedef Type in_type;
+ typedef Type out_type;
+};
+
+template<class String>
+struct corrected_type<String, typename boost::enable_if<is_any_string<String> >::type>
+:
+ public std::basic_string<typename boost::range_value<String>::type>
+{
+ typedef corrected_type type;
+ typedef String in_type;
+ typedef typename boost::range_value<in_type>::type char_type;
+ typedef std::basic_string<char_type> out_type;
+
+ corrected_type() {}
+
+ template<class Iterator>
+ corrected_type(Iterator beg, Iterator end) : out_type(beg, end)
+ {}
+
+ template<class StringRange>
+ corrected_type(StringRange const& from_str)
+ {
+ typedef typename range_iterator<StringRange const>::type iterator_type;
+
+ iterator_range<iterator_type> range (boost::as_literal(from_str));
+ out_type value (range.begin(), range.end());
+
+ out_type::swap(value);
+ }
+};
+
+}}
+
+#endif // __BOOST_CONVERT_STRING_SFINAE_HPP__

Added: sandbox/convert/boost/convert/string_to_bool.hpp
==============================================================================
--- (empty file)
+++ sandbox/convert/boost/convert/string_to_bool.hpp 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,80 @@
+/// \file boost/convert/string_to_bool.hpp
+/// Implements string-to-bool converter
+//
+// Copyright (c) 2009-2011 Vladimir Batov.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+
+
+#ifndef __BOOST_CONVERT_STRING_TO_BOOL_HPP__
+#define __BOOST_CONVERT_STRING_TO_BOOL_HPP__
+
+#include "./type_to_bool.hpp"
+#include "./converter_base.hpp"
+#include <boost/algorithm/string.hpp>
+
+// A fairly half-hearted implementation of conversion to Boolean
+// to demonstrate the idea of specializing/optimizing for a particular type
+// with no underlying std::stream and, therefore, no manipulators.
+
+namespace boost {
+
+namespace convert_detail {
+
+template<class Char> struct bool_constant;
+
+/// Recognised string values
+template<>
+struct bool_constant<char>
+{
+ static char const* const* all_1s () { static char const* values[] = { "1", "yes", "true", 0 }; return values; }
+ static char const* const* all_0s () { static char const* values[] = { "0", "no", "false", 0 }; return values; }
+};
+
+/// Recognised string values
+template<>
+struct bool_constant<wchar_t>
+{
+ static wchar_t const* const* all_1s () { static wchar_t const* values[] = { L"1", L"yes", L"true", 0 }; return values; }
+ static wchar_t const* const* all_0s () { static wchar_t const* values[] = { L"0", L"no", L"false", 0 }; return values; }
+};
+
+}
+
+/// Partial specialization for TypeOut = bool, TypeIn = char string
+template<class StringIn>
+struct convert<bool>::converter<
+ StringIn,
+ typename boost::enable_if<convert_detail::is_any_string<StringIn> >::type>
+:
+ public convert_detail::converter_base<convert<bool>::converter<StringIn, void>, StringIn, bool>
+{
+ typedef converter this_type;
+ typedef convert_detail::converter_base<this_type, StringIn, bool> base_type;
+ typedef typename base_type::corrected_in_type corrected_in_type;
+ typedef typename corrected_in_type::char_type char_type;
+ typedef typename base_type::optional_out_type optional_out_type;
+
+ converter(StringIn const& from_str, bool default_value, bool dothrow)
+ :
+ base_type(from_str, default_value, dothrow)
+ {}
+
+ optional_out_type convert_(corrected_in_type const& value_in) // Called in converter_base.
+ {
+ corrected_in_type value = boost::to_lower_copy(value_in);
+ char_type const* const* all_0s = convert_detail::bool_constant<char_type>::all_0s();
+ char_type const* const* all_1s = convert_detail::bool_constant<char_type>::all_1s();
+ bool got_0 = false;
+ bool got_1 = false;
+
+ for (; *all_0s; ++all_0s) got_0 |= 0 == value.compare(*all_0s);
+ for (; *all_1s; ++all_1s) got_1 |= 0 == value.compare(*all_1s);
+
+ return (got_1 || got_0) ? optional_out_type(got_1) : optional_out_type();
+ }
+};
+
+}
+
+#endif // __BOOST_CONVERT_STRING_TO_BOOL_HPP__

Added: sandbox/convert/boost/convert/string_to_type.hpp
==============================================================================
--- (empty file)
+++ sandbox/convert/boost/convert/string_to_type.hpp 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,46 @@
+/// \file boost/convert/string_to_type.hpp
+/// Implements string-to-type converter
+//
+// Copyright (c) 2009-2011 Vladimir Batov.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+
+#ifndef __BOOST_CONVERT_STRING_TO_TYPE_HPP__
+#define __BOOST_CONVERT_STRING_TO_TYPE_HPP__
+
+#include "./stream_based_string_convertor.hpp"
+
+namespace boost {
+
+/// String-to-type Converter
+template<class TypeOut, class EnableOut>
+template<class StringIn>
+struct convert<TypeOut, EnableOut>::converter<
+ StringIn,
+ typename boost::enable_if<convert_detail::is_any_string<StringIn> >::type>
+:
+ public convert_detail::stream_based_string_convertor<StringIn, TypeOut>
+{
+ typedef convert_detail::stream_based_string_convertor<StringIn, TypeOut> base_type;
+ typedef converter this_type;
+
+ converter(StringIn const& from_str, TypeOut const& default_value, bool dothrow)
+ :
+ base_type(from_str, default_value, dothrow)
+ {}
+
+ /// Specify formatting behavior using std::stream-based manipulator.
+ /// For example,
+ /// @code
+ /// int value = convert<int>::from("FF", -1) >> std::hex;
+ /// @endcode
+ template<typename Manipulator>
+ this_type& operator>> (Manipulator m) { return (base_type::operator>>(m), *this); }
+
+ template<typename T>
+ this_type& operator()(T const& v) { return (base_type::operator()(v), *this); }
+};
+
+}
+
+#endif // __BOOST_CONVERT_STRING_TO_TYPE_HPP__

Added: sandbox/convert/boost/convert/type_to_bool.hpp
==============================================================================
--- (empty file)
+++ sandbox/convert/boost/convert/type_to_bool.hpp 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,41 @@
+// Boost.Convert library
+//
+// Copyright (c) 2009-2011 Vladimir Batov.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+
+#ifndef __BOOST_CONVERT_TYPE_TO_BOOL_HPP__
+#define __BOOST_CONVERT_TYPE_TO_BOOL_HPP__
+
+#include "./api.hpp"
+
+namespace boost {
+
+// Have to have this specialization which repeats the generic.
+// Otherwise, gcc 4.2.4 crashes.
+template<>
+struct convert<bool> // Conversion to Boolean
+{
+ typedef conversion::result<bool> result;
+ template<class TypeIn, class EnableIn =void> struct converter;
+
+ template<class TypeIn>
+ static
+ converter<TypeIn>
+ from(TypeIn const& value_in =TypeIn())
+ {
+ return converter<TypeIn>(value_in, false, true);
+ }
+
+ template<class TypeIn>
+ static
+ converter<TypeIn>
+ from(TypeIn const& value_in, bool fallback_value)
+ {
+ return converter<TypeIn>(value_in, fallback_value, false);
+ }
+};
+
+}
+
+#endif // __BOOST_CONVERT_TYPE_TO_BOOL_HPP__

Added: sandbox/convert/boost/convert/type_to_string.hpp
==============================================================================
--- (empty file)
+++ sandbox/convert/boost/convert/type_to_string.hpp 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,41 @@
+// Boost.Convert library
+//
+// Copyright (c) 2009-2011 Vladimir Batov.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+
+#ifndef __BOOST_CONVERT_TYPE_TO_STRING_HPP__
+#define __BOOST_CONVERT_TYPE_TO_STRING_HPP__
+
+#include "./stream_based_string_convertor.hpp"
+
+namespace boost {
+
+/// Partial specialization for conversions to std::string
+template<class StringOut>
+struct convert<
+ StringOut,
+ typename boost::enable_if<convert_detail::is_std_string<StringOut> >::type>
+{
+ typedef conversion::result<StringOut> result;
+
+ template<class TypeIn>
+ static
+ convert_detail::stream_based_string_convertor<TypeIn, StringOut>
+ from(TypeIn const& value_in =TypeIn())
+ {
+ return convert_detail::stream_based_string_convertor<TypeIn, StringOut>(value_in, StringOut(), true);
+ }
+
+ template<class TypeIn, class DefaultStringOut>
+ static
+ convert_detail::stream_based_string_convertor<TypeIn, StringOut>
+ from(TypeIn const& value_in, DefaultStringOut const& default_str)
+ {
+ return convert_detail::stream_based_string_convertor<TypeIn, StringOut>(value_in, default_str, false);
+ }
+};
+
+} // End of the boost namespace
+
+#endif // __BOOST_CONVERT_TYPE_TO_STRING_HPP__

Added: sandbox/convert/boost/convert/workarounds.hpp
==============================================================================
--- (empty file)
+++ sandbox/convert/boost/convert/workarounds.hpp 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,17 @@
+// Boost.Convert library
+//
+// Copyright (c) 2009-2011 Vladimir Batov.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+
+#ifndef __BOOST_CONVERT_WORKAROUNDS_PRIVATE_HPP__
+#define __BOOST_CONVERT_WORKAROUNDS_PRIVATE_HPP__
+
+#include <boost/version.hpp>
+
+#if defined(_MSC_VER)
+# pragma warning(disable: 4348)
+# pragma warning(disable: 4800)
+#endif
+
+#endif // __BOOST_CONVERT_WORKAROUNDS_PRIVATE_HPP__

Added: sandbox/convert/boost/safebool.hpp
==============================================================================
--- (empty file)
+++ sandbox/convert/boost/safebool.hpp 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,72 @@
+// Boost.SafeBool
+//
+// Copyright (c) 2009-2011 Vladimir Batov.
+// With valuable input from Steven Watanabe and Robert Stewart.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+
+#ifndef __BOOST_SAFE_BOOL_PUBLIC_HPP__
+#define __BOOST_SAFE_BOOL_PUBLIC_HPP__
+
+namespace boost
+{
+/// @brief Generalization of the Safe-Bool Technique
+/// @details An implicit conversion to bool (operator bool() const) is very much
+/// idiomatic and is often deployed in constructs like "if (foo)" and "if (!foo)"
+/// (with no explicit op!() defined). However, sadly, implementing "operator bool()"
+/// is *wrong* as that conversion kicks in far too often and unexpectedly. Like in
+/// "foo == 1", "foo+1", "1+foo" or potentially during lexical_cast<string>(foo)
+/// (if there are no op>>() and op<<() defined). Consequently, that "implicit
+/// conversion to bool" functionality has to be implemented in an indirect and
+/// somewhat awkward way via an implicit conversion to some other type. The best
+/// type for the purpose appears to be a pointer to a member function. For more
+/// see the chapter 7.7 in Alexandrescu's "Modern C++ Design" and the article at
+/// http://www.artima.com/cppsource/safebool.html by Bjorn Karlsson.\n\n
+/// Deployment:
+/// @code
+/// struct Foo
+/// { ...
+/// operator safebool<Foo>::type() const { return safebool<Foo>(condition); }
+/// };
+/// template<class T>
+/// struct Moo // for a template class
+/// { ...
+/// operator typename safebool<Moo>::type() const { return safebool<Moo>(condition); }
+/// };
+/// template<class T>
+/// struct Zoo // with convenience typedefs
+/// { ...
+/// typedef safebool<Zoo> safebool;
+/// typedef typename safebool::type safebool_type;
+///
+/// operator safebool_type() const { return safebool(condition); }
+/// };
+/// @endcode
+/// safebool needs to be a template to make the returned safebool<Foo>::type type
+/// unique. Without it different classes would return the same safebool::type type
+/// that would make possible relational operators between unrelated types. Like
+/// @code
+/// struct Foo { operator safebool::type() const { return safebool(...); }};
+/// struct Moo { operator safebool::type() const { return safebool(...); }};
+/// Foo foo;
+/// Zoo zoo;
+/// if (foo == zoo) Valid (but wrong) comparison between unrelated types.
+/// @endcode
+template<class T>
+struct safebool
+{
+ typedef void (safebool::*type)() const;
+
+ explicit safebool(bool v) : value_(v) {}
+
+ operator type() const { return value_ ? &safebool::true_ : 0; }
+
+ private:
+
+ void true_ () const {};
+ bool value_;
+};
+
+} // End of the namespace
+
+#endif // __BOOST_SAFE_BOOL_PUBLIC_HPP__

Added: sandbox/convert/libs/convert/doc/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/Jamfile.v2 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,101 @@
+# Convert documentation Jamfile
+#
+# Copyright � 2009-2011 Vladimir Batov
+#
+
+using quickbook ;
+using doxygen ;
+
+path-constant here : . ; # convenient to refer to files in the same directory as this jamfile.v2
+path-constant boost-images : $(BOOST_ROOT)/doc/src/images ;
+
+import modules ;
+
+if --enable-index in [ modules.peek : ARGV ]
+{
+ ECHO "Building the convert docs with automatic index generation enabled." ;
+ using auto-index ;
+ project convert_doc : requirements
+ <auto-index>on
+ <auto-index-script>index.idx
+ <auto-index-prefix>../../../
+ <auto-index-verbose>on
+ <format>html:<auto-index-internal>on
+ <format>html:<xsl:param>generate.index=0
+ <format>pdf:<auto-index-internal>on
+ <format>pdf:<xsl:param>index.on.type=1
+ <quickbook-define>enable_index ;
+}
+else
+{
+ project convert_doc ;
+ ECHO "Building the convert docs with automatic index generation disabled. Try building with --enable-index." ;
+}
+
+doxygen convert_ref
+ :
+ $(here)/../../../boost/convert.hpp
+ $(here)/../../../boost/safebool.hpp
+ [ glob $(here)/../../../boost/convert/*.hpp ]
+ :
+ <doxygen:param>PROJECT_NAME="CONVERT"
+ <doxygen:param>PROJECT_NUMBER=1
+ <doxygen:param>SORT_MEMBER_DOCS=NO
+ <doxygen:param>SHOW_INCLUDE_FILES=NO
+ <doxygen:param>MAX_INITIALIZER_LINES=0
+ <doxygen:param>VERBATIM_HEADERS=NO
+ <reftitle>"Convert Reference"
+;
+
+xml convert
+ :
+ convert.qbk
+ :
+ <dependency>convert_ref
+;
+
+boostbook standalone
+ :
+ convert
+ :
+ <xsl:param>boost.root="../../../.."
+ <xsl:param>chunk.section.depth=8 # How far down we chunk nested sections, basically all of them.
+ <xsl:param>toc.section.depth=8 # How far down sections get TOCs.
+ <xsl:param>toc.max.depth=4 # Max depth in each TOC.
+
+ # PDF Options:
+ # TOC Generation: this is needed for FOP-0.9 and later:
+ <xsl:param>fop1.extensions=0
+ <xsl:param>xep.extensions=1
+ # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
+ <xsl:param>fop.extensions=1
+ # No indent on body text:
+ <xsl:param>body.start.indent=0pt
+ # Margin size:
+ <xsl:param>page.margin.inner=0.5in
+ # Margin size:
+ <xsl:param>page.margin.outer=0.5in
+ # Paper type = A4
+ <xsl:param>paper.type=A4
+ # Yes, we want graphics for admonishments:
+ <xsl:param>admon.graphics=1
+ # Set this one for PDF generation *only*:
+ # default pnd graphics are awful in PDF form,
+ # better use SVG's instead:
+ <format>pdf:<xsl:param>admon.graphics.extension=".svg"
+ <format>pdf:<xsl:param>admon.graphics.path=$(boost-images)/
+
+ <dependency>css
+ <dependency>images
+ ;
+
+install css : [ glob $(BOOST_ROOT)/doc/src/*.css ]
+ : <location>html ;
+install images : [ glob $(BOOST_ROOT)/doc/src/images/*.png ]
+ : <location>html/images ;
+install pdfinstall
+ : standalone
+ : <location>$(here) <install-type>PDF <name>convert.pdf
+ ;
+explicit css ;
+explicit images ;

Added: sandbox/convert/libs/convert/doc/convert.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,46 @@
+[/==============================================================================
+ Copyright (C) 2009-2011 Vladimir Batov
+
+ Use, modification and distribution is subject to 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)
+===============================================================================/]
+[library The Convert Library
+ [quickbook 1.5]
+ [version 1.0]
+ [id convert]
+ [dirname convert]
+ [copyright 2009-2011 Vladimir Batov]
+ [purpose Beyond boost::lexical_cast]
+ [category generic]
+ [authors [Batov, Vladimir]]
+ [source-mode c++]
+ [license
+ 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])
+ ]
+]
+
+[def __ref_1__ [@http://www.boost.org/doc/libs/1_38_0/libs/conversion/lexical_cast.htm /lexical_cast/ documentation]]
+[def __ref_2__ [@http://www.gotw.ca/publications/mill19.htm The String Formatters of Manor Farm by H. Sutter]]
+[def __ref_3__ [@http://www.boostpro.com/vault/index.php?action=downloadfile&filename=conversion.zip&directory=Utilities& the Conversion Library submission by Vicente Botet (currently in the Boost Review Queue)]]
+[def __ref_4__ [@http://www.cecalc.ula.ve/documentacion/tutoriales/PGICDK/doc/pgC++_lib/stdlibug/str_5412.htm "Stream Storage for Private Use: iword, pword, and xalloc" by Rogue Wave Software]]
+
+[include convert_intro.qbk]
+[include convert_motivation.qbk]
+[include convert_getting_started.qbk]
+[include convert_better_conversion.qbk]
+[include convert_two_behavioral.qbk]
+[include convert_requirements.qbk]
+[include convert_integration.qbk]
+[include convert_modified.qbk]
+[include convert_formatted.qbk]
+[include convert_locale.qbk]
+[include convert_string.qbk]
+[include convert_algorithms.qbk]
+[include convert_direct.qbk]
+[include convert_more_converters.qbk]
+[include convert_ref.qbk]
+[include convert_acknowledgments.qbk]
+[include convert_index.qbk]

Added: sandbox/convert/libs/convert/doc/convert_acknowledgments.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_acknowledgments.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,9 @@
+[section:convert_acknowledgements Acknowledgements]
+
+Many thanks to Kevlin Henney and Dave Abrahams for their /lexical_cast/-related insights and explanations.
+
+Many thanks to Robert Stewart for his continuous and unwavering involvement, Hartmut Kaiser, Andrey Semashev, Scott McMurray, Anders Dalvander, Andrzej Krzemienski, Andrew Troschinetz, Alexander Nasonov, Jeff Flinn and all the Boosters participated in the related /lexical_cast/ and /convert/ discussions for expressing their views, opinions and suggestions. In many ways the library has been influenced and shaped by them.
+
+Special thanks to Edward Diener the Boost Review Manager for administrative and technical help, guidance and advice.
+
+[endsect]

Added: sandbox/convert/libs/convert/doc/convert_algorithms.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_algorithms.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,35 @@
+[section:convert_algorithms Using Boost.Convert with Standard Algorithms]
+
+Both described conversion interfaces can be used with standard algorithms and exhibit the same already familiar behavior:
+
+ std::vector<int> integers;
+ boost::array<char const*, 5> strings = {{ "0XF", "0X10", "0X11", "0X12", "not an int"}};
+
+ // With fallback value provided. No throwing. Added hex formatting.
+ std::transform(
+ strings.begin(),
+ strings.end(),
+ std::back_inserter(integers),
+ convert<int>::from(string(), -1) >> std::hex);
+
+ BOOST_ASSERT(integers[0] == 15);
+ BOOST_ASSERT(integers[1] == 16);
+ BOOST_ASSERT(integers[2] == 17);
+ BOOST_ASSERT(integers[3] == 18);
+ BOOST_ASSERT(integers[4] == -1); // Failed conversion
+
+ // Same as above. Alternative interface.
+ std::transform(
+ strings.begin(),
+ strings.end(),
+ std::back_inserter(integers),
+ convert<int>::from<string>()(fallback_ = -1) >> std::hex);
+
+ // No fallback valus provided, i.e. throws on failure.
+ std::transform(
+ strings.begin(),
+ strings.end(),
+ std::back_inserter(integers),
+ convert<int>::from<string>());
+
+[endsect]

Added: sandbox/convert/libs/convert/doc/convert_better_conversion.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_better_conversion.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,66 @@
+[section:convert_better_conv Better Conversion-Failure Check With convert<>::result]
+
+After the call below 'i2' will have the value of -1 (the supplied fallback value) due to conversion failure:
+
+ int i2 = convert<int>::from("not an int", -1); // after the call i2 = -1
+
+ if (i2 == -1) failed to convert
+
+Checking the return value as above is certainly straight-forward and convenient. Unfortunately, it is not always entirely correct as -1 is returned for the conversion failure and for the conversion success when the supplied string happens to be "-1". That non-determinism is a known limitation of this basic interface. Still, for a surprising number of applications it is adequate as it is quite common to still have "spare" values outside the valid range. Such values (outside the valid range) are suitable to indicate conversion failures (say, INT_MAX for integers) without introducing the above-mentioned behavioral non-determinism.
+
+More so, it is not that uncommon for applications to ignore conversion failures altogether and proceed with the supplied default/fallback value.
+
+Having said that, there are applications which do not fall in to any of the categories mentioned above. Those applications still require the conversion-failure condition clearly detected and, therefore, require a reliable conversion-failure detection.
+
+For such applications the /lexical_cast/-like throw-on-failure interface might be adequate:
+
+ try
+ {
+ int i1 = convert<int>::from(str); // Throws if the conversion fails
+ ...
+ }
+ catch (std::invalid_argument const& ex)
+ {
+ Conversion failed
+ }
+
+However, throwing an exception might not always be the desirable behavior (not to mention the heaviness of the ['try/catch] interface which does not seem exactly fitting on such a low level).
+
+More so, some classes might fail to meet that requirement for the Target type to be /DefaultConstructible/. The following /direction/ class is one such example. It has only two (/direction::up/ and /direction::dn/) states available (i.e. no "spare" values to indicate conversion failure) and is not /DefaultConstructible/:
+
+ struct direction
+ {
+ enum value_type { up, dn };
+ direction(value_type value) : value_(value) {}
+ private: value_type value_;
+ };
+
+For such a class the call below will not compile (due to the /DefaultConstructible/ Target type requirement):
+
+ direction dir = convert<direction>::from(str); // Does not compile
+
+More so, the following is no good either as it does not provide a reliable detection of a conversion failure:
+
+ direction dir = convert<direction>::from(str, direction::up);
+
+ if (dir == up_dir) ... // Was it a failure or a successful "up" conversion?
+
+For situations like that the library provides the following interface:
+
+ convert<direction>::result res = convert<direction>::from(str, up_dir);
+ if (res) conversion succeeded
+ if (!res) conversion failed
+ direction dir = res.value(); // Retrieve the conversion result
+
+The /convert::result/ class has an implicit safe-bool conversion operator that allows to check the success of the conversion. The actual result of the conversion is retrieved with /convert::result::value()/.
+
+That same /convert::result/ could be deployed to work around the throwing behavior of the /lexical_cast/-like interface:
+
+ // This call does not throw.
+ convert<int>::result res = convert<int>::from("not an int");
+ // An attempt to retrieve a failed-conversion value will throw.
+ int i1 = res.value();
+ // Check the success first and retrieve the value if available.
+ int i2 = res ? res.value() : -1;
+
+[endsect]

Added: sandbox/convert/libs/convert/doc/convert_direct.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_direct.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,21 @@
+[section:convert_direct Accessing Converters Directly]
+
+What happens when /Boost.Convert/ is used with algorithms is that /convert::from()/ returns a configured converter which is then fed to an algorithm. Those converters can be explicitly deployed outside algorithms. For example,
+
+ convert<int>::converter<string> hex_cvt = convert<int>::from<string>() >> std::hex;
+ convert<int>::converter<string> dec_cvt = convert<int>::from(string(), -1);
+ // convert<int>::converter<string> dec_cvt = convert<int>::from<string>()(fallback_ = -1); // Same as above
+
+ int dec_result11 = dec_cvt("F"); // Conversion fails
+ int hex_result21 = hex_cvt("F"); // Conversion succeeds
+ int dec_result12 = dec_cvt("10"); // Returns 10
+ int hex_result22 = hex_cvt("10"); // Returns 16
+
+ BOOST_ASSERT(dec_result11 == -1); // Failed conversion
+ BOOST_ASSERT(dec_result12 == 10);
+ BOOST_ASSERT(hex_result21 == 15);
+ BOOST_ASSERT(hex_result22 == 16);
+
+A possible advantage of such a direct deployment might be that a converter is configured once and then re-used by apllying the same conversion to a series of values (as it is done with algorithms).
+
+[endsect]

Added: sandbox/convert/libs/convert/doc/convert_formatted.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_formatted.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,32 @@
+[section:convert_formatted Formatted Conversions]
+
+An important part of string-to-type and type-to-string conversions is formatting. Currently /Boost.Convert/ provides that functionality by deploying the standard /std::stream/-based formatting engine and familiar /std::stream/-based manipulators. For example,
+
+ char const* hex_str = "FF"; // 255 in decimal
+ char const* double_str = "1.2345e-02";
+
+ // This call fails
+ int bad = convert<int>::from(hex_str, -1);
+ // Apply hex formatting while converting from string
+ int i = convert<int>::from(hex_str, -1) >> std::hex;
+ // Apply hex, uppercase, showbase formatting while converting to string
+ string si = convert<string>::from(i)
+ >> std::showbase >> std::uppercase >> std::hex;
+ double d = convert<double>::from(double_str)
+ >> std::setprecision(4) >> std::scientific;
+ string sd = convert<string>::from(d)
+ >> std::setprecision(4) >> std::scientific;
+
+ BOOST_ASSERT(bad == -1); // Failed decimal conversion from "FF"
+ BOOST_ASSERT(i == 255); // Successful hex conversion from "FF"
+ BOOST_ASSERT(si == "0XFF");
+ BOOST_ASSERT(sd == double_str);
+
+Here, /convert/-based formatting is no better (or worse) than the standard /std::stream/-based formatting. In fact, under the hood it /is/ /std::stream/-based. For many basic formatting tasks it is entirely sufficient and it might be adequate for some more complex formatting tasks. Hard-to-deny advantages of that formatting engine are the familiar interface and deployment (it's not called /standard/ for nothing), instant re-use of available standard manipulators (like /std::hex/, etc.), extendibility (if one is familiar writing custom manipulators (see __ref_4__)).
+
+That said, extending and customizing /std::stream/-based formatting might not be for everyone and /Boost.Convert/ should not be looked at as of any kind of a serious formatter. For serious formatting one should be looking at deploying comprehensive parsing and formatting libraries of their choice (say, /Boost.Spirit/ might be a worthy contender). Still, one does not need a big cannon for shooting ducks (not that I approve such an activity) as one does not need a comprehensive formatter when all that is needed is:
+
+ string s = convert<string>::from(i) >> std::hex;
+ double d = convert<double>::from(double_str) >> std::scientific;
+
+[endsect]

Added: sandbox/convert/libs/convert/doc/convert_getting_started.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_getting_started.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,43 @@
+[section:convert_started Getting Started]
+
+In its simplest form the conversion functionality is typically deployed as follows:
+
+ #include <boost/convert.hpp>
+
+ using boost::convert;
+
+ int i1 = convert<int>::from(str); // Throws if the conversion fails
+ int i2 = convert<int>::from(str, -1); // Returns -1 if the conversion fails
+
+For those familiar with /boost::lexical_cast/ the first deployment should look identical and as a drop-in replacement for /lexical_cast<int>(str)/. The requirements for the Target/Destination type (/int/ in the example above) and the behavior of /boost::convert/ are the same as for /boost::lexical_cast/. Namely, when the requested conversion fails, an exception is thrown as there is no other way to indicate a conversion failure.
+
+The second interface takes a default/fallback value (the second parameter). That value is returned if/when the requested conversion fails. Often the fact of returning the provided fallback value can uniquely identify conversion failure. Consequently, by default this second interface does not throw.
+
+Additionally, as an already constructed (fallback) object is provided explicitly, the latter interface does not impose the /DefaultConstructibility/ requirement on to the Target type. That might be quite a deal-breaker for user-defined types that do not have default constructors (see the /direction/ example further).
+
+The described interface is sufficient and well-suited for a wide variety of conversion deployments. For example, an application is expected to read external configuration files, to convert and to incorporate those configuration settings. The application needs to stay operational and to maintain its internal integrity despite the not-too-remote possibility of reading invalid configuration settings. A typical processing flow might be to read a new configuration parameter and try converting it. If the conversion fails, then use some fallback value instead, log an error message and move on. Like the following
+
+ type1 p1 = convert<type1>::from(string_value_1, fallback_1);
+ type2 p2 = convert<type2>::from(string_value_2, fallback_2);
+
+ if (p1 == fallback_1) message("bad string_value_1");
+ if (p2 == fallback_2) message("bad string_value_2");
+
+ ... proceed with whatever parameters we've got.
+
+In these circumstances the deployment of /boost::convert/ looks considerably more natural compared to /boost::lexical_cast/ deployment which achieves that same result with
+
+ type p1 = fallback_1;
+
+ try
+ {
+ p1 = lexical_cast<type1>(string_value_1);
+ }
+ catch ...
+ {
+ message("bad string_value_1");
+ }
+
+In these circumstances (and quite often in general) a conversion failure is not /exceptional/ enough to justify throwing an exception. However, the constraints of the /boost::lexical_cast/ interface seem to define the behavior (rather than the other way around) as the throw-on-failure seems the only available choice to indicate conversion failure.
+
+[endsect]

Added: sandbox/convert/libs/convert/doc/convert_index.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_index.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1 @@
+'''<index/>'''

Added: sandbox/convert/libs/convert/doc/convert_integration.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_integration.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,45 @@
+[section:convert_integration Integration of User-Defined Types]
+
+The mechanism for integrating a user-defined type into the /Boost.Convert/ framework is the same as for /boost::lexical_cast/. That is, the class needs to be /InputStreamable/ and /OutputStreamable/ with the following operators defined (see the /lexical_cast/ documentation for more information):
+
+ std::istream& operator>>(std::istream& stream, Type&);
+ std::ostream& operator<<(std::ostream& stream, Type const&);
+
+For example,
+
+ struct direction
+ {
+ enum value_type { up, dn };
+
+ direction(value_type value) : value_(value) {}
+ bool operator==(direction const& that) cont
+ { return value_ == that.value_; }
+
+ friend std::istream& operator>>(std::istream&, direction&)
+ friend std::ostream& operator<<(std::ostream&, direction const&);
+
+ private: value_type value_;
+ };
+
+
+ std::istream& operator>>(std::istream& stream, direction& dir)
+ {
+ string str;
+ stream >> str;
+ /**/ if (str == "up") dir.value_ = up;
+ else if (str == "dn") dir.value_ = dn;
+ else stream.setstate(std::ios_base::failbit);
+
+ return stream;
+ }
+ std::ostream& operator<<(std::ostream& stream, direction const& dir)
+ {
+ return stream << (dir.value_ == up ? "up" : "dn");
+ }
+
+That allows handling conversions of user-defined types uniformly via /boost::convert/ interface:
+
+ int i = convert<int>::from(str, -1);
+ direction d = convert<direction>::from(str, direction::up);
+
+[endsect]

Added: sandbox/convert/libs/convert/doc/convert_intro.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_intro.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,16 @@
+[section:convert_intro Introduction]
+
+/Boost.Convert/ builds on the /boost::lexical_cast/ (see __ref_1__) experience and still offers simple, minimal interface, familiar conversion behavior and more:
+
+* throwing and non-throwing behavior when conversion fails;
+* support for the default\/fallback value to be returned when conversion fails;
+* two types of the conversion-failure check - basic\/simple and better\/safe;
+* formatting support based on the standard /std::streams/ and /std::stream/-based manipulators (like /std::hex/, /std::scientific/, etc.);
+* support for different locales;
+* support for /boost::range/-compliant char and /wchar_t/-based string containers (std::string, std::wstring, char const\*, wchar_t const\*, char array[], etc.);
+* no DefaultConstructibility requirement for the Target/Destination type;
+* extendibility and additional room to grow.
+
+It needs to be mentioned though that /Boost.Convert/ is not an attempt to provide a full-blown parser/generator. For serious parsing tasks one might like to consider /Boost.Spirit/.
+
+[endsect]

Added: sandbox/convert/libs/convert/doc/convert_locale.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_locale.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,32 @@
+[section:convert_locale Locale-Based Conversions]
+
+Locales are deployed in a similar fashion:
+
+ using namespace boost::conversion::parameter;
+
+ char const* double_str = "1.2345e-02";
+ double d = convert<double>::from(double_str)
+ >> std::setprecision(4)
+ >> std::scientific);
+ std::locale eng_locale ("");
+ std::locale rus_locale ("ru_RU.UTF-8"); // Linux-style locale
+ std::locale rus_locale ("Russian_Russia.1251"); // Windows-style locale
+
+ // Convert double to a string using Russian locale.
+ string d1 = convert<string>::from(d)(locale_ = rus_locale)
+ >> std::setprecision(4)
+ >> std::scientific;
+ // Convert double to a string using English locale.
+ string d2 = convert<string>::from(d)(locale_ = eng_locale)
+ >> std::setprecision(4)
+ >> std::scientific;
+
+ printf("rus locale: %s. %s.\n", rus_locale.name().c_str(), d1.c_str());
+ printf("eng locale: %s. %s.\n", eng_locale.name().c_str(), d2.c_str());
+
+For the current locale being "en_AU" the code above will produce the following output (the difference is the comma or the dot between '1' and '2'):
+
+ rus locale: ru_RU.UTF-8. 1,2345e-02.
+ eng locale: en_AU.UTF-8. 1.2345e-02.
+
+[endsect]

Added: sandbox/convert/libs/convert/doc/convert_modified.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_modified.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,33 @@
+[section:convert_modified Modifying Throwing Behavior]
+
+In the previous /direction/-related examples the non-throwing (by default) interface might have been used out of necessity as the throw-on-failure interface could not be deployed due to lack of the default constructor. Still, the throw-on-failure behavior might be the preferred choice. There are two ways to achieve that:
+
+ try
+ {
+ convert<direction>::result res = convert<direction>::from(str, direction::up);
+ if (!res) throw an exception of your choice
+ ...
+ }
+ catch (exception-of-your-choice const& ex)
+ {
+ ... // Process conversion failure
+ }
+
+or alternatively
+
+ using boost::convert;
+ using namespace boost::conversion::parameter;
+
+ try
+ {
+ direction dir = convert<direction>::from(str, up_dir)(throw_ = true);
+ ...
+ }
+ catch (std::invalid_argument const& ex)
+ {
+ ... // Process conversion failure
+ }
+
+The additional /(throw_ = true)/ directive changes the default behavior and forces to throw a /std::invalid_argument/ if the conversion fails.
+
+[endsect]

Added: sandbox/convert/libs/convert/doc/convert_more_converters.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_more_converters.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,20 @@
+[section:convert_more_converters More About Converters, Customization, Optimization and Performance]
+
+As have already been mentioned /convert::from()/ returns a configured implementation-defined converter for the specified /TypeIn-TypeOut/ conversion pair. Those type converters are the underlying engine of the /Boost.Convert/ framework and are largely remain hidden behind the /convert::from()/ on one end and the /convert::result/ on the other end (unless one decides to manipulate those converters directly as discussed in the previous section).
+
+That said, those converters do advertise themselves by providing the bulk of the conversion and behavior configuration interface that is applicable for the respective /TypeIn-TypeOut/ conversion pair. Like
+
+ converter& operator()(throw_),
+ converter& operator()(locale_),
+ converter& operator()(fallback_)
+ converter& operator>>(Manipulator)
+
+interfaces discussed previously are, in fact, provided by those converters (where applicable). That is a peculiarity of the /Boost.Convert/ framework -- itself it defines very limited -- /convert::from()/ and /convert::result/ -- interface. The remaining (possibly quite extensive) interface is implementation-defined and is provided by the respective /TypeIn-TypeOut/ converters.
+
+For example, in its current implementation /Boost.Convert/ provides a generic /string-to-type/ converter and its optimized "specialization" for /string-to-bool/ conversions. Admittedly, the /string-to-bool/ converter is quite experimental (and probably insufficient). However, it does demonstrate the idea of optimization and customization.
+
+When the generic /string-to-type/ converter is /std::stream/-based (with everything else following), the /string-to-bool/ converter is lean and unsofisticated (and considerably more efficient). It does not accept any manipulators and is not even /std::stream/-based. It only accepts, "1, yes, true" or "0, no, false" as input.
+
+Consequently, new converters can be written for new and existing /TypeIn-TypeOut/ conversion pairs with functionality or performance in mind; incorporated into the Boost.Convert framework and, then, deployed uniformly via the Boost.Convert interface.
+
+[endsect]

Added: sandbox/convert/libs/convert/doc/convert_motivation.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_motivation.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,14 @@
+[section:convert_motivation Motivation]
+
+My project used textual configuration files extensively and was processing and preparing considerable amounts of data in XML for interprocess communications (tasks fairly
+common these days). Consequently, I had a need for a library that would provide unifying and extendable interface to convert various data between their 'native' (internal to an application) binary representations and external (predominantly textual, string-based) representations.
+
+The /boost::lexical_cast/ library (with its orthogonal design and extendable deployment) looked very promising and was by far the preferred candidate compared to others (such as C functions, the /std::stringstream/, etc., see __ref_2__ for the discussion of alternatives).
+
+Unfortunately, many user types\/classes did not meet /lexical_cast/ requirements; the /lexical_cast/ behavior of throwing an exception for a conversion failure was difficult to work with; additional conversion formatting and locale support were needed, etc.
+
+After discussions with Kevlin Henney (the /lexical_cast/ author) and in the Boost Developers forum it was collectively decided that the requested extensions were not compatible with the idea of what /lexical_cast/ embodied and a dedicated family of conversion functions with richer interfaces was needed. That decision resulted in the development and the subsequent submission of the /Boost.Convert/ library described in this document.
+
+/Boost.Convert/ was born out of the need for string-to-type and type-to-string conversions and due to limitations of /boost::lexical_cast/. However, /Boost.Convert/ interface is intentionally generic to accommodate any type-to-type conversions if needed. Judging from __ref_3__ such a need might indeed exist. If so, such functionality can be implemented within the /Boost.Convert/ framework and accessed uniformly via /Boost.Convert/ interface.
+
+[endsect]

Added: sandbox/convert/libs/convert/doc/convert_ref.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_ref.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1 @@
+[xinclude convert_ref.xml]

Added: sandbox/convert/libs/convert/doc/convert_ref.xml
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_ref.xml 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,80 @@
+<?xml version="1.0" standalone="yes"?>
+<library-reference id="convert_reference"><title>Convert Reference</title><header name="boost/convert.hpp"><para>Public interface to the Boost.Convert framework. Includes all of the supporting headers. </para></header><header name="boost/convert/api.hpp"><para>Defines the Boost.Convert interface </para><namespace name="boost"><struct name="convert"><template>
+ <template-type-parameter name="TypeOut"/>
+ <template-type-parameter name="EnableOut"/>
+ </template><purpose>Boost.Convert framework public interface. </purpose><struct name="format"><purpose>Work in progress. </purpose></struct><typedef name="result"><type><classname>conversion::result</classname>&lt; TypeOut &gt;</type></typedef><method-group name="public static functions"><method name="from" cv=""><type>static converter&lt; TypeIn &gt;</type><template>
+ <template-type-parameter name="TypeIn"/>
+ </template><parameter name="value_in"><paramtype>TypeIn const &amp;</paramtype></parameter><description><para>Conversion API with syntax and behavior similar to boost::lexical_cast, i.e. it throws (std::invalid_argument) if conversion fails. TODO. Need to pass boost::optional&lt;TypeOut&gt; instead of constructing with the default constructors. </para></description></method><method name="from" cv=""><type>static converter&lt; TypeIn &gt;</type><template>
+ <template-type-parameter name="TypeIn"/>
+ <template-type-parameter name="FallbackType"/>
+ </template><parameter name="value_in"><paramtype>TypeIn const &amp;</paramtype></parameter><parameter name="fallback_value"><paramtype>FallbackType const &amp;</paramtype></parameter><description><para>Returns the 'fallback_value' if conversion fails. Throws nothing by itself. </para></description></method><method name="from" cv=""><type>static converter&lt; TypeIn &gt;</type><template>
+ <template-type-parameter name="TypeIn"/>
+ </template><description><para>Create an empty converter. To be used with algorithms or directly. TODO. Need to pass boost::optional&lt;TypeIn&gt; and boost::optional&lt;TypeOut&gt; instead of constructing with the default constructors. </para></description></method></method-group></struct><namespace name="conversion"><struct name="result"><template>
+ <template-type-parameter name="TypeOut"/>
+ </template><purpose>Encapsulation of the conversion result. </purpose><enum name="status"><enumvalue name="good"/><enumvalue name="bad"/><enumvalue name="throw_bad"/></enum><typedef name="safebool"><type><classname>boost::safebool</classname>&lt; <classname>result</classname> &gt;</type></typedef><typedef name="out_type"><type>TypeOut</type></typedef><typedef name="optional_out_type"><type>boost::optional&lt; out_type &gt;</type></typedef><method-group name="public member functions"><method name="conversion-operator" cv="const"><type>typename safebool::type</type><description><para>Implicit conversion to safe-bool to allow checking the success of the conversion. For example, <programlisting> convert&lt;foo&gt;::result result = convert&lt;foo&gt;::from(str, fallback_value);
+ if ( result) conversion succeeded
+ if (!result) conversion failed
+</programlisting> </para></description></method><method name="value" cv="const"><type>out_type const &amp;</type><description><para>Retrieve the actual result (value) of the conversion. For example, <programlisting> convert&lt;foo_type&gt;::result result = convert&lt;foo_type&gt;::from(str, foo_value);
+ if (result)
+ {
+ foo_type value = result.value(); // Safe to retrieve the result
+ }
+</programlisting> </para></description></method></method-group><constructor><parameter name="v"><paramtype>out_type const &amp;</paramtype></parameter><parameter name="s"><paramtype>status</paramtype></parameter></constructor><constructor><parameter name="v"><paramtype>optional_out_type const &amp;</paramtype></parameter><parameter name="s"><paramtype>status</paramtype></parameter></constructor></struct><namespace name="parameter"><function name="BOOST_PARAMETER_KEYWORD"><type/><parameter name=""><paramtype>type</paramtype></parameter><parameter name=""><paramtype>throw_</paramtype></parameter><purpose>Specify throw-on-failure behavior explicitly. </purpose></function><function name="BOOST_PARAMETER_KEYWORD"><type/><parameter name=""><paramtype>type</paramtype></parameter><parameter name=""><paramtype>locale_</paramtype></parameter><purpose>Specify locale. </purpose></function><function name="BOOST_PARAMETER_KEYWORD"><type/><parameter name=""><paramtype>type</paramtype></parameter><parameter name=""><paramt
ype>fallback_</paramtype></parameter><purpose>Provide fallback value. </purpose></function><function name="BOOST_PARAMETER_KEYWORD"><type/><parameter name=""><paramtype>type</paramtype></parameter><parameter name=""><paramtype>format_</paramtype></parameter><purpose>Not used. Work in progress. </purpose></function></namespace></namespace></namespace></header><header name="boost/convert/boost_parameter_ext.hpp"><namespace name="boost"><namespace name="parameter"><struct name="parameter_type"><template>
+ <template-type-parameter name="ArgsT"/>
+ <template-type-parameter name="KeywordTagT"/>
+ </template><typedef name="type"><type>void</type></typedef></struct><struct-specialization name="parameter_type"><template>
+ <template-type-parameter name="ArgT"/>
+ <template-type-parameter name="KeywordTagT"/>
+ </template><specialization><template-arg>aux::tagged_argument&lt; KeywordTagT</template-arg><template-arg>ArgT &gt;</template-arg><template-arg>KeywordTagT</template-arg></specialization><typedef name="type"><type>aux::tagged_argument&lt; KeywordTagT, ArgT &gt;::value_type</type></typedef></struct-specialization><struct-specialization name="parameter_type"><template>
+ <template-type-parameter name="KeywordTagT1"/>
+ <template-type-parameter name="ArgT"/>
+ <template-type-parameter name="KeywordTagT2"/>
+ </template><specialization><template-arg>aux::tagged_argument&lt; KeywordTagT1</template-arg><template-arg>ArgT &gt;</template-arg><template-arg>KeywordTagT2</template-arg></specialization><typedef name="type"><type>void</type></typedef></struct-specialization><struct-specialization name="parameter_type"><template>
+ <template-type-parameter name="ArgT"/>
+ <template-type-parameter name="TailT"/>
+ <template-type-parameter name="KeywordTagT"/>
+ </template><specialization><template-arg>aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT</template-arg><template-arg>ArgT &gt;</template-arg><template-arg>TailT &gt;</template-arg><template-arg>KeywordTagT</template-arg></specialization><typedef name="type"><type>aux::tagged_argument&lt; KeywordTagT, ArgT &gt;::value_type</type></typedef></struct-specialization><struct-specialization name="parameter_type"><template>
+ <template-type-parameter name="KeywordTagT1"/>
+ <template-type-parameter name="ArgT"/>
+ <template-type-parameter name="TailT"/>
+ <template-type-parameter name="KeywordTagT2"/>
+ </template><specialization><template-arg>aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT1</template-arg><template-arg>ArgT &gt;</template-arg><template-arg>TailT &gt;</template-arg><template-arg>KeywordTagT2</template-arg></specialization><inherit access="public">boost::parameter::parameter_type&lt; TailT, KeywordTagT2 &gt;</inherit></struct-specialization></namespace></namespace></header><header name="boost/convert/converter_base.hpp"><namespace name="boost"/></header><header name="boost/convert/stream_based_string_convertor.hpp"><namespace name="boost"/></header><header name="boost/convert/string_sfinae.hpp"><para>Defines various string-related type checks </para><namespace name="boost"/></header><header name="boost/convert/string_to_bool.hpp"><para>Implements string-to-bool converter </para><namespace name="boost"/></header><header name="boost/convert/string_to_type.hpp"><para>Implements string-to-type converter </para><namespace name="boost"/></header><header name="boost/convert/type_to_bool.
hpp"><namespace name="boost"><struct-specialization name="convert"><template>
+ </template><specialization><template-arg>bool</template-arg></specialization><typedef name="result"><type><classname>conversion::result</classname>&lt; bool &gt;</type></typedef><method-group name="public static functions"><method name="from" cv=""><type>static converter&lt; TypeIn &gt;</type><template>
+ <template-type-parameter name="TypeIn"/>
+ </template><parameter name="value_in"><paramtype>TypeIn const &amp;</paramtype><default>TypeIn()</default></parameter></method><method name="from" cv=""><type>static converter&lt; TypeIn &gt;</type><template>
+ <template-type-parameter name="TypeIn"/>
+ </template><parameter name="value_in"><paramtype>TypeIn const &amp;</paramtype></parameter><parameter name="fallback_value"><paramtype>bool</paramtype></parameter></method></method-group></struct-specialization></namespace></header><header name="boost/convert/type_to_string.hpp"><namespace name="boost"><struct-specialization name="convert"><template>
+ <template-type-parameter name="StringOut"/>
+ </template><specialization><template-arg>StringOut</template-arg><template-arg>typename boost::enable_if&lt; convert_detail::is_std_string&lt; StringOut &gt; &gt;::type</template-arg></specialization><purpose>Partial specialization for conversions to std::string. </purpose><typedef name="result"><type><classname>conversion::result</classname>&lt; StringOut &gt;</type></typedef><method-group name="public static functions"><method name="from" cv=""><type>static <emphasis>unspecified</emphasis></type><template>
+ <template-type-parameter name="TypeIn"/>
+ </template><parameter name="value_in"><paramtype>TypeIn const &amp;</paramtype><default>TypeIn()</default></parameter></method><method name="from" cv=""><type>static <emphasis>unspecified</emphasis></type><template>
+ <template-type-parameter name="TypeIn"/>
+ <template-type-parameter name="DefaultStringOut"/>
+ </template><parameter name="value_in"><paramtype>TypeIn const &amp;</paramtype></parameter><parameter name="default_str"><paramtype>DefaultStringOut const &amp;</paramtype></parameter></method></method-group></struct-specialization></namespace></header><header name="boost/convert/workarounds.hpp"/><header name="boost/safebool.hpp"><namespace name="boost"><struct name="safebool"><template>
+ <template-type-parameter name="T"/>
+ </template><purpose>Generalization of the Safe-Bool Technique. </purpose><description><para>An implicit conversion to bool (operator bool() const) is very much idiomatic and is often deployed in constructs like "if (foo)" and "if (!foo)" (with no explicit op!() defined). However, sadly, implementing "operator bool()" is *wrong* as that conversion kicks in far too often and unexpectedly. Like in "foo == 1", "foo+1", "1+foo" or potentially during lexical_cast&lt;string&gt;(foo) (if there are no op&gt;&gt;() and op&lt;&lt;() defined). Consequently, that "implicit
+ conversion to bool" functionality has to be implemented in an indirect and somewhat awkward way via an implicit conversion to some other type. The best type for the purpose appears to be a pointer to a member function. For more see the chapter 7.7 in Alexandrescu's "Modern C++ Design" and the article at <ulink url="http://www.artima.com/cppsource/safebool.html">http://www.artima.com/cppsource/safebool.html> by Bjorn Karlsson.<sbr/>
+<sbr/>
+ Deployment: <programlisting> struct Foo
+ { ...
+ operator safebool&lt;Foo&gt;::type() const { return safebool&lt;Foo&gt;(condition); }
+ };
+ template&lt;class T&gt;
+ struct Moo // for a template class
+ { ...
+ operator typename safebool&lt;Moo&gt;::type() const { return safebool&lt;Moo&gt;(condition); }
+ };
+ template&lt;class T&gt;
+ struct Zoo // with convenience typedefs
+ { ...
+ typedef safebool&lt;Zoo&gt; safebool;
+ typedef typename safebool::type safebool_type;
+
+ operator safebool_type() const { return safebool(condition); }
+ };
+</programlisting> safebool needs to be a template to make the returned safebool&lt;Foo&gt;::type type unique. Without it different classes would return the same safebool::type type that would make possible relational operators between unrelated types. Like <programlisting> struct Foo { operator safebool::type() const { return safebool(...); }};
+ struct Moo { operator safebool::type() const { return safebool(...); }};
+ Foo foo;
+ Zoo zoo;
+ if (foo == zoo) Valid (but wrong) comparison between unrelated types.
+</programlisting> </para></description><typedef name="type"><type>void(safebool::*</type></typedef><method-group name="public member functions"><method name="conversion-operator" cv="const"><type>type</type></method></method-group><constructor><parameter name="v"><paramtype>bool</paramtype></parameter></constructor><method-group name="private member functions"><method name="true_" cv="const"><type>void</type></method></method-group></struct></namespace></header></library-reference>

Added: sandbox/convert/libs/convert/doc/convert_ref.xml.saved
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_ref.xml.saved 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,18 @@
+<?xml version="1.0" standalone="yes"?>
+<library-reference id="convert_reference">
+ <title>Convert Reference</title>
+ <header name="boost/convert/string_to_bool.hpp">
+ <namespace name="boost"/>
+ </header>
+ <header name="boost/convert/string_to_type.hpp"><namespace name="boost"/>
+ </header>
+ <header name="boost/convert/type_to_string.hpp"><namespace name="boost"><struct-specialization name="convert"><template>
+ <template-type-parameter name="StringOut"/>
+ </template><specialization><template-arg>StringOut</template-arg><template-arg>typename boost::enable_if&lt; convert_detail::is_std_string&lt; StringOut &gt; &gt;::type</template-arg></specialization><typedef name="result"><type><emphasis>unspecified</emphasis></type></typedef><method-group name="public static functions"><method name="from" cv=""><type>static <emphasis>unspecified</emphasis></type><template>
+ <template-type-parameter name="TypeIn"/>
+ </template><parameter name="value_in"><paramtype>TypeIn const &amp;</paramtype><default>TypeIn()</default></parameter></method><method name="from" cv=""><type>static <emphasis>unspecified</emphasis></type><template>
+ <template-type-parameter name="TypeIn"/>
+ <template-type-parameter name="DefaultStringOut"/>
+ </template><parameter name="value_in"><paramtype>TypeIn const &amp;</paramtype></parameter><parameter name="default_str"><paramtype>DefaultStringOut const &amp;</paramtype></parameter></method></method-group></struct-specialization></namespace>
+ </header>
+</library-reference>

Added: sandbox/convert/libs/convert/doc/convert_requirements.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_requirements.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,10 @@
+[section:convert_requirements Requirements on the Argument and Result Types]
+
+At present string-to-type and type-to-string conversions are /std::stream/-based (as /boost::lexical_cast/ is) and, therefore, for those conversions the requirements on the argument and result types are as follows:
+
+* TypeIn is OutputStreamable of a string-related type - a char or wchar_t-based container compatible with the /boost::range/ concept;
+* TypeOut is InputStreamable with a std::istream& operator>>(std::istream&, TypeOut&) defined;
+* TypeOut is CopyConstructible.
+* TypeOut is DefaultConstructible when the fallback return value is not provided explicitly.
+
+[endsect]

Added: sandbox/convert/libs/convert/doc/convert_string.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_string.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,19 @@
+[section:convert_string String-To-String Conversions]
+
+The string-to-string conversion is currently provided in a somewhat experimental form as it is yet to be seen if such functionality is indeed generates much interest. Still, I do not see the /Boost.Convert/ interface unsuitable for conversions like
+
+ std::u8string utf8 = convert<std::u8string>::from(utf32_str);
+ std::u8string utf8 = convert<std::u8string>::from(mbcs_str);
+
+More so, a more practical (and not as remote) deployment of the string-to-string conversion might be demonstrated by the following snippet (taken from the library unit test):
+
+ string encrypted = convert<string>::from(naked_str) >> my_cypher;
+ string decrypted = convert<string>::from(encrypted_str) >> my_cypher;
+
+Where /my_cypher/ is a custom manipulator with the following signature
+
+ std::basic_ios<char>& my_cypher(std::basic_ios<char>& stream)
+
+With the above-mentioned manipulator applied /boost::convert/ keeps the type (/std::string/) of the source but changes (encrypts or decrypts) its representation. See ['libs/convert/test/test_convert.cpp] for the implementation of that manipulator.
+
+[endsect]

Added: sandbox/convert/libs/convert/doc/convert_two_behavioral.qbk
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/convert_two_behavioral.qbk 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,10 @@
+[section:convert_two_behavioral Two Behavioral Policies]
+
+The examples above demonstrate two interfaces behave differently with regard to handling conversion failures. These two behavioral policies can be summarized as follows:
+
+# when the fallback value is provided, return the conversion result if successful, otherwise return the provided fallback value;
+# when no fallback value provided, return the conversion result if successful, otherwise throw (as there is nothing to return).
+
+Returning /convert::result/ does not change these behavior but only /delay/ their application or execution. Namely, an attempt to retrieve a value from a failed-to-convert /convert::result/ will throw or return the provided fallback value depending on the form of the conversion request used.
+
+[endsect]

Added: sandbox/convert/libs/convert/doc/generate-html.sh
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/generate-html.sh 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,3 @@
+bjam --toolset=gcc --enable-index
+bjam --toolset=gcc --enable-index pdf
+

Added: sandbox/convert/libs/convert/doc/html/boost/conversion/result.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/boost/conversion/result.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,97 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template result</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../header/boost/convert/api_hpp.html" title="Header &lt;boost/convert/api.hpp&gt;">
+<link rel="prev" href="../../header/boost/convert/api_hpp.html" title="Header &lt;boost/convert/api.hpp&gt;">
+<link rel="next" href="../convert.html" title="Struct template convert">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../header/boost/convert/api_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/convert/api_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../convert.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.conversion.result"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template result</span></h2>
+<p>boost::conversion::result &#8212; Encapsulation of the conversion result. </p>
+</div>
+<h2 xmlns:rev="
http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/convert/api_hpp.html" title="Header &lt;boost/convert/api.hpp&gt;">boost/convert/api.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeOut<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="result.html" title="Struct template result">result</a> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <a class="link" href="../safebool.html" title="Struct template safebool">boost::safebool</a><span class="special">&lt;</span> <a class="link" href="result.html" title="Struct template result">result</a> <span class="special">&gt;</span> <a name="boost.conversion.result.safebool"></a><span class="identifier">safebool</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">TypeOut</span> <a name="boost.conversion.result.out_type"></a><span class="identifier">out_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special">&lt;</span> <span class="identifier">out_type</span> <span class="special">&gt;</span> <a name="boost.conversion.result.optional_out_type"></a><span class="identifier">optional_out_type</span><span class="special">;</span>
+
+ <span class="keyword">enum</span> <a name="boost.conversion.result.status"></a>status <span class="special">{</span> good, bad, throw_bad <span class="special">}</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="result.html#boost.conversion.resultconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <a class="link" href="result.html#id215399-bb"><span class="identifier">result</span></a><span class="special">(</span><span class="identifier">out_type</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="special">,</span> <span class="identifier">status</span><span class="special">)</span><span class="special">;</span>
+ <a class="link" href="result.html#id215411-bb"><span class="identifier">result</span></a><span class="special">(</span><span class="identifier">optional_out_type</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="special">,</span> <span class="identifier">status</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="result.html#id215362-bb">public member functions</a></span>
+ <a class="link" href="result.html#id215365-bb"><span class="keyword">operator</span> <span class="keyword">typename</span> <span class="identifier">safebool</span><span class="special">::</span><span class="identifier">type</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">out_type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <a class="link" href="result.html#id215382-bb"><span class="identifier">value</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id841265"></a><h2>Description</h2>
+<div class="refsect2">
+<a name="id841268"></a><h3>
+<a name="boost.conversion.resultconstruct-copy-destruct"></a><code class="computeroutput">result</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem"><pre class="literallayout"><a name="id215399-bb"></a><span class="identifier">result</span><span class="special">(</span><span class="identifier">out_type</span> <span class="keyword">const</span> <span class="special">&amp;</span> v<span class="special">,</span> <span class="identifier">status</span> s<span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem"><pre class="literallayout"><a name="id215411-bb"></a><span class="identifier">result</span><span class="special">(</span><span class="identifier">optional_out_type</span> <span class="keyword">const</span> <span class="special">&amp;</span> v<span class="special">,</span> <span class="identifier">status</span> s<span class="special">)</span><span class="special">;</span></pre></li>
+</ol></div>
+</div>
+<div class="refsect2">
+<a name="id841392"></a><h3>
+<a name="id215362-bb"></a><code class="computeroutput">result</code> public member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><a name="id215365-bb"></a><span class="keyword">operator</span> <span class="keyword">typename</span> <span class="identifier">safebool</span><span class="special">::</span><span class="identifier">type</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>Implicit conversion to safe-bool to allow checking the success of the conversion. For example, </p>
+<pre class="programlisting"> convert&lt;foo&gt;::result result = convert&lt;foo&gt;::from(str, fallback_value);
+ if ( result) conversion succeeded
+ if (!result) conversion failed
+</pre>
+<p> </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="identifier">out_type</span> <span class="keyword">const</span> <span class="special">&amp;</span> <a name="id215382-bb"></a><span class="identifier">value</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
+<p>Retrieve the actual result (value) of the conversion. For example, </p>
+<pre class="programlisting"> convert&lt;foo_type&gt;::result result = convert&lt;foo_type&gt;::from(str, foo_value);
+ if (result)
+ {
+ foo_type value = result.value(); // Safe to retrieve the result
+ }
+</pre>
+<p> </p>
+</li>
+</ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../header/boost/convert/api_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/convert/api_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../convert.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/boost/convert.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/boost/convert.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,83 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template convert</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../header/boost/convert/api_hpp.html" title="Header &lt;boost/convert/api.hpp&gt;">
+<link rel="prev" href="conversion/result.html" title="Struct template result">
+<link rel="next" href="convert/format.html" title="Struct format">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="conversion/result.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/convert/api_hpp.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert/format.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.convert"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template convert</span></h2>
+<p>boost::convert &#8212; Boost.Convert framework public interface. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/convert/api_hpp.html" title="Header &lt;boost/convert/api.hpp&gt;">boost/convert/api.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeOut<span class="special">,</span> <span class="keyword">typename</span> EnableOut<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="convert.html" title="Struct template convert">convert</a> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <a class="link" href="conversion/result.html" title="Struct template result">conversion::result</a><span class="special">&lt;</span> <span class="identifier">TypeOut</span> <span class="special">&gt;</span> <a name="boost.convert.result"></a><span class="identifier">result</span><span class="special">;</span>
+
+ <span class="comment">// member classes/structs/unions</span>
+
+ <span class="comment">// Work in progress.</span>
+
+ <span class="keyword">struct</span> <a class="link" href="convert/format.html" title="Struct format">format</a> <span class="special">{</span>
+ <span class="special">}</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="convert.html#id215227-bb">public static functions</a></span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeIn<span class="special">&gt;</span> <span class="keyword">static</span> <span class="identifier">converter</span><span class="special">&lt;</span> <span class="identifier">TypeIn</span> <span class="special">&gt;</span> <a class="link" href="convert.html#id215230-bb"><span class="identifier">from</span></a><span class="special">(</span><span class="identifier">TypeIn</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeIn<span class="special">,</span> <span class="keyword">typename</span> FallbackType<span class="special">&gt;</span>
+ <span class="keyword">static</span> <span class="identifier">converter</span><span class="special">&lt;</span> <span class="identifier">TypeIn</span> <span class="special">&gt;</span> <a class="link" href="convert.html#id215256-bb"><span class="identifier">from</span></a><span class="special">(</span><span class="identifier">TypeIn</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="special">,</span> <span class="identifier">FallbackType</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeIn<span class="special">&gt;</span> <span class="keyword">static</span> <span class="identifier">converter</span><span class="special">&lt;</span> <span class="identifier">TypeIn</span> <span class="special">&gt;</span> <a class="link" href="convert.html#id215290-bb"><span class="identifier">from</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id841948"></a><h2>Description</h2>
+<div class="refsect2">
+<a name="id841951"></a><h3>
+<a name="id215227-bb"></a><code class="computeroutput">convert</code> public static functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeIn<span class="special">&gt;</span>
+ <span class="keyword">static</span> <span class="identifier">converter</span><span class="special">&lt;</span> <span class="identifier">TypeIn</span> <span class="special">&gt;</span> <a name="id215230-bb"></a><span class="identifier">from</span><span class="special">(</span><span class="identifier">TypeIn</span> <span class="keyword">const</span> <span class="special">&amp;</span> value_in<span class="special">)</span><span class="special">;</span></pre>
+<p>Conversion API with syntax and behavior similar to boost::lexical_cast, i.e. it throws (std::invalid_argument) if conversion fails. TODO. Need to pass boost::optional&lt;TypeOut&gt; instead of constructing with the default constructors. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeIn<span class="special">,</span> <span class="keyword">typename</span> FallbackType<span class="special">&gt;</span>
+ <span class="keyword">static</span> <span class="identifier">converter</span><span class="special">&lt;</span> <span class="identifier">TypeIn</span> <span class="special">&gt;</span>
+ <a name="id215256-bb"></a><span class="identifier">from</span><span class="special">(</span><span class="identifier">TypeIn</span> <span class="keyword">const</span> <span class="special">&amp;</span> value_in<span class="special">,</span> <span class="identifier">FallbackType</span> <span class="keyword">const</span> <span class="special">&amp;</span> fallback_value<span class="special">)</span><span class="special">;</span></pre>
+<p>Returns the 'fallback_value' if conversion fails. Throws nothing by itself. </p>
+</li>
+<li class="listitem">
+<pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeIn<span class="special">&gt;</span> <span class="keyword">static</span> <span class="identifier">converter</span><span class="special">&lt;</span> <span class="identifier">TypeIn</span> <span class="special">&gt;</span> <a name="id215290-bb"></a><span class="identifier">from</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
+<p>Create an empty converter. To be used with algorithms or directly. TODO. Need to pass boost::optional&lt;TypeIn&gt; and boost::optional&lt;TypeOut&gt; instead of constructing with the default constructors. </p>
+</li>
+</ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="conversion/result.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/convert/api_hpp.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert/format.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/boost/convert/format.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/boost/convert/format.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,47 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct format</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../convert.html#id841948" title="Description">
+<link rel="prev" href="../convert.html" title="Struct template convert">
+<link rel="next" href="../../header/boost/convert/boost_parameter_ext_hpp.html" title="Header &lt;boost/convert/boost_parameter_ext.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../convert.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../convert.html#id841948"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../header/boost/convert/boost_parameter_ext_hpp.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.convert.format"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct format</span></h2>
+<p>boost::convert::format &#8212; Work in progress. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/convert/api_hpp.html" title="Header &lt;boost/convert/api.hpp&gt;">boost/convert/api.hpp</a>&gt;
+
+</span>
+
+<span class="comment">// Work in progress.</span>
+
+<span class="keyword">struct</span> <a class="link" href="format.html" title="Struct format">format</a> <span class="special">{</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../convert.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../convert.html#id841948"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../header/boost/convert/boost_parameter_ext_hpp.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/boost/convert_StringOut__type_id266688.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/boost/convert_StringOut__type_id266688.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,65 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template convert&lt;StringOut, typename boost::enable_if&lt; convert_detail::is_std_string&lt; StringOut &gt; &gt;::type&gt;</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../header/boost/convert/type_to_string_hpp.html" title="Header &lt;boost/convert/type_to_string.hpp&gt;">
+<link rel="prev" href="../header/boost/convert/type_to_string_hpp.html" title="Header &lt;boost/convert/type_to_string.hpp&gt;">
+<link rel="next" href="../header/boost/safebool_hpp.html" title="Header &lt;boost/safebool.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/convert/type_to_string_hpp.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/convert/type_to_string_hpp.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../header/boost/safebool_hpp.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.convert_StringOut,_type_id266688"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template convert&lt;StringOut, typename boost::enable_if&lt; convert_detail::is_std_string&lt; StringOut &gt; &gt;::type&gt;</span></h2>
+<p>boost::convert&lt;StringOut, typename boost::enable_if&lt; convert_detail::is_std_string&lt; StringOut &gt; &gt;::type&gt; &#8212; Partial specialization for conversions to std::string. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/convert/type_to_string_hpp.html" title="Header &lt;boost/convert/type_to_string.hpp&gt;">boost/convert/type_to_string.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> StringOut<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="convert_StringOut__type_id266688.html" title="Struct template convert&lt;StringOut, typename boost::enable_if&lt; convert_detail::is_std_string&lt; StringOut &gt; &gt;::type&gt;">convert</a><span class="special">&lt;</span><span class="identifier">StringOut</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special">&lt;</span> <span class="identifier">convert_detail</span><span class="special">::</span><span class="identifier">is_std_string</span><span class="special">&lt;</span> <span class="identifier">StringOut</span> <span class="special">&gt;</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">type</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <a class="link" href="conversion/result.html" title="Struct template result">conversion::result</a><span class="special">&lt;</span> <span class="identifier">StringOut</span> <span class="special">&gt;</span> <a name="boost.convert_StringOut,_type_id266688.result"></a><span class="identifier">result</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="convert_StringOut__type_id266688.html#id266712-bb">public static functions</a></span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeIn<span class="special">&gt;</span> <span class="keyword">static</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="convert_StringOut__type_id266688.html#id266715-bb"><span class="identifier">from</span></a><span class="special">(</span><span class="identifier">TypeIn</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="special">=</span> <span class="identifier">TypeIn</span><span class="special">(</span><span class="special">)</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeIn<span class="special">,</span> <span class="keyword">typename</span> DefaultStringOut<span class="special">&gt;</span>
+ <span class="keyword">static</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="convert_StringOut__type_id266688.html#id266738-bb"><span class="identifier">from</span></a><span class="special">(</span><span class="identifier">TypeIn</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="special">,</span> <span class="identifier">DefaultStringOut</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id845253"></a><h2>Description</h2>
+<div class="refsect2">
+<a name="id845256"></a><h3>
+<a name="id266712-bb"></a><code class="computeroutput">convert</code> public static functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem"><pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeIn<span class="special">&gt;</span>
+ <span class="keyword">static</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a name="id266715-bb"></a><span class="identifier">from</span><span class="special">(</span><span class="identifier">TypeIn</span> <span class="keyword">const</span> <span class="special">&amp;</span> value_in <span class="special">=</span> <span class="identifier">TypeIn</span><span class="special">(</span><span class="special">)</span><span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem"><pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeIn<span class="special">,</span> <span class="keyword">typename</span> DefaultStringOut<span class="special">&gt;</span>
+ <span class="keyword">static</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span>
+ <a name="id266738-bb"></a><span class="identifier">from</span><span class="special">(</span><span class="identifier">TypeIn</span> <span class="keyword">const</span> <span class="special">&amp;</span> value_in<span class="special">,</span> <span class="identifier">DefaultStringOut</span> <span class="keyword">const</span> <span class="special">&amp;</span> default_str<span class="special">)</span><span class="special">;</span></pre></li>
+</ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/convert/type_to_string_hpp.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/convert/type_to_string_hpp.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../header/boost/safebool_hpp.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/boost/convert_bool_id266619.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/boost/convert_bool_id266619.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct convert&lt;bool&gt;</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../header/boost/convert/type_to_bool_hpp.html" title="Header &lt;boost/convert/type_to_bool.hpp&gt;">
+<link rel="prev" href="../header/boost/convert/type_to_bool_hpp.html" title="Header &lt;boost/convert/type_to_bool.hpp&gt;">
+<link rel="next" href="../header/boost/convert/type_to_string_hpp.html" title="Header &lt;boost/convert/type_to_string.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/convert/type_to_bool_hpp.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/convert/type_to_bool_hpp.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../header/boost/convert/type_to_string_hpp.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.convert_bool_id266619"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct convert&lt;bool&gt;</span></h2>
+<p>boost::convert&lt;bool&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/convert/type_to_bool_hpp.html" title="Header &lt;boost/convert/type_to_bool.hpp&gt;">boost/convert/type_to_bool.hpp</a>&gt;
+
+</span>
+<span class="keyword">struct</span> <a class="link" href="convert_bool_id266619.html" title="Struct convert&lt;bool&gt;">convert</a><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <a class="link" href="conversion/result.html" title="Struct template result">conversion::result</a><span class="special">&lt;</span> <span class="keyword">bool</span> <span class="special">&gt;</span> <a name="boost.convert_bool_id266619.result"></a><span class="identifier">result</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="convert_bool_id266619.html#id266634-bb">public static functions</a></span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeIn<span class="special">&gt;</span>
+ <span class="keyword">static</span> <span class="identifier">converter</span><span class="special">&lt;</span> <span class="identifier">TypeIn</span> <span class="special">&gt;</span> <a class="link" href="convert_bool_id266619.html#id266637-bb"><span class="identifier">from</span></a><span class="special">(</span><span class="identifier">TypeIn</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="special">=</span> <span class="identifier">TypeIn</span><span class="special">(</span><span class="special">)</span><span class="special">)</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeIn<span class="special">&gt;</span>
+ <span class="keyword">static</span> <span class="identifier">converter</span><span class="special">&lt;</span> <span class="identifier">TypeIn</span> <span class="special">&gt;</span> <a class="link" href="convert_bool_id266619.html#id266658-bb"><span class="identifier">from</span></a><span class="special">(</span><span class="identifier">TypeIn</span> <span class="keyword">const</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">bool</span><span class="special">)</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id844405"></a><h2>Description</h2>
+<div class="refsect2">
+<a name="id844409"></a><h3>
+<a name="id266634-bb"></a><code class="computeroutput">convert</code> public static functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem"><pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeIn<span class="special">&gt;</span>
+ <span class="keyword">static</span> <span class="identifier">converter</span><span class="special">&lt;</span> <span class="identifier">TypeIn</span> <span class="special">&gt;</span> <a name="id266637-bb"></a><span class="identifier">from</span><span class="special">(</span><span class="identifier">TypeIn</span> <span class="keyword">const</span> <span class="special">&amp;</span> value_in <span class="special">=</span> <span class="identifier">TypeIn</span><span class="special">(</span><span class="special">)</span><span class="special">)</span><span class="special">;</span></pre></li>
+<li class="listitem"><pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeIn<span class="special">&gt;</span>
+ <span class="keyword">static</span> <span class="identifier">converter</span><span class="special">&lt;</span> <span class="identifier">TypeIn</span> <span class="special">&gt;</span>
+ <a name="id266658-bb"></a><span class="identifier">from</span><span class="special">(</span><span class="identifier">TypeIn</span> <span class="keyword">const</span> <span class="special">&amp;</span> value_in<span class="special">,</span> <span class="keyword">bool</span> fallback_value<span class="special">)</span><span class="special">;</span></pre></li>
+</ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/convert/type_to_bool_hpp.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/convert/type_to_bool_hpp.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../header/boost/convert/type_to_string_hpp.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/boost/parameter/parameter_type.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/boost/parameter/parameter_type.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template parameter_type</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../header/boost/convert/boost_parameter_ext_hpp.html" title="Header &lt;boost/convert/boost_parameter_ext.hpp&gt;">
+<link rel="prev" href="../../header/boost/convert/boost_parameter_ext_hpp.html" title="Header &lt;boost/convert/boost_parameter_ext.hpp&gt;">
+<link rel="next" href="parameter_type_aux_tagg_id266451.html" title="Struct template parameter_type&lt;aux::tagged_argument&lt; KeywordTagT, ArgT &gt;, KeywordTagT&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../header/boost/convert/boost_parameter_ext_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/convert/boost_parameter_ext_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="parameter_type_aux_tagg_id266451.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.parameter.parameter_type"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template parameter_type</span></h2>
+<p>boost::parameter::parameter_type</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/convert/boost_parameter_ext_hpp.html" title="Header &lt;boost/convert/boost_parameter_ext.hpp&gt;">boost/convert/boost_parameter_ext.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> ArgsT<span class="special">,</span> <span class="keyword">typename</span> KeywordTagT<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="parameter_type.html" title="Struct template parameter_type">parameter_type</a> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <a name="boost.parameter.parameter_type.type"></a><span class="identifier">type</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../header/boost/convert/boost_parameter_ext_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/convert/boost_parameter_ext_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="parameter_type_aux_tagg_id266451.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/boost/parameter/parameter_type_aux_arg__id266508.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/boost/parameter/parameter_type_aux_arg__id266508.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT, ArgT &gt;, TailT &gt;, KeywordTagT&gt;</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../header/boost/convert/boost_parameter_ext_hpp.html" title="Header &lt;boost/convert/boost_parameter_ext.hpp&gt;">
+<link rel="prev" href="parameter_type_aux_tagg_id266477.html" title="Struct template parameter_type&lt;aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, KeywordTagT2&gt;">
+<link rel="next" href="parameter_type_aux_arg__id266540.html" title="Struct template parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, TailT &gt;, KeywordTagT2&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parameter_type_aux_tagg_id266477.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/convert/boost_parameter_ext_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="parameter_type_aux_arg__id266540.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.parameter.parameter_type_aux_arg__id266508"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT, ArgT &gt;, TailT &gt;, KeywordTagT&gt;</span></h2>
+<p>boost::parameter::parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT, ArgT &gt;, TailT &gt;, KeywordTagT&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/convert/boost_parameter_ext_hpp.html" title="Header &lt;boost/convert/boost_parameter_ext.hpp&gt;">boost/convert/boost_parameter_ext.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> ArgT<span class="special">,</span> <span class="keyword">typename</span> TailT<span class="special">,</span> <span class="keyword">typename</span> KeywordTagT<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="parameter_type_aux_arg__id266508.html" title="Struct template parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT, ArgT &gt;, TailT &gt;, KeywordTagT&gt;">parameter_type</a><span class="special">&lt;</span><span class="identifier">aux</span><span class="special">::</span><span class="identifier">arg_list</span><span class="special">&lt;</span> <span class="identifier">aux</span><span class="special">::</span><span class="identifier">tagged_argument</span><span class="special">&lt;</span> <span class="identifier">KeywordTagT</span><span class="special">,</span> <span class="identifier">ArgT</span> <span class="special">&gt;</span><span class="special">,</span> <span class="identifier">TailT</span> <span class="special">&gt;</span><span class="special">,</span> <span class="identifier">KeywordTagT</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <span class="identifier">aux</span><span class="special">::</span><span class="identifier">tagged_argument</span><span class="special">&lt;</span> <span class="identifier">KeywordTagT</span><span class="special">,</span> <span class="identifier">ArgT</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">value_type</span> <a name="boost.parameter.parameter_type_aux_arg__id266508.type"></a><span class="identifier">type</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parameter_type_aux_tagg_id266477.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/convert/boost_parameter_ext_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="parameter_type_aux_arg__id266540.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/boost/parameter/parameter_type_aux_arg__id266540.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/boost/parameter/parameter_type_aux_arg__id266540.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,47 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, TailT &gt;, KeywordTagT2&gt;</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../header/boost/convert/boost_parameter_ext_hpp.html" title="Header &lt;boost/convert/boost_parameter_ext.hpp&gt;">
+<link rel="prev" href="parameter_type_aux_arg__id266508.html" title="Struct template parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT, ArgT &gt;, TailT &gt;, KeywordTagT&gt;">
+<link rel="next" href="../../header/boost/convert/converter_base_hpp.html" title="Header &lt;boost/convert/converter_base.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parameter_type_aux_arg__id266508.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/convert/boost_parameter_ext_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../header/boost/convert/converter_base_hpp.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.parameter.parameter_type_aux_arg__id266540"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, TailT &gt;, KeywordTagT2&gt;</span></h2>
+<p>boost::parameter::parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, TailT &gt;, KeywordTagT2&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/convert/boost_parameter_ext_hpp.html" title="Header &lt;boost/convert/boost_parameter_ext.hpp&gt;">boost/convert/boost_parameter_ext.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> KeywordTagT1<span class="special">,</span> <span class="keyword">typename</span> ArgT<span class="special">,</span> <span class="keyword">typename</span> TailT<span class="special">,</span>
+ <span class="keyword">typename</span> KeywordTagT2<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="parameter_type_aux_arg__id266540.html" title="Struct template parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, TailT &gt;, KeywordTagT2&gt;">parameter_type</a><span class="special">&lt;</span><span class="identifier">aux</span><span class="special">::</span><span class="identifier">arg_list</span><span class="special">&lt;</span> <span class="identifier">aux</span><span class="special">::</span><span class="identifier">tagged_argument</span><span class="special">&lt;</span> <span class="identifier">KeywordTagT1</span><span class="special">,</span> <span class="identifier">ArgT</span> <span class="special">&gt;</span><span class="special">,</span> <span class="identifier">TailT</span> <span class="special">&gt;</span><span class="special">,</span> <span class="identifier">KeywordTagT2</span><span class="special">&gt;</span> <span class="special">:</span>
+ <span class="keyword">public</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">parameter</span><span class="special">::</span><span class="identifier">parameter_type</span><span class="special">&lt;</span> <span class="identifier">TailT</span><span class="special">,</span> <span class="identifier">KeywordTagT2</span> <span class="special">&gt;</span>
+<span class="special">{</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parameter_type_aux_arg__id266508.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/convert/boost_parameter_ext_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../header/boost/convert/converter_base_hpp.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/boost/parameter/parameter_type_aux_tagg_id266451.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/boost/parameter/parameter_type_aux_tagg_id266451.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template parameter_type&lt;aux::tagged_argument&lt; KeywordTagT, ArgT &gt;, KeywordTagT&gt;</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../header/boost/convert/boost_parameter_ext_hpp.html" title="Header &lt;boost/convert/boost_parameter_ext.hpp&gt;">
+<link rel="prev" href="parameter_type.html" title="Struct template parameter_type">
+<link rel="next" href="parameter_type_aux_tagg_id266477.html" title="Struct template parameter_type&lt;aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, KeywordTagT2&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parameter_type.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/convert/boost_parameter_ext_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="parameter_type_aux_tagg_id266477.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.parameter.parameter_type_aux_tagg_id266451"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template parameter_type&lt;aux::tagged_argument&lt; KeywordTagT, ArgT &gt;, KeywordTagT&gt;</span></h2>
+<p>boost::parameter::parameter_type&lt;aux::tagged_argument&lt; KeywordTagT, ArgT &gt;, KeywordTagT&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/convert/boost_parameter_ext_hpp.html" title="Header &lt;boost/convert/boost_parameter_ext.hpp&gt;">boost/convert/boost_parameter_ext.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> ArgT<span class="special">,</span> <span class="keyword">typename</span> KeywordTagT<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="parameter_type_aux_tagg_id266451.html" title="Struct template parameter_type&lt;aux::tagged_argument&lt; KeywordTagT, ArgT &gt;, KeywordTagT&gt;">parameter_type</a><span class="special">&lt;</span><span class="identifier">aux</span><span class="special">::</span><span class="identifier">tagged_argument</span><span class="special">&lt;</span> <span class="identifier">KeywordTagT</span><span class="special">,</span> <span class="identifier">ArgT</span> <span class="special">&gt;</span><span class="special">,</span> <span class="identifier">KeywordTagT</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <span class="identifier">aux</span><span class="special">::</span><span class="identifier">tagged_argument</span><span class="special">&lt;</span> <span class="identifier">KeywordTagT</span><span class="special">,</span> <span class="identifier">ArgT</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">value_type</span> <a name="boost.parameter.parameter_type_aux_tagg_id266451.type"></a><span class="identifier">type</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parameter_type.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/convert/boost_parameter_ext_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="parameter_type_aux_tagg_id266477.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/boost/parameter/parameter_type_aux_tagg_id266477.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/boost/parameter/parameter_type_aux_tagg_id266477.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template parameter_type&lt;aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, KeywordTagT2&gt;</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../header/boost/convert/boost_parameter_ext_hpp.html" title="Header &lt;boost/convert/boost_parameter_ext.hpp&gt;">
+<link rel="prev" href="parameter_type_aux_tagg_id266451.html" title="Struct template parameter_type&lt;aux::tagged_argument&lt; KeywordTagT, ArgT &gt;, KeywordTagT&gt;">
+<link rel="next" href="parameter_type_aux_arg__id266508.html" title="Struct template parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT, ArgT &gt;, TailT &gt;, KeywordTagT&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parameter_type_aux_tagg_id266451.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/convert/boost_parameter_ext_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="parameter_type_aux_arg__id266508.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.parameter.parameter_type_aux_tagg_id266477"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template parameter_type&lt;aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, KeywordTagT2&gt;</span></h2>
+<p>boost::parameter::parameter_type&lt;aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, KeywordTagT2&gt;</p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/convert/boost_parameter_ext_hpp.html" title="Header &lt;boost/convert/boost_parameter_ext.hpp&gt;">boost/convert/boost_parameter_ext.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> KeywordTagT1<span class="special">,</span> <span class="keyword">typename</span> ArgT<span class="special">,</span> <span class="keyword">typename</span> KeywordTagT2<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="parameter_type_aux_tagg_id266477.html" title="Struct template parameter_type&lt;aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, KeywordTagT2&gt;">parameter_type</a><span class="special">&lt;</span><span class="identifier">aux</span><span class="special">::</span><span class="identifier">tagged_argument</span><span class="special">&lt;</span> <span class="identifier">KeywordTagT1</span><span class="special">,</span> <span class="identifier">ArgT</span> <span class="special">&gt;</span><span class="special">,</span> <span class="identifier">KeywordTagT2</span><span class="special">&gt;</span> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span> <a name="boost.parameter.parameter_type_aux_tagg_id266477.type"></a><span class="identifier">type</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parameter_type_aux_tagg_id266451.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/convert/boost_parameter_ext_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="parameter_type_aux_arg__id266508.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/boost/safebool.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/boost/safebool.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,105 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Struct template safebool</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../header/boost/safebool_hpp.html" title="Header &lt;boost/safebool.hpp&gt;">
+<link rel="prev" href="../header/boost/safebool_hpp.html" title="Header &lt;boost/safebool.hpp&gt;">
+<link rel="next" href="../the_convert_library/convert_acknowledgements.html" title="Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/safebool_hpp.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/safebool_hpp.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../the_convert_library/convert_acknowledgements.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="refentry">
+<a name="boost.safebool"></a><div class="titlepage"></div>
+<div class="refnamediv">
+<h2><span class="refentrytitle">Struct template safebool</span></h2>
+<p>boost::safebool &#8212; Generalization of the Safe-Bool Technique. </p>
+</div>
+<h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../header/boost/safebool_hpp.html" title="Header &lt;boost/safebool.hpp&gt;">boost/safebool.hpp</a>&gt;
+
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span>
+<span class="keyword">struct</span> <a class="link" href="safebool.html" title="Struct template safebool">safebool</a> <span class="special">{</span>
+ <span class="comment">// types</span>
+ <span class="keyword">typedef</span> <span class="keyword">void</span><span class="special">(</span><span class="identifier">safebool</span><span class="special">::</span><span class="special">*</span> <a name="boost.safebool.type"></a><span class="identifier">type</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="safebool.html#boost.safeboolconstruct-copy-destruct">construct/copy/destruct</a></span>
+ <a class="link" href="safebool.html#id266839-bb"><span class="identifier">safebool</span></a><span class="special">(</span><span class="keyword">bool</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="safebool.html#id266828-bb">public member functions</a></span>
+ <a class="link" href="safebool.html#id266832-bb"><span class="keyword">operator</span> <span class="identifier">type</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="comment">// <a class="link" href="safebool.html#id266845-bb">private member functions</a></span>
+ <span class="keyword">void</span> <a class="link" href="safebool.html#id266848-bb"><span class="identifier">true_</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">}</span><span class="special">;</span></pre></div>
+<div class="refsect1">
+<a name="id845834"></a><h2>Description</h2>
+<p>An implicit conversion to bool (operator bool() const) is very much idiomatic and is often deployed in constructs like "if (foo)" and "if (!foo)" (with no explicit op!() defined). However, sadly, implementing "operator bool()" is *wrong* as that conversion kicks in far too often and unexpectedly. Like in "foo == 1", "foo+1", "1+foo" or potentially during lexical_cast&lt;string&gt;(foo) (if there are no op&gt;&gt;() and op&lt;&lt;() defined). Consequently, that "implicit
+ conversion to bool" functionality has to be implemented in an indirect and somewhat awkward way via an implicit conversion to some other type. The best type for the purpose appears to be a pointer to a member function. For more see the chapter 7.7 in Alexandrescu's "Modern C++ Design" and the article at http://www.artima.com/cppsource/safebool.html by Bjorn Karlsson.<br>
+<br>
+ Deployment: </p>
+<pre class="programlisting"> <span class="keyword">struct</span> <span class="identifier">Foo</span>
+ <span class="special">{</span> <span class="special">...</span>
+ <span class="keyword">operator</span> <span class="identifier">safebool</span><span class="special">&lt;</span><span class="identifier">Foo</span><span class="special">&gt;</span><span class="special">::</span><span class="identifier">type</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">safebool</span><span class="special">&lt;</span><span class="identifier">Foo</span><span class="special">&gt;</span><span class="special">(</span><span class="identifier">condition</span><span class="special">)</span><span class="special">;</span> <span class="special">}</span>
+ <span class="special">}</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">Moo</span> <span class="comment">// for a template class</span>
+ <span class="special">{</span> <span class="special">...</span>
+ <span class="keyword">operator</span> <span class="keyword">typename</span> <span class="identifier">safebool</span><span class="special">&lt;</span><span class="identifier">Moo</span><span class="special">&gt;</span><span class="special">::</span><span class="identifier">type</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">safebool</span><span class="special">&lt;</span><span class="identifier">Moo</span><span class="special">&gt;</span><span class="special">(</span><span class="identifier">condition</span><span class="special">)</span><span class="special">;</span> <span class="special">}</span>
+ <span class="special">}</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">Zoo</span> <span class="comment">// with convenience typedefs</span>
+ <span class="special">{</span> <span class="special">...</span>
+ <span class="keyword">typedef</span> <span class="identifier">safebool</span><span class="special">&lt;</span><span class="identifier">Zoo</span><span class="special">&gt;</span> <span class="identifier">safebool</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">safebool</span><span class="special">::</span><span class="identifier">type</span> <span class="identifier">safebool_type</span><span class="special">;</span>
+
+ <span class="keyword">operator</span> <span class="identifier">safebool_type</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">safebool</span><span class="special">(</span><span class="identifier">condition</span><span class="special">)</span><span class="special">;</span> <span class="special">}</span>
+ <span class="special">}</span><span class="special">;</span>
+</pre>
+<p> safebool needs to be a template to make the returned safebool&lt;Foo&gt;::type type unique. Without it different classes would return the same safebool::type type that would make possible relational operators between unrelated types. Like </p>
+<pre class="programlisting"> <span class="keyword">struct</span> <span class="identifier">Foo</span> <span class="special">{</span> <span class="keyword">operator</span> <span class="identifier">safebool</span><span class="special">::</span><span class="identifier">type</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">safebool</span><span class="special">(</span><span class="special">...</span><span class="special">)</span><span class="special">;</span> <span class="special">}</span><span class="special">}</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">Moo</span> <span class="special">{</span> <span class="keyword">operator</span> <span class="identifier">safebool</span><span class="special">::</span><span class="identifier">type</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">safebool</span><span class="special">(</span><span class="special">...</span><span class="special">)</span><span class="special">;</span> <span class="special">}</span><span class="special">}</span><span class="special">;</span>
+ <span class="identifier">Foo</span> <span class="identifier">foo</span><span class="special">;</span>
+ <span class="identifier">Zoo</span> <span class="identifier">zoo</span><span class="special">;</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">foo</span> <span class="special">==</span> <span class="identifier">zoo</span><span class="special">)</span> <span class="identifier">Valid</span> <span class="special">(</span><span class="identifier">but</span> <span class="identifier">wrong</span><span class="special">)</span> <span class="identifier">comparison</span> <span class="identifier">between</span> <span class="identifier">unrelated</span> <span class="identifier">types</span><span class="special">.</span>
+</pre>
+<p> </p>
+<div class="refsect2">
+<a name="id846710"></a><h3>
+<a name="boost.safeboolconstruct-copy-destruct"></a><code class="computeroutput">safebool</code>
+ public
+ construct/copy/destruct</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><pre class="literallayout"><a name="id266839-bb"></a><span class="identifier">safebool</span><span class="special">(</span><span class="keyword">bool</span> v<span class="special">)</span><span class="special">;</span></pre></li></ol></div>
+</div>
+<div class="refsect2">
+<a name="id846764"></a><h3>
+<a name="id266828-bb"></a><code class="computeroutput">safebool</code> public member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><pre class="literallayout"><a name="id266832-bb"></a><span class="keyword">operator</span> <span class="identifier">type</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre></li></ol></div>
+</div>
+<div class="refsect2">
+<a name="id846823"></a><h3>
+<a name="id266845-bb"></a><code class="computeroutput">safebool</code> private member functions</h3>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><pre class="literallayout"><span class="keyword">void</span> <a name="id266848-bb"></a><span class="identifier">true_</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre></li></ol></div>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../header/boost/safebool_hpp.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../header/boost/safebool_hpp.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../the_convert_library/convert_acknowledgements.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/boostbook.css
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/boostbook.css 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,601 @@
+/*=============================================================================
+ Copyright (c) 2004 Joel de Guzman
+ http://spirit.sourceforge.net/
+
+ Distributed under the Boost Software License, Version 1.0. (See accompany-
+ ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+
+/*=============================================================================
+ Body defaults
+=============================================================================*/
+
+ body
+ {
+ margin: 1em;
+ font-family: sans-serif;
+ }
+
+/*=============================================================================
+ Paragraphs
+=============================================================================*/
+
+ p
+ {
+ text-align: left;
+ font-size: 10pt;
+ line-height: 1.15;
+ }
+
+/*=============================================================================
+ Program listings
+=============================================================================*/
+
+ /* Code on paragraphs */
+ p tt.computeroutput
+ {
+ font-size: 9pt;
+ }
+
+ pre.synopsis
+ {
+ font-size: 9pt;
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.5pc 0.5pc 0.5pc 0.5pc;
+ }
+
+ .programlisting,
+ .screen
+ {
+ font-size: 9pt;
+ display: block;
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.5pc 0.5pc 0.5pc 0.5pc;
+ }
+
+ /* Program listings in tables don't get borders */
+ td .programlisting,
+ td .screen
+ {
+ margin: 0pc 0pc 0pc 0pc;
+ padding: 0pc 0pc 0pc 0pc;
+ }
+
+/*=============================================================================
+ Headings
+=============================================================================*/
+
+ h1, h2, h3, h4, h5, h6
+ {
+ text-align: left;
+ margin: 1em 0em 0.5em 0em;
+ font-weight: bold;
+ }
+
+ h1 { font: 140% }
+ h2 { font: bold 140% }
+ h3 { font: bold 130% }
+ h4 { font: bold 120% }
+ h5 { font: italic 110% }
+ h6 { font: italic 100% }
+
+ /* Top page titles */
+ title,
+ h1.title,
+ h2.title
+ h3.title,
+ h4.title,
+ h5.title,
+ h6.title,
+ .refentrytitle
+ {
+ font-weight: bold;
+ margin-bottom: 1pc;
+ }
+
+ h1.title { font-size: 140% }
+ h2.title { font-size: 140% }
+ h3.title { font-size: 130% }
+ h4.title { font-size: 120% }
+ h5.title { font-size: 110% }
+ h6.title { font-size: 100% }
+
+ .section h1
+ {
+ margin: 0em 0em 0.5em 0em;
+ font-size: 140%;
+ }
+
+ .section h2 { font-size: 140% }
+ .section h3 { font-size: 130% }
+ .section h4 { font-size: 120% }
+ .section h5 { font-size: 110% }
+ .section h6 { font-size: 100% }
+
+ /* Code on titles */
+ h1 tt.computeroutput { font-size: 140% }
+ h2 tt.computeroutput { font-size: 140% }
+ h3 tt.computeroutput { font-size: 130% }
+ h4 tt.computeroutput { font-size: 130% }
+ h5 tt.computeroutput { font-size: 130% }
+ h6 tt.computeroutput { font-size: 130% }
+
+
+/*=============================================================================
+ Author
+=============================================================================*/
+
+ h3.author
+ {
+ font-size: 100%
+ }
+
+/*=============================================================================
+ Lists
+=============================================================================*/
+
+ li
+ {
+ font-size: 10pt;
+ line-height: 1.3;
+ }
+
+ /* Unordered lists */
+ ul
+ {
+ text-align: left;
+ }
+
+ /* Ordered lists */
+ ol
+ {
+ text-align: left;
+ }
+
+/*=============================================================================
+ Links
+=============================================================================*/
+
+ a
+ {
+ text-decoration: none; /* no underline */
+ }
+
+ a:hover
+ {
+ text-decoration: underline;
+ }
+
+/*=============================================================================
+ Spirit style navigation
+=============================================================================*/
+
+ .spirit-nav
+ {
+ text-align: right;
+ }
+
+ .spirit-nav a
+ {
+ color: white;
+ padding-left: 0.5em;
+ }
+
+ .spirit-nav img
+ {
+ border-width: 0px;
+ }
+
+/*=============================================================================
+ Copyright footer
+=============================================================================*/
+ .copyright-footer
+ {
+ text-align: right;
+ font-size: 70%;
+ }
+
+ .copyright-footer p
+ {
+ text-align: right;
+ font-size: 80%;
+ }
+
+/*=============================================================================
+ Table of contents
+=============================================================================*/
+
+ .toc
+ {
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.1pc 1pc 0.1pc 1pc;
+ font-size: 80%;
+ line-height: 1.15;
+ }
+
+ .boost-toc
+ {
+ float: right;
+ padding: 0.5pc;
+ }
+
+ /* Code on toc */
+ .toc .computeroutput { font-size: 120% }
+
+/*=============================================================================
+ Tables
+=============================================================================*/
+
+ .table-title,
+ div.table p.title
+ {
+ margin-left: 4%;
+ padding-right: 0.5em;
+ padding-left: 0.5em;
+ }
+
+ .informaltable table,
+ .table table
+ {
+ width: 92%;
+ margin-left: 4%;
+ margin-right: 4%;
+ }
+
+ div.informaltable table,
+ div.table table
+ {
+ padding: 4px;
+ }
+
+ /* Table Cells */
+ div.informaltable table tr td,
+ div.table table tr td
+ {
+ padding: 0.5em;
+ text-align: left;
+ font-size: 9pt;
+ }
+
+ div.informaltable table tr th,
+ div.table table tr th
+ {
+ padding: 0.5em 0.5em 0.5em 0.5em;
+ border: 1pt solid white;
+ font-size: 80%;
+ }
+
+ table.simplelist
+ {
+ width: auto !important;
+ margin: 0em !important;
+ padding: 0em !important;
+ border: none !important;
+ }
+ table.simplelist td
+ {
+ margin: 0em !important;
+ padding: 0em !important;
+ text-align: left !important;
+ font-size: 9pt !important;
+ border: none !important;
+ }
+
+/*=============================================================================
+ Blurbs
+=============================================================================*/
+
+ div.note,
+ div.tip,
+ div.important,
+ div.caution,
+ div.warning,
+ p.blurb
+ {
+ font-size: 9pt; /* A little bit smaller than the main text */
+ line-height: 1.2;
+ display: block;
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.5pc 0.5pc 0.5pc 0.5pc;
+ }
+
+ p.blurb img
+ {
+ padding: 1pt;
+ }
+
+/*=============================================================================
+ Variable Lists
+=============================================================================*/
+
+ div.variablelist
+ {
+ margin: 1em 0;
+ }
+
+ /* Make the terms in definition lists bold */
+ div.variablelist dl dt,
+ span.term
+ {
+ font-weight: bold;
+ font-size: 10pt;
+ }
+
+ div.variablelist table tbody tr td
+ {
+ text-align: left;
+ vertical-align: top;
+ padding: 0em 2em 0em 0em;
+ font-size: 10pt;
+ margin: 0em 0em 0.5em 0em;
+ line-height: 1;
+ }
+
+ div.variablelist dl dt
+ {
+ margin-bottom: 0.2em;
+ }
+
+ div.variablelist dl dd
+ {
+ margin: 0em 0em 0.5em 2em;
+ font-size: 10pt;
+ }
+
+ div.variablelist table tbody tr td p,
+ div.variablelist dl dd p
+ {
+ margin: 0em 0em 0.5em 0em;
+ line-height: 1;
+ }
+
+/*=============================================================================
+ Misc
+=============================================================================*/
+
+ /* Title of books and articles in bibliographies */
+ span.title
+ {
+ font-style: italic;
+ }
+
+ span.underline
+ {
+ text-decoration: underline;
+ }
+
+ span.strikethrough
+ {
+ text-decoration: line-through;
+ }
+
+ /* Copyright, Legal Notice */
+ div div.legalnotice p
+ {
+ text-align: left
+ }
+
+/*=============================================================================
+ Colors
+=============================================================================*/
+
+ @media screen
+ {
+ body {
+ background-color: #FFFFFF;
+ color: #000000;
+ }
+
+ /* Syntax Highlighting */
+ .keyword { color: #0000AA; }
+ .identifier { color: #000000; }
+ .special { color: #707070; }
+ .preprocessor { color: #402080; }
+ .char { color: teal; }
+ .comment { color: #800000; }
+ .string { color: teal; }
+ .number { color: teal; }
+ .white_bkd { background-color: #FFFFFF; }
+ .dk_grey_bkd { background-color: #999999; }
+
+ /* Links */
+ a, a .keyword, a .identifier, a .special, a .preprocessor
+ a .char, a .comment, a .string, a .number
+ {
+ color: #005a9c;
+ }
+
+ a:visited, a:visited .keyword, a:visited .identifier,
+ a:visited .special, a:visited .preprocessor a:visited .char,
+ a:visited .comment, a:visited .string, a:visited .number
+ {
+ color: #9c5a9c;
+ }
+
+ h1 a, h2 a, h3 a, h4 a, h5 a, h6 a,
+ h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover,
+ h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited
+ {
+ text-decoration: none; /* no underline */
+ color: #000000;
+ }
+
+ /* Copyright, Legal Notice */
+ .copyright
+ {
+ color: #666666;
+ font-size: small;
+ }
+
+ div div.legalnotice p
+ {
+ color: #666666;
+ }
+
+ /* Program listing */
+ pre.synopsis
+ {
+ border: 1px solid #DCDCDC;
+ }
+
+ .programlisting,
+ .screen
+ {
+ border: 1px solid #DCDCDC;
+ }
+
+ td .programlisting,
+ td .screen
+ {
+ border: 0px solid #DCDCDC;
+ }
+
+ /* Blurbs */
+ div.note,
+ div.tip,
+ div.important,
+ div.caution,
+ div.warning,
+ p.blurb
+ {
+ border: 1px solid #DCDCDC;
+ }
+
+ /* Table of contents */
+ .toc
+ {
+ border: 1px solid #DCDCDC;
+ }
+
+ /* Tables */
+ div.informaltable table tr td,
+ div.table table tr td
+ {
+ border: 1px solid #DCDCDC;
+ }
+
+ div.informaltable table tr th,
+ div.table table tr th
+ {
+ background-color: #F0F0F0;
+ border: 1px solid #DCDCDC;
+ }
+
+ .copyright-footer
+ {
+ color: #8F8F8F;
+ }
+
+ /* Misc */
+ span.highlight
+ {
+ color: #00A000;
+ }
+ }
+
+ @media print
+ {
+ /* Links */
+ a
+ {
+ color: black;
+ }
+
+ a:visited
+ {
+ color: black;
+ }
+
+ .spirit-nav
+ {
+ display: none;
+ }
+
+ /* Program listing */
+ pre.synopsis
+ {
+ border: 1px solid gray;
+ }
+
+ .programlisting,
+ .screen
+ {
+ border: 1px solid gray;
+ }
+
+ td .programlisting,
+ td .screen
+ {
+ border: 0px solid #DCDCDC;
+ }
+
+ /* Table of contents */
+ .toc
+ {
+ border: 1px solid gray;
+ }
+
+ .informaltable table,
+ .table table
+ {
+ border: 1px solid gray;
+ border-collapse: collapse;
+ }
+
+ /* Tables */
+ div.informaltable table tr td,
+ div.table table tr td
+ {
+ border: 1px solid gray;
+ }
+
+ div.informaltable table tr th,
+ div.table table tr th
+ {
+ border: 1px solid gray;
+ }
+
+ table.simplelist tr td
+ {
+ border: none !important;
+ }
+
+ /* Misc */
+ span.highlight
+ {
+ font-weight: bold;
+ }
+ }
+
+/*=============================================================================
+ Images
+=============================================================================*/
+
+ span.inlinemediaobject img
+ {
+ vertical-align: middle;
+ }
+
+/*==============================================================================
+ Super and Subscript: style so that line spacing isn't effected, see
+ http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=1&postId=5341
+==============================================================================*/
+
+sup,
+sub {
+ height: 0;
+ line-height: 1;
+ vertical-align: baseline;
+ _vertical-align: bottom;
+ position: relative;
+
+}
+
+sup {
+ bottom: 1ex;
+}
+
+sub {
+ top: .5ex;
+}
+

Added: sandbox/convert/libs/convert/doc/html/convert_reference.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/convert_reference.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,58 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Convert Reference</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="the_convert_library/convert_more_converters.html" title="More About Converters, Customization, Optimization and Performance">
+<link rel="next" href="header/boost/convert/api_hpp.html" title="Header &lt;boost/convert/api.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="the_convert_library/convert_more_converters.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="header/boost/convert/api_hpp.html"><img src="images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="convert_reference"></a>Convert Reference</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Header <boost/convert.hpp></span></dt>
+<dt><span class="section">Header <boost/convert/api.hpp></span></dt>
+<dd><dl></dl></dd>
+<dt><span class="section">Header <boost/convert/boost_parameter_ext.hpp></span></dt>
+<dd><dl></dl></dd>
+<dt><span class="section">Header <boost/convert/converter_base.hpp></span></dt>
+<dt><span class="section">Header <boost/convert/stream_based_string_convertor.hpp></span></dt>
+<dt><span class="section">Header <boost/convert/string_sfinae.hpp></span></dt>
+<dt><span class="section">Header <boost/convert/string_to_bool.hpp></span></dt>
+<dt><span class="section">Header <boost/convert/string_to_type.hpp></span></dt>
+<dt><span class="section">Header <boost/convert/type_to_bool.hpp></span></dt>
+<dd><dl></dl></dd>
+<dt><span class="section">Header <boost/convert/type_to_string.hpp></span></dt>
+<dd><dl></dl></dd>
+<dt><span class="section">Header <boost/safebool.hpp></span></dt>
+<dd><dl></dl></dd>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.convert_hpp"></a>Header &lt;boost/convert.hpp&gt;</h3></div></div></div>
+<p>Public interface to the Boost.Convert framework. Includes all of the supporting headers. </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="the_convert_library/convert_more_converters.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="header/boost/convert/api_hpp.html"><img src="images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/docutils.css
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/docutils.css 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,275 @@
+/*
+:Author: David Goodger
+:Contact: goodger_at_[hidden]
+:Date: $Date: 2007-11-25 14:34:32 -0500 (Sun, 25 Nov 2007) $
+:Revision: $Revision: 41371 $
+:Copyright: This stylesheet has been placed in the public domain.
+
+Default cascading style sheet for the HTML output of Docutils.
+
+See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
+customize this style sheet.
+*/
+
+/* used to remove borders from tables and images */
+.borderless, table.borderless td, table.borderless th {
+ border: 0 }
+
+table.borderless td, table.borderless th {
+ /* Override padding for "table.docutils td" with "! important".
+ The right padding separates the table cells. */
+ padding: 0 0.5em 0 0 ! important }
+
+.first {
+ /* Override more specific margin styles with "! important". */
+ margin-top: 0 ! important }
+
+.last, .with-subtitle {
+ margin-bottom: 0 ! important }
+
+.hidden {
+ display: none }
+
+a.toc-backref {
+ text-decoration: none ;
+ color: black }
+
+blockquote.epigraph {
+ margin: 2em 5em ; }
+
+dl.docutils dd {
+ margin-bottom: 0.5em }
+
+/* Uncomment (and remove this text!) to get bold-faced definition list terms
+dl.docutils dt {
+ font-weight: bold }
+*/
+
+div.abstract {
+ margin: 2em 5em }
+
+div.abstract p.topic-title {
+ font-weight: bold ;
+ text-align: center }
+
+div.admonition, div.attention, div.caution, div.danger, div.error,
+div.hint, div.important, div.note, div.tip, div.warning {
+ margin: 2em ;
+ border: medium outset ;
+ padding: 1em }
+
+div.admonition p.admonition-title, div.hint p.admonition-title,
+div.important p.admonition-title, div.note p.admonition-title,
+div.tip p.admonition-title {
+ font-weight: bold ;
+ font-family: sans-serif }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title {
+ color: red ;
+ font-weight: bold ;
+ font-family: sans-serif }
+
+/* Uncomment (and remove this text!) to get reduced vertical space in
+ compound paragraphs.
+div.compound .compound-first, div.compound .compound-middle {
+ margin-bottom: 0.5em }
+
+div.compound .compound-last, div.compound .compound-middle {
+ margin-top: 0.5em }
+*/
+
+div.dedication {
+ margin: 2em 5em ;
+ text-align: center ;
+ font-style: italic }
+
+div.dedication p.topic-title {
+ font-weight: bold ;
+ font-style: normal }
+
+div.figure {
+ margin-left: 2em ;
+ margin-right: 2em }
+
+div.footer, div.header {
+ clear: both;
+ font-size: smaller }
+
+div.line-block {
+ display: block ;
+ margin-top: 1em ;
+ margin-bottom: 1em }
+
+div.line-block div.line-block {
+ margin-top: 0 ;
+ margin-bottom: 0 ;
+ margin-left: 1.5em }
+
+div.sidebar {
+ margin-left: 1em ;
+ border: medium outset ;
+ padding: 1em ;
+ background-color: #ffffee ;
+ width: 40% ;
+ float: right ;
+ clear: right }
+
+div.sidebar p.rubric {
+ font-family: sans-serif ;
+ font-size: medium }
+
+div.system-messages {
+ margin: 5em }
+
+div.system-messages h1 {
+ color: red }
+
+div.system-message {
+ border: medium outset ;
+ padding: 1em }
+
+div.system-message p.system-message-title {
+ color: red ;
+ font-weight: bold }
+
+div.topic {
+ margin: 2em }
+
+h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
+h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
+ margin-top: 0.4em }
+
+h1.title {
+ text-align: center }
+
+h2.subtitle {
+ text-align: center }
+
+hr.docutils {
+ width: 75% }
+
+img.align-left {
+ clear: left }
+
+img.align-right {
+ clear: right }
+
+ol.simple, ul.simple {
+ margin-bottom: 1em }
+
+ol.arabic {
+ list-style: decimal }
+
+ol.loweralpha {
+ list-style: lower-alpha }
+
+ol.upperalpha {
+ list-style: upper-alpha }
+
+ol.lowerroman {
+ list-style: lower-roman }
+
+ol.upperroman {
+ list-style: upper-roman }
+
+p.attribution {
+ text-align: right ;
+ margin-left: 50% }
+
+p.caption {
+ font-style: italic }
+
+p.credits {
+ font-style: italic ;
+ font-size: smaller }
+
+p.label {
+ white-space: nowrap }
+
+p.rubric {
+ font-weight: bold ;
+ font-size: larger ;
+ color: maroon ;
+ text-align: center }
+
+p.sidebar-title {
+ font-family: sans-serif ;
+ font-weight: bold ;
+ font-size: larger }
+
+p.sidebar-subtitle {
+ font-family: sans-serif ;
+ font-weight: bold }
+
+p.topic-title {
+ font-weight: bold }
+
+pre.address {
+ margin-bottom: 0 ;
+ margin-top: 0 ;
+ font-family: serif ;
+ font-size: 100% }
+
+pre.literal-block, pre.doctest-block {
+ margin-left: 2em ;
+ margin-right: 2em }
+
+span.classifier {
+ font-family: sans-serif ;
+ font-style: oblique }
+
+span.classifier-delimiter {
+ font-family: sans-serif ;
+ font-weight: bold }
+
+span.interpreted {
+ font-family: sans-serif }
+
+span.option {
+ white-space: nowrap }
+
+span.pre {
+ white-space: pre }
+
+span.problematic {
+ color: red }
+
+span.section-subtitle {
+ /* font-size relative to parent (h1..h6 element) */
+ font-size: 80% }
+
+table.citation {
+ border-left: solid 1px gray;
+ margin-left: 1px }
+
+table.docinfo {
+ margin: 2em 4em }
+
+table.docutils {
+ margin-top: 0.5em ;
+ margin-bottom: 0.5em }
+
+table.footnote {
+ border-left: solid 1px black;
+ margin-left: 1px }
+
+table.docutils td, table.docutils th,
+table.docinfo td, table.docinfo th {
+ padding-left: 0.5em ;
+ padding-right: 0.5em ;
+ vertical-align: top }
+
+table.docutils th.field-name, table.docinfo th.docinfo-name {
+ font-weight: bold ;
+ text-align: left ;
+ white-space: nowrap ;
+ padding-left: 0 }
+
+h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
+h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
+ font-size: 100% }
+
+ul.auto-toc {
+ list-style-type: none }

Added: sandbox/convert/libs/convert/doc/html/header/boost/convert/api_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/header/boost/convert/api_hpp.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,56 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/convert/api.hpp&gt;</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../../convert_reference.html" title="Convert Reference">
+<link rel="prev" href="../../../convert_reference.html" title="Convert Reference">
+<link rel="next" href="../../../boost/conversion/result.html" title="Struct template result">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../convert_reference.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/conversion/result.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.convert.api_hpp"></a>Header &lt;boost/convert/api.hpp&gt;</h3></div></div></div>
+<p>Defines the Boost.Convert interface </p>
+<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeOut<span class="special">,</span> <span class="keyword">typename</span> EnableOut<span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="../../../boost/convert.html" title="Struct template convert">convert</a><span class="special">;</span>
+ <span class="keyword">namespace</span> <span class="identifier">conversion</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TypeOut<span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="../../../boost/conversion/result.html" title="Struct template result">result</a><span class="special">;</span>
+ <span class="keyword">namespace</span> <span class="identifier">parameter</span> <span class="special">{</span>
+
+ <span class="comment">// Specify throw-on-failure behavior explicitly. </span>
+ <a name="boost.conversion.parameter.BOOST_PARAMETER_KEYWORD_id215427"></a><span class="identifier">BOOST_PARAMETER_KEYWORD</span><span class="special">(</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">throw_</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// Specify locale. </span>
+ <a name="boost.conversion.parameter.BOOST_PARAMETER_KEYWORD_id215445"></a><span class="identifier">BOOST_PARAMETER_KEYWORD</span><span class="special">(</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">locale_</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// Provide fallback value. </span>
+ <a name="boost.conversion.parameter.BOOST_PARAMETER_KEYWORD_id215464"></a><span class="identifier">BOOST_PARAMETER_KEYWORD</span><span class="special">(</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">fallback_</span><span class="special">)</span><span class="special">;</span>
+
+ <span class="comment">// Not used. Work in progress. </span>
+ <a name="boost.conversion.parameter.BOOST_PARAMETER_KEYWORD_id266407"></a><span class="identifier">BOOST_PARAMETER_KEYWORD</span><span class="special">(</span><span class="identifier">type</span><span class="special">,</span> <span class="identifier">format_</span><span class="special">)</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+<span class="special">}</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../convert_reference.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/conversion/result.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/header/boost/convert/boost_parameter_ext_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/header/boost/convert/boost_parameter_ext_hpp.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/convert/boost_parameter_ext.hpp&gt;</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../../convert_reference.html" title="Convert Reference">
+<link rel="prev" href="../../../boost/convert/format.html" title="Struct format">
+<link rel="next" href="../../../boost/parameter/parameter_type.html" title="Struct template parameter_type">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../boost/convert/format.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/parameter/parameter_type.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.convert.boost_parameter_ext_hpp"></a>Header &lt;boost/convert/boost_parameter_ext.hpp&gt;</h3></div></div></div>
+<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+ <span class="keyword">namespace</span> <span class="identifier">parameter</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> ArgsT<span class="special">,</span> <span class="keyword">typename</span> KeywordTagT<span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="../../../boost/parameter/parameter_type.html" title="Struct template parameter_type">parameter_type</a><span class="special">;</span>
+
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> ArgT<span class="special">,</span> <span class="keyword">typename</span> KeywordTagT<span class="special">&gt;</span>
+ <span class="keyword">struct</span> <a class="link" href="../../../boost/parameter/parameter_type_aux_tagg_id266451.html" title="Struct template parameter_type&lt;aux::tagged_argument&lt; KeywordTagT, ArgT &gt;, KeywordTagT&gt;">parameter_type</a><span class="special">&lt;</span><span class="identifier">aux</span><span class="special">::</span><span class="identifier">tagged_argument</span><span class="special">&lt;</span> <span class="identifier">KeywordTagT</span><span class="special">,</span> <span class="identifier">ArgT</span> <span class="special">&gt;</span><span class="special">,</span> <span class="identifier">KeywordTagT</span><span class="special">&gt;</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> KeywordTagT1<span class="special">,</span> <span class="keyword">typename</span> ArgT<span class="special">,</span> <span class="keyword">typename</span> KeywordTagT2<span class="special">&gt;</span>
+ <span class="keyword">struct</span> <a class="link" href="../../../boost/parameter/parameter_type_aux_tagg_id266477.html" title="Struct template parameter_type&lt;aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, KeywordTagT2&gt;">parameter_type</a><span class="special">&lt;</span><span class="identifier">aux</span><span class="special">::</span><span class="identifier">tagged_argument</span><span class="special">&lt;</span> <span class="identifier">KeywordTagT1</span><span class="special">,</span> <span class="identifier">ArgT</span> <span class="special">&gt;</span><span class="special">,</span> <span class="identifier">KeywordTagT2</span><span class="special">&gt;</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> ArgT<span class="special">,</span> <span class="keyword">typename</span> TailT<span class="special">,</span> <span class="keyword">typename</span> KeywordTagT<span class="special">&gt;</span>
+ <span class="keyword">struct</span> <a class="link" href="../../../boost/parameter/parameter_type_aux_arg__id266508.html" title="Struct template parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT, ArgT &gt;, TailT &gt;, KeywordTagT&gt;">parameter_type</a><span class="special">&lt;</span><span class="identifier">aux</span><span class="special">::</span><span class="identifier">arg_list</span><span class="special">&lt;</span> <span class="identifier">aux</span><span class="special">::</span><span class="identifier">tagged_argument</span><span class="special">&lt;</span> <span class="identifier">KeywordTagT</span><span class="special">,</span> <span class="identifier">ArgT</span> <span class="special">&gt;</span><span class="special">,</span> <span class="identifier">TailT</span> <span class="special">&gt;</span><span class="special">,</span> <span class="identifier">KeywordTagT</span><span class="special">&gt;</span><span class="special">;</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> KeywordTagT1<span class="special">,</span> <span class="keyword">typename</span> ArgT<span class="special">,</span> <span class="keyword">typename</span> TailT<span class="special">,</span>
+ <span class="keyword">typename</span> KeywordTagT2<span class="special">&gt;</span>
+ <span class="keyword">struct</span> <a class="link" href="../../../boost/parameter/parameter_type_aux_arg__id266540.html" title="Struct template parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, TailT &gt;, KeywordTagT2&gt;">parameter_type</a><span class="special">&lt;</span><span class="identifier">aux</span><span class="special">::</span><span class="identifier">arg_list</span><span class="special">&lt;</span> <span class="identifier">aux</span><span class="special">::</span><span class="identifier">tagged_argument</span><span class="special">&lt;</span> <span class="identifier">KeywordTagT1</span><span class="special">,</span> <span class="identifier">ArgT</span> <span class="special">&gt;</span><span class="special">,</span> <span class="identifier">TailT</span> <span class="special">&gt;</span><span class="special">,</span> <span class="identifier">KeywordTagT2</span><span class="special">&gt;</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">}</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../boost/convert/format.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/parameter/parameter_type.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/header/boost/convert/converter_base_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/header/boost/convert/converter_base_hpp.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,33 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/convert/converter_base.hpp&gt;</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../../convert_reference.html" title="Convert Reference">
+<link rel="prev" href="../../../boost/parameter/parameter_type_aux_arg__id266540.html" title="Struct template parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, TailT &gt;, KeywordTagT2&gt;">
+<link rel="next" href="stream_based_string_convertor_hpp.html" title="Header &lt;boost/convert/stream_based_string_convertor.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../boost/parameter/parameter_type_aux_arg__id266540.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="stream_based_string_convertor_hpp.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section"><div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.convert.converter_base_hpp"></a>Header &lt;boost/convert/converter_base.hpp&gt;</h3></div></div></div></div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../boost/parameter/parameter_type_aux_arg__id266540.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="stream_based_string_convertor_hpp.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/header/boost/convert/stream_based_string_convertor_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/header/boost/convert/stream_based_string_convertor_hpp.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,33 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/convert/stream_based_string_convertor.hpp&gt;</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../../convert_reference.html" title="Convert Reference">
+<link rel="prev" href="converter_base_hpp.html" title="Header &lt;boost/convert/converter_base.hpp&gt;">
+<link rel="next" href="string_sfinae_hpp.html" title="Header &lt;boost/convert/string_sfinae.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="converter_base_hpp.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="string_sfinae_hpp.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section"><div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.convert.stream_based_string_convertor_hpp"></a>Header &lt;boost/convert/stream_based_string_convertor.hpp&gt;</h3></div></div></div></div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="converter_base_hpp.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="string_sfinae_hpp.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/header/boost/convert/string_sfinae_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/header/boost/convert/string_sfinae_hpp.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,36 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/convert/string_sfinae.hpp&gt;</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../../convert_reference.html" title="Convert Reference">
+<link rel="prev" href="stream_based_string_convertor_hpp.html" title="Header &lt;boost/convert/stream_based_string_convertor.hpp&gt;">
+<link rel="next" href="string_to_bool_hpp.html" title="Header &lt;boost/convert/string_to_bool.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="stream_based_string_convertor_hpp.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="string_to_bool_hpp.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.convert.string_sfinae_hpp"></a>Header &lt;boost/convert/string_sfinae.hpp&gt;</h3></div></div></div>
+<p>Defines various string-related type checks </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="stream_based_string_convertor_hpp.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="string_to_bool_hpp.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/header/boost/convert/string_to_bool_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/header/boost/convert/string_to_bool_hpp.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,36 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/convert/string_to_bool.hpp&gt;</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../../convert_reference.html" title="Convert Reference">
+<link rel="prev" href="string_sfinae_hpp.html" title="Header &lt;boost/convert/string_sfinae.hpp&gt;">
+<link rel="next" href="string_to_type_hpp.html" title="Header &lt;boost/convert/string_to_type.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string_sfinae_hpp.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="string_to_type_hpp.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.convert.string_to_bool_hpp"></a>Header &lt;boost/convert/string_to_bool.hpp&gt;</h3></div></div></div>
+<p>Implements string-to-bool converter </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string_sfinae_hpp.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="string_to_type_hpp.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/header/boost/convert/string_to_type_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/header/boost/convert/string_to_type_hpp.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,36 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/convert/string_to_type.hpp&gt;</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../../convert_reference.html" title="Convert Reference">
+<link rel="prev" href="string_to_bool_hpp.html" title="Header &lt;boost/convert/string_to_bool.hpp&gt;">
+<link rel="next" href="type_to_bool_hpp.html" title="Header &lt;boost/convert/type_to_bool.hpp&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string_to_bool_hpp.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="type_to_bool_hpp.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.convert.string_to_type_hpp"></a>Header &lt;boost/convert/string_to_type.hpp&gt;</h3></div></div></div>
+<p>Implements string-to-type converter </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string_to_bool_hpp.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="type_to_bool_hpp.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/header/boost/convert/type_to_bool_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/header/boost/convert/type_to_bool_hpp.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,38 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/convert/type_to_bool.hpp&gt;</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../../convert_reference.html" title="Convert Reference">
+<link rel="prev" href="string_to_type_hpp.html" title="Header &lt;boost/convert/string_to_type.hpp&gt;">
+<link rel="next" href="../../../boost/convert_bool_id266619.html" title="Struct convert&lt;bool&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string_to_type_hpp.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/convert_bool_id266619.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.convert.type_to_bool_hpp"></a>Header &lt;boost/convert/type_to_bool.hpp&gt;</h3></div></div></div>
+<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="../../../boost/convert_bool_id266619.html" title="Struct convert&lt;bool&gt;">convert</a><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">&gt;</span><span class="special">;</span>
+<span class="special">}</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string_to_type_hpp.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/convert_bool_id266619.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/header/boost/convert/type_to_string_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/header/boost/convert/type_to_string_hpp.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,39 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/convert/type_to_string.hpp&gt;</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../../convert_reference.html" title="Convert Reference">
+<link rel="prev" href="../../../boost/convert_bool_id266619.html" title="Struct convert&lt;bool&gt;">
+<link rel="next" href="../../../boost/convert_StringOut__type_id266688.html" title="Struct template convert&lt;StringOut, typename boost::enable_if&lt; convert_detail::is_std_string&lt; StringOut &gt; &gt;::type&gt;">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../boost/convert_bool_id266619.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/convert_StringOut__type_id266688.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.convert.type_to_string_hpp"></a>Header &lt;boost/convert/type_to_string.hpp&gt;</h3></div></div></div>
+<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> StringOut<span class="special">&gt;</span>
+ <span class="keyword">struct</span> <a class="link" href="../../../boost/convert_StringOut__type_id266688.html" title="Struct template convert&lt;StringOut, typename boost::enable_if&lt; convert_detail::is_std_string&lt; StringOut &gt; &gt;::type&gt;">convert</a><span class="special">&lt;</span><span class="identifier">StringOut</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special">&lt;</span> <span class="identifier">convert_detail</span><span class="special">::</span><span class="identifier">is_std_string</span><span class="special">&lt;</span> <span class="identifier">StringOut</span> <span class="special">&gt;</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">type</span><span class="special">&gt;</span><span class="special">;</span>
+<span class="special">}</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../../boost/convert_bool_id266619.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../../convert_reference.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../../../boost/convert_StringOut__type_id266688.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/header/boost/safebool_hpp.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/header/boost/safebool_hpp.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,38 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Header &lt;boost/safebool.hpp&gt;</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../../convert_reference.html" title="Convert Reference">
+<link rel="prev" href="../../boost/convert_StringOut__type_id266688.html" title="Struct template convert&lt;StringOut, typename boost::enable_if&lt; convert_detail::is_std_string&lt; StringOut &gt; &gt;::type&gt;">
+<link rel="next" href="../../boost/safebool.html" title="Struct template safebool">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../boost/convert_StringOut__type_id266688.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../convert_reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../boost/safebool.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="header.boost.safebool_hpp"></a>Header &lt;boost/safebool.hpp&gt;</h3></div></div></div>
+<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="../../boost/safebool.html" title="Struct template safebool">safebool</a><span class="special">;</span>
+<span class="special">}</span></pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../../boost/convert_StringOut__type_id266688.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../convert_reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../boost/safebool.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/images/alert.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/blank.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/caution.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/draft.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/home.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/important.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/next.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/next_disabled.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/note.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/prev.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/prev_disabled.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/smiley.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/tip.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/toc-blank.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/toc-minus.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/toc-plus.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/up.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/up_disabled.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/images/warning.png
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/convert/doc/html/index.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/index.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,131 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter&#160;1.&#160;The Convert Library 1.0</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="next" href="the_convert_library/convert_motivation.html" title="Motivation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="the_convert_library/convert_motivation.html"><img src="images/next.png" alt="Next"></a></div>
+<div class="chapter">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="convert"></a>Chapter&#160;1.&#160;The Convert Library 1.0</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Vladimir</span> <span class="surname">Batov</span>
+</h3></div></div>
+<div><p class="copyright">Copyright &#169; 2009 -2011 Vladimir Batov</p></div>
+<div><div class="legalnotice">
+<a name="id824625"></a><p>
+ 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)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Introduction</span></dt>
+<dt><span class="section">Motivation</span></dt>
+<dt><span class="section">Getting Started</span></dt>
+<dt><span class="section"><a href="the_convert_library/convert_better_conv.html">Better Conversion-Failure
+ Check With convert&lt;&gt;::result</a></span></dt>
+<dt><span class="section"><a href="the_convert_library/convert_two_behavioral.html">Two Behavioral
+ Policies</a></span></dt>
+<dt><span class="section"><a href="the_convert_library/convert_requirements.html">Requirements
+ on the Argument and Result Types</a></span></dt>
+<dt><span class="section"><a href="the_convert_library/convert_integration.html">Integration of
+ User-Defined Types</a></span></dt>
+<dt><span class="section"><a href="the_convert_library/convert_modified.html">Modifying Throwing
+ Behavior</a></span></dt>
+<dt><span class="section">Formatted Conversions</span></dt>
+<dt><span class="section">Locale-Based Conversions</span></dt>
+<dt><span class="section">String-To-String Conversions</span></dt>
+<dt><span class="section"><a href="the_convert_library/convert_algorithms.html">Using Boost.Convert
+ with Standard Algorithms</a></span></dt>
+<dt><span class="section"><a href="the_convert_library/convert_direct.html">Accessing Converters
+ Directly</a></span></dt>
+<dt><span class="section"><a href="the_convert_library/convert_more_converters.html">More About
+ Converters, Customization, Optimization and Performance</a></span></dt>
+<dt><span class="section">Convert Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Header <boost/convert.hpp></span></dt>
+<dt><span class="section">Header <boost/convert/api.hpp></span></dt>
+<dd><dl></dl></dd>
+<dt><span class="section">Header <boost/convert/boost_parameter_ext.hpp></span></dt>
+<dd><dl></dl></dd>
+<dt><span class="section">Header <boost/convert/converter_base.hpp></span></dt>
+<dt><span class="section">Header <boost/convert/stream_based_string_convertor.hpp></span></dt>
+<dt><span class="section">Header <boost/convert/string_sfinae.hpp></span></dt>
+<dt><span class="section">Header <boost/convert/string_to_bool.hpp></span></dt>
+<dt><span class="section">Header <boost/convert/string_to_type.hpp></span></dt>
+<dt><span class="section">Header <boost/convert/type_to_bool.hpp></span></dt>
+<dd><dl></dl></dd>
+<dt><span class="section">Header <boost/convert/type_to_string.hpp></span></dt>
+<dd><dl></dl></dd>
+<dt><span class="section">Header <boost/safebool.hpp></span></dt>
+<dd><dl></dl></dd>
+</dl></dd>
+<dt><span class="section">Acknowledgements</span></dt>
+<dt><span class="section">Index</span></dt>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_convert_library.convert_intro"></a><a class="link" href="index.html#the_convert_library.convert_intro" title="Introduction">Introduction</a>
+</h2></div></div></div>
+<p>
+ <span class="emphasis"><em>Boost.Convert</em></span> builds on the <span class="emphasis"><em>boost::lexical_cast</em></span>
+ (see <a href="http://www.boost.org/doc/libs/1_38_0/libs/conversion/lexical_cast.htm" target="_top"><span class="emphasis"><em>lexical_cast</em></span>
+ documentation</a>) experience and still offers simple, minimal interface,
+ familiar conversion behavior and more:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ throwing and non-throwing behavior when conversion fails;
+ </li>
+<li class="listitem">
+ support for the default/fallback value to be returned when conversion fails;
+ </li>
+<li class="listitem">
+ two types of the conversion-failure check - basic/simple and better/safe;
+ </li>
+<li class="listitem">
+ formatting support based on the standard <span class="emphasis"><em>std::streams</em></span>
+ and <span class="emphasis"><em>std::stream</em></span>-based manipulators (like <span class="emphasis"><em>std::hex</em></span>,
+ <span class="emphasis"><em>std::scientific</em></span>, etc.);
+ </li>
+<li class="listitem">
+ support for different locales;
+ </li>
+<li class="listitem">
+ support for <span class="emphasis"><em>boost::range</em></span>-compliant char and <span class="emphasis"><em>wchar_t</em></span>-based
+ string containers (std::string, std::wstring, char const*, wchar_t const*,
+ char array[], etc.);
+ </li>
+<li class="listitem">
+ no DefaultConstructibility requirement for the Target/Destination type;
+ </li>
+<li class="listitem">
+ extendibility and additional room to grow.
+ </li>
+</ul></div>
+<p>
+ It needs to be mentioned though that <span class="emphasis"><em>Boost.Convert</em></span> is
+ not an attempt to provide a full-blown parser<span class="emphasis"><em>generator. For serious
+ parsing tasks one might like to consider /Boost.Spirit</em></span>.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: April 11, 2011 at 20:57:51 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="the_convert_library/convert_motivation.html"><img src="images/next.png" alt="Next"></a></div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/index/s17.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/index/s17.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,100 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Index</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="../the_convert_library/convert_acknowledgements.html" title="Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../the_convert_library/convert_acknowledgements.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="id846925"></a>Index</h2></div></div></div>
+<p><a class="link" href="s17.html#idx_id_0">B</a> <a class="link" href="s17.html#idx_id_1">H</a> <a class="link" href="s17.html#idx_id_2">O</a> <a class="link" href="s17.html#idx_id_3">R</a> <a class="link" href="s17.html#idx_id_4">S</a> </p>
+<div class="variablelist"><dl>
+<dt>
+<a name="idx_id_0"></a><span class="term">B</span>
+</dt>
+<dd><div class="variablelist"><dl>
+<dt><span class="term">boost</span></dt>
+<dd><table border="0" summary="Simple list" class="simplelist">
+<tr><td><p><a class="link" href="../boost/parameter/parameter_type_aux_arg__id266540.html" title="Struct template parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, TailT &gt;, KeywordTagT2&gt;">Header &lt; boost/convert/boost_parameter_ext.hpp &gt;</a></p></td></tr>
+<tr><td><p><a class="link" href="../boost/convert_StringOut__type_id266688.html" title="Struct template convert&lt;StringOut, typename boost::enable_if&lt; convert_detail::is_std_string&lt; StringOut &gt; &gt;::type&gt;">Header &lt; boost/convert/type_to_string.hpp &gt;</a></p></td></tr>
+</table></dd>
+</dl></div></dd>
+<dt>
+<a name="idx_id_1"></a><span class="term">H</span>
+</dt>
+<dd><div class="variablelist"><dl>
+<dt><span class="term">Header &lt; boost/convert/api.hpp &gt;</span></dt>
+<dd><table border="0" summary="Simple list" class="simplelist">
+<tr><td><p><a class="link" href="../boost/conversion/result.html" title="Struct template result">optional_out_type</a></p></td></tr>
+<tr><td><p><a class="link" href="../boost/conversion/result.html" title="Struct template result">out_type</a></p></td></tr>
+<tr><td><p><a class="link" href="../boost/convert.html" title="Struct template convert">result</a></p></td></tr>
+<tr><td><p><a class="link" href="../boost/conversion/result.html" title="Struct template result">safebool</a></p></td></tr>
+</table></dd>
+<dt><span class="term">Header &lt; boost/convert/boost_parameter_ext.hpp &gt;</span></dt>
+<dd><table border="0" summary="Simple list" class="simplelist"><tr><td><p><a class="link" href="../boost/parameter/parameter_type_aux_arg__id266540.html" title="Struct template parameter_type&lt;aux::arg_list&lt; aux::tagged_argument&lt; KeywordTagT1, ArgT &gt;, TailT &gt;, KeywordTagT2&gt;">boost</a></p></td></tr></table></dd>
+<dt><span class="term">Header &lt; boost/convert/type_to_bool.hpp &gt;</span></dt>
+<dd><table border="0" summary="Simple list" class="simplelist"><tr><td><p><a class="link" href="../boost/convert_bool_id266619.html" title="Struct convert&lt;bool&gt;">result</a></p></td></tr></table></dd>
+<dt><span class="term">Header &lt; boost/convert/type_to_string.hpp &gt;</span></dt>
+<dd><table border="0" summary="Simple list" class="simplelist">
+<tr><td><p><a class="link" href="../boost/convert_StringOut__type_id266688.html" title="Struct template convert&lt;StringOut, typename boost::enable_if&lt; convert_detail::is_std_string&lt; StringOut &gt; &gt;::type&gt;">boost</a></p></td></tr>
+<tr><td><p><a class="link" href="../boost/convert_StringOut__type_id266688.html" title="Struct template convert&lt;StringOut, typename boost::enable_if&lt; convert_detail::is_std_string&lt; StringOut &gt; &gt;::type&gt;">result</a></p></td></tr>
+</table></dd>
+<dt><span class="term">Header &lt; boost/safebool.hpp &gt;</span></dt>
+<dd><table border="0" summary="Simple list" class="simplelist"><tr><td><p><a class="link" href="../boost/safebool.html" title="Struct template safebool">safebool</a></p></td></tr></table></dd>
+</dl></div></dd>
+<dt>
+<a name="idx_id_2"></a><span class="term">O</span>
+</dt>
+<dd><div class="variablelist"><dl>
+<dt><span class="term">optional_out_type</span></dt>
+<dd><table border="0" summary="Simple list" class="simplelist"><tr><td><p><a class="link" href="../boost/conversion/result.html" title="Struct template result">Header &lt; boost/convert/api.hpp &gt;</a></p></td></tr></table></dd>
+<dt><span class="term">out_type</span></dt>
+<dd><table border="0" summary="Simple list" class="simplelist"><tr><td><p><a class="link" href="../boost/conversion/result.html" title="Struct template result">Header &lt; boost/convert/api.hpp &gt;</a></p></td></tr></table></dd>
+</dl></div></dd>
+<dt>
+<a name="idx_id_3"></a><span class="term">R</span>
+</dt>
+<dd><div class="variablelist"><dl>
+<dt><span class="term">result</span></dt>
+<dd><table border="0" summary="Simple list" class="simplelist">
+<tr><td><p><a class="link" href="../boost/convert.html" title="Struct template convert">Header &lt; boost/convert/api.hpp &gt;</a></p></td></tr>
+<tr><td><p><a class="link" href="../boost/convert_bool_id266619.html" title="Struct convert&lt;bool&gt;">Header &lt; boost/convert/type_to_bool.hpp &gt;</a></p></td></tr>
+<tr><td><p><a class="link" href="../boost/convert_StringOut__type_id266688.html" title="Struct template convert&lt;StringOut, typename boost::enable_if&lt; convert_detail::is_std_string&lt; StringOut &gt; &gt;::type&gt;">Header &lt; boost/convert/type_to_string.hpp &gt;</a></p></td></tr>
+</table></dd>
+</dl></div></dd>
+<dt>
+<a name="idx_id_4"></a><span class="term">S</span>
+</dt>
+<dd><div class="variablelist"><dl>
+<dt><span class="term">safebool</span></dt>
+<dd><table border="0" summary="Simple list" class="simplelist">
+<tr><td><p><a class="link" href="../boost/conversion/result.html" title="Struct template result">Header &lt; boost/convert/api.hpp &gt;</a></p></td></tr>
+<tr><td><p><a class="link" href="../boost/safebool.html" title="Struct template safebool">Header &lt; boost/safebool.hpp &gt;</a></p></td></tr>
+</table></dd>
+</dl></div></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../the_convert_library/convert_acknowledgements.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/minimal.css
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/minimal.css 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,29 @@
+/*
+
+ © Copyright Beman Dawes, 2007
+
+ Distributed under the Boost Software License, Version 1.0.
+ See www.boost.org/LICENSE_1_0.txt
+
+*/
+
+/*******************************************************************************
+ Body
+*******************************************************************************/
+
+body { font-family: sans-serif; margin: 1em; }
+
+/*******************************************************************************
+ Table
+*******************************************************************************/
+
+table { margin: 0.5em; }
+
+/*******************************************************************************
+ Font sizes
+*******************************************************************************/
+
+p, td, li, blockquote { font-size: 10pt; }
+pre { font-size: 9pt; }
+
+/*** end ***/
\ No newline at end of file

Added: sandbox/convert/libs/convert/doc/html/reference.css
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/reference.css 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,11 @@
+/*============================================================================
+ Copyright 2003-2004 Douglas Gregor
+ Distributed under the Boost Software License, Version 1.0. (See accompany-
+ ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+============================================================================*/
+
+PRE.synopsis {
+ background-color: #e0ffff;
+ border: thin solid blue;
+ padding: 1em
+}
\ No newline at end of file

Added: sandbox/convert/libs/convert/doc/html/standalone_HTML.manifest
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/standalone_HTML.manifest 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,38 @@
+index.html
+the_convert_library/convert_motivation.html
+the_convert_library/convert_started.html
+the_convert_library/convert_better_conv.html
+the_convert_library/convert_two_behavioral.html
+the_convert_library/convert_requirements.html
+the_convert_library/convert_integration.html
+the_convert_library/convert_modified.html
+the_convert_library/convert_formatted.html
+the_convert_library/convert_locale.html
+the_convert_library/convert_string.html
+the_convert_library/convert_algorithms.html
+the_convert_library/convert_direct.html
+the_convert_library/convert_more_converters.html
+convert_reference.html
+header/boost/convert/api_hpp.html
+boost/conversion/result.html
+boost/convert.html
+boost/convert/format.html
+header/boost/convert/boost_parameter_ext_hpp.html
+boost/parameter/parameter_type.html
+boost/parameter/parameter_type_aux_tagg_id266451.html
+boost/parameter/parameter_type_aux_tagg_id266477.html
+boost/parameter/parameter_type_aux_arg__id266508.html
+boost/parameter/parameter_type_aux_arg__id266540.html
+header/boost/convert/converter_base_hpp.html
+header/boost/convert/stream_based_string_convertor_hpp.html
+header/boost/convert/string_sfinae_hpp.html
+header/boost/convert/string_to_bool_hpp.html
+header/boost/convert/string_to_type_hpp.html
+header/boost/convert/type_to_bool_hpp.html
+boost/convert_bool_id266619.html
+header/boost/convert/type_to_string_hpp.html
+boost/convert_StringOut__type_id266688.html
+header/boost/safebool_hpp.html
+boost/safebool.html
+the_convert_library/convert_acknowledgements.html
+index/s17.html

Added: sandbox/convert/libs/convert/doc/html/the_convert_library/convert_acknowledgements.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/the_convert_library/convert_acknowledgements.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Acknowledgements</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="../boost/safebool.html" title="Struct template safebool">
+<link rel="next" href="../index/s17.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../boost/safebool.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../index/s17.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_convert_library.convert_acknowledgements"></a><a class="link" href="convert_acknowledgements.html" title="Acknowledgements">Acknowledgements</a>
+</h2></div></div></div>
+<p>
+ Many thanks to Kevlin Henney and Dave Abrahams for their <span class="emphasis"><em>lexical_cast</em></span>-related
+ insights and explanations.
+ </p>
+<p>
+ Many thanks to Robert Stewart for his continuous and unwavering involvement,
+ Hartmut Kaiser, Andrey Semashev, Scott McMurray, Anders Dalvander, Andrzej
+ Krzemienski, Andrew Troschinetz, Alexander Nasonov, Jeff Flinn and all the
+ Boosters participated in the related <span class="emphasis"><em>lexical_cast</em></span> and
+ <span class="emphasis"><em>convert</em></span> discussions for expressing their views, opinions
+ and suggestions. In many ways the library has been influenced and shaped by
+ them.
+ </p>
+<p>
+ Special thanks to Edward Diener the Boost Review Manager for administrative
+ and technical help, guidance and advice.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../boost/safebool.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../index/s17.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/the_convert_library/convert_algorithms.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/the_convert_library/convert_algorithms.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Using Boost.Convert with Standard Algorithms</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="convert_string.html" title="String-To-String Conversions">
+<link rel="next" href="convert_direct.html" title="Accessing Converters Directly">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_string.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_direct.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_convert_library.convert_algorithms"></a><a class="link" href="convert_algorithms.html" title="Using Boost.Convert with Standard Algorithms">Using Boost.Convert
+ with Standard Algorithms</a>
+</h2></div></div></div>
+<p>
+ Both described conversion interfaces can be used with standard algorithms and
+ exhibit the same already familiar behavior:
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">integers</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special">&lt;</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*,</span> <span class="number">5</span><span class="special">&gt;</span> <span class="identifier">strings</span> <span class="special">=</span> <span class="special">{{</span> <span class="string">"0XF"</span><span class="special">,</span> <span class="string">"0X10"</span><span class="special">,</span> <span class="string">"0X11"</span><span class="special">,</span> <span class="string">"0X12"</span><span class="special">,</span> <span class="string">"not an int"</span><span class="special">}};</span>
+
+<span class="comment">// With fallback value provided. No throwing. Added hex formatting.
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">transform</span><span class="special">(</span>
+ <span class="identifier">strings</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span>
+ <span class="identifier">strings</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">integers</span><span class="special">),</span>
+ <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">string</span><span class="special">(),</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span> <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">hex</span><span class="special">);</span>
+
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span><span class="identifier">integers</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">==</span> <span class="number">15</span><span class="special">);</span>
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span><span class="identifier">integers</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">==</span> <span class="number">16</span><span class="special">);</span>
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span><span class="identifier">integers</span><span class="special">[</span><span class="number">2</span><span class="special">]</span> <span class="special">==</span> <span class="number">17</span><span class="special">);</span>
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span><span class="identifier">integers</span><span class="special">[</span><span class="number">3</span><span class="special">]</span> <span class="special">==</span> <span class="number">18</span><span class="special">);</span>
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span><span class="identifier">integers</span><span class="special">[</span><span class="number">4</span><span class="special">]</span> <span class="special">==</span> <span class="special">-</span><span class="number">1</span><span class="special">);</span> <span class="comment">// Failed conversion
+</span>
+<span class="comment">// Same as above. Alternative interface.
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">transform</span><span class="special">(</span>
+ <span class="identifier">strings</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span>
+ <span class="identifier">strings</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">integers</span><span class="special">),</span>
+ <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;()(</span><span class="identifier">fallback_</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span> <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">hex</span><span class="special">);</span>
+
+<span class="comment">// No fallback valus provided, i.e. throws on failure.
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">transform</span><span class="special">(</span>
+ <span class="identifier">strings</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span>
+ <span class="identifier">strings</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">integers</span><span class="special">),</span>
+ <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;());</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_string.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_direct.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/the_convert_library/convert_better_conv.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/the_convert_library/convert_better_conv.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,137 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Better Conversion-Failure Check With convert&lt;&gt;::result</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="convert_started.html" title="Getting Started">
+<link rel="next" href="convert_two_behavioral.html" title="Two Behavioral Policies">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_started.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_two_behavioral.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_convert_library.convert_better_conv"></a><a class="link" href="convert_better_conv.html" title="Better Conversion-Failure Check With convert&lt;&gt;::result">Better Conversion-Failure
+ Check With convert&lt;&gt;::result</a>
+</h2></div></div></div>
+<p>
+ After the call below 'i2' will have the value of -1 (the supplied fallback
+ value) due to conversion failure:
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">i2</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="string">"not an int"</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">);</span> <span class="comment">// after the call i2 = -1
+</span>
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">i2</span> <span class="special">==</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span> <span class="identifier">failed</span> <span class="identifier">to</span> <span class="identifier">convert</span>
+</pre>
+<p>
+ Checking the return value as above is certainly straight-forward and convenient.
+ Unfortunately, it is not always entirely correct as -1 is returned for the
+ conversion failure and for the conversion success when the supplied string
+ happens to be "-1". That non-determinism is a known limitation of
+ this basic interface. Still, for a surprising number of applications it is
+ adequate as it is quite common to still have "spare" values outside
+ the valid range. Such values (outside the valid range) are suitable to indicate
+ conversion failures (say, INT_MAX for integers) without introducing the above-mentioned
+ behavioral non-determinism.
+ </p>
+<p>
+ More so, it is not that uncommon for applications to ignore conversion failures
+ altogether and proceed with the supplied default/fallback value.
+ </p>
+<p>
+ Having said that, there are applications which do not fall in to any of the
+ categories mentioned above. Those applications still require the conversion-failure
+ condition clearly detected and, therefore, require a reliable conversion-failure
+ detection.
+ </p>
+<p>
+ For such applications the <span class="emphasis"><em>lexical_cast</em></span>-like throw-on-failure
+ interface might be adequate:
+ </p>
+<pre class="programlisting"><span class="keyword">try</span>
+<span class="special">{</span>
+ <span class="keyword">int</span> <span class="identifier">i1</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">str</span><span class="special">);</span> <span class="comment">// Throws if the conversion fails
+</span> <span class="special">...</span>
+<span class="special">}</span>
+<span class="keyword">catch</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">invalid_argument</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">ex</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">Conversion</span> <span class="identifier">failed</span>
+<span class="special">}</span>
+</pre>
+<p>
+ However, throwing an exception might not always be the desirable behavior (not
+ to mention the heaviness of the <span class="emphasis"><em>try/catch</em></span> interface which
+ does not seem exactly fitting on such a low level).
+ </p>
+<p>
+ More so, some classes might fail to meet that requirement for the Target type
+ to be <span class="emphasis"><em>DefaultConstructible</em></span>. The following <span class="emphasis"><em>direction</em></span>
+ class is one such example. It has only two (<span class="emphasis"><em>direction::up</em></span>
+ and <span class="emphasis"><em>direction::dn</em></span>) states available (i.e. no "spare"
+ values to indicate conversion failure) and is not <span class="emphasis"><em>DefaultConstructible</em></span>:
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">direction</span>
+<span class="special">{</span>
+ <span class="keyword">enum</span> <span class="identifier">value_type</span> <span class="special">{</span> <span class="identifier">up</span><span class="special">,</span> <span class="identifier">dn</span> <span class="special">};</span>
+ <span class="identifier">direction</span><span class="special">(</span><span class="identifier">value_type</span> <span class="identifier">value</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">value_</span><span class="special">(</span><span class="identifier">value</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="keyword">private</span><span class="special">:</span> <span class="identifier">value_type</span> <span class="identifier">value_</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ For such a class the call below will not compile (due to the <span class="emphasis"><em>DefaultConstructible</em></span>
+ Target type requirement):
+ </p>
+<pre class="programlisting"><span class="identifier">direction</span> <span class="identifier">dir</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">direction</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">str</span><span class="special">);</span> <span class="comment">// Does not compile
+</span></pre>
+<p>
+ More so, the following is no good either as it does not provide a reliable
+ detection of a conversion failure:
+ </p>
+<pre class="programlisting"><span class="identifier">direction</span> <span class="identifier">dir</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">direction</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">str</span><span class="special">,</span> <span class="identifier">direction</span><span class="special">::</span><span class="identifier">up</span><span class="special">);</span>
+
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">dir</span> <span class="special">==</span> <span class="identifier">up_dir</span><span class="special">)</span> <span class="special">...</span> <span class="comment">// Was it a failure or a successful "up" conversion?
+</span></pre>
+<p>
+ For situations like that the library provides the following interface:
+ </p>
+<pre class="programlisting"><span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">direction</span><span class="special">&gt;::</span><span class="identifier">result</span> <span class="identifier">res</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">direction</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">str</span><span class="special">,</span> <span class="identifier">up_dir</span><span class="special">);</span>
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">res</span><span class="special">)</span> <span class="identifier">conversion</span> <span class="identifier">succeeded</span>
+<span class="keyword">if</span> <span class="special">(!</span><span class="identifier">res</span><span class="special">)</span> <span class="identifier">conversion</span> <span class="identifier">failed</span>
+<span class="identifier">direction</span> <span class="identifier">dir</span> <span class="special">=</span> <span class="identifier">res</span><span class="special">.</span><span class="identifier">value</span><span class="special">();</span> <span class="comment">// Retrieve the conversion result
+</span></pre>
+<p>
+ The <span class="emphasis"><em>convert::result</em></span> class has an implicit safe-bool conversion
+ operator that allows to check the success of the conversion. The actual result
+ of the conversion is retrieved with <span class="emphasis"><em>convert::result::value()</em></span>.
+ </p>
+<p>
+ That same <span class="emphasis"><em>convert::result</em></span> could be deployed to work around
+ the throwing behavior of the <span class="emphasis"><em>lexical_cast</em></span>-like interface:
+ </p>
+<pre class="programlisting"><span class="comment">// This call does not throw.
+</span><span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">result</span> <span class="identifier">res</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="string">"not an int"</span><span class="special">);</span>
+<span class="comment">// An attempt to retrieve a failed-conversion value will throw.
+</span><span class="keyword">int</span> <span class="identifier">i1</span> <span class="special">=</span> <span class="identifier">res</span><span class="special">.</span><span class="identifier">value</span><span class="special">();</span>
+<span class="comment">// Check the success first and retrieve the value if available.
+</span><span class="keyword">int</span> <span class="identifier">i2</span> <span class="special">=</span> <span class="identifier">res</span> <span class="special">?</span> <span class="identifier">res</span><span class="special">.</span><span class="identifier">value</span><span class="special">()</span> <span class="special">:</span> <span class="special">-</span><span class="number">1</span><span class="special">;</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_started.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_two_behavioral.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/the_convert_library/convert_direct.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/the_convert_library/convert_direct.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Accessing Converters Directly</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="convert_algorithms.html" title="Using Boost.Convert with Standard Algorithms">
+<link rel="next" href="convert_more_converters.html" title="More About Converters, Customization, Optimization and Performance">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_algorithms.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_more_converters.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_convert_library.convert_direct"></a><a class="link" href="convert_direct.html" title="Accessing Converters Directly">Accessing Converters
+ Directly</a>
+</h2></div></div></div>
+<p>
+ What happens when <span class="emphasis"><em>Boost.Convert</em></span> is used with algorithms
+ is that <span class="emphasis"><em>convert::from()</em></span> returns a configured converter
+ which is then fed to an algorithm. Those converters can be explicitly deployed
+ outside algorithms. For example,
+ </p>
+<pre class="programlisting"><span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">converter</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;</span> <span class="identifier">hex_cvt</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;()</span> <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">hex</span><span class="special">;</span>
+<span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">converter</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;</span> <span class="identifier">dec_cvt</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">string</span><span class="special">(),</span> <span class="special">-</span><span class="number">1</span><span class="special">);</span>
+<span class="comment">// convert&lt;int&gt;::converter&lt;string&gt; dec_cvt = convert&lt;int&gt;::from&lt;string&gt;()(fallback_ = -1); // Same as above
+</span>
+<span class="keyword">int</span> <span class="identifier">dec_result11</span> <span class="special">=</span> <span class="identifier">dec_cvt</span><span class="special">(</span><span class="string">"F"</span><span class="special">);</span> <span class="comment">// Conversion fails
+</span><span class="keyword">int</span> <span class="identifier">hex_result21</span> <span class="special">=</span> <span class="identifier">hex_cvt</span><span class="special">(</span><span class="string">"F"</span><span class="special">);</span> <span class="comment">// Conversion succeeds
+</span><span class="keyword">int</span> <span class="identifier">dec_result12</span> <span class="special">=</span> <span class="identifier">dec_cvt</span><span class="special">(</span><span class="string">"10"</span><span class="special">);</span> <span class="comment">// Returns 10
+</span><span class="keyword">int</span> <span class="identifier">hex_result22</span> <span class="special">=</span> <span class="identifier">hex_cvt</span><span class="special">(</span><span class="string">"10"</span><span class="special">);</span> <span class="comment">// Returns 16
+</span>
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span><span class="identifier">dec_result11</span> <span class="special">==</span> <span class="special">-</span><span class="number">1</span><span class="special">);</span> <span class="comment">// Failed conversion
+</span><span class="identifier">BOOST_ASSERT</span><span class="special">(</span><span class="identifier">dec_result12</span> <span class="special">==</span> <span class="number">10</span><span class="special">);</span>
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span><span class="identifier">hex_result21</span> <span class="special">==</span> <span class="number">15</span><span class="special">);</span>
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span><span class="identifier">hex_result22</span> <span class="special">==</span> <span class="number">16</span><span class="special">);</span>
+</pre>
+<p>
+ A possible advantage of such a direct deployment might be that a converter
+ is configured once and then re-used by apllying the same conversion to a series
+ of values (as it is done with algorithms).
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_algorithms.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_more_converters.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/the_convert_library/convert_formatted.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/the_convert_library/convert_formatted.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,87 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Formatted Conversions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="convert_modified.html" title="Modifying Throwing Behavior">
+<link rel="next" href="convert_locale.html" title="Locale-Based Conversions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_modified.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_locale.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_convert_library.convert_formatted"></a><a class="link" href="convert_formatted.html" title="Formatted Conversions">Formatted Conversions</a>
+</h2></div></div></div>
+<p>
+ An important part of string-to-type and type-to-string conversions is formatting.
+ Currently <span class="emphasis"><em>Boost.Convert</em></span> provides that functionality by
+ deploying the standard <span class="emphasis"><em>std::stream</em></span>-based formatting engine
+ and familiar <span class="emphasis"><em>std::stream</em></span>-based manipulators. For example,
+ </p>
+<pre class="programlisting"><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">hex_str</span> <span class="special">=</span> <span class="string">"FF"</span><span class="special">;</span> <span class="comment">// 255 in decimal
+</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">double_str</span> <span class="special">=</span> <span class="string">"1.2345e-02"</span><span class="special">;</span>
+
+<span class="comment">// This call fails
+</span><span class="keyword">int</span> <span class="identifier">bad</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">hex_str</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">);</span>
+<span class="comment">// Apply hex formatting while converting from string
+</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">hex_str</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">)</span> <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">hex</span><span class="special">;</span>
+<span class="comment">// Apply hex, uppercase, showbase formatting while converting to string
+</span><span class="identifier">string</span> <span class="identifier">si</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">i</span><span class="special">)</span>
+ <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">showbase</span> <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">uppercase</span> <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">hex</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">double_str</span><span class="special">)</span>
+ <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="number">4</span><span class="special">)</span> <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">scientific</span><span class="special">;</span>
+<span class="identifier">string</span> <span class="identifier">sd</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">d</span><span class="special">)</span>
+ <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="number">4</span><span class="special">)</span> <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">scientific</span><span class="special">;</span>
+
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span><span class="identifier">bad</span> <span class="special">==</span> <span class="special">-</span><span class="number">1</span><span class="special">);</span> <span class="comment">// Failed decimal conversion from "FF"
+</span><span class="identifier">BOOST_ASSERT</span><span class="special">(</span><span class="identifier">i</span> <span class="special">==</span> <span class="number">255</span><span class="special">);</span> <span class="comment">// Successful hex conversion from "FF"
+</span><span class="identifier">BOOST_ASSERT</span><span class="special">(</span><span class="identifier">si</span> <span class="special">==</span> <span class="string">"0XFF"</span><span class="special">);</span>
+<span class="identifier">BOOST_ASSERT</span><span class="special">(</span><span class="identifier">sd</span> <span class="special">==</span> <span class="identifier">double_str</span><span class="special">);</span>
+</pre>
+<p>
+ Here, <span class="emphasis"><em>convert</em></span>-based formatting is no better (or worse)
+ than the standard <span class="emphasis"><em>std::stream</em></span>-based formatting. In fact,
+ under the hood it <span class="emphasis"><em>is</em></span> <span class="emphasis"><em>std::stream</em></span>-based.
+ For many basic formatting tasks it is entirely sufficient and it might be adequate
+ for some more complex formatting tasks. Hard-to-deny advantages of that formatting
+ engine are the familiar interface and deployment (it's not called <span class="emphasis"><em>standard</em></span>
+ for nothing), instant re-use of available standard manipulators (like <span class="emphasis"><em>std::hex</em></span>,
+ etc.), extendibility (if one is familiar writing custom manipulators (see
+ <a href="http://www.cecalc.ula.ve/documentacion/tutoriales/PGICDK/doc/pgC++_lib/stdlibug/str_5412.htm" target="_top">"Stream
+ Storage for Private Use: iword, pword, and xalloc" by Rogue Wave Software</a>)).
+ </p>
+<p>
+ That said, extending and customizing <span class="emphasis"><em>std::stream</em></span>-based
+ formatting might not be for everyone and <span class="emphasis"><em>Boost.Convert</em></span>
+ should not be looked at as of any kind of a serious formatter. For serious
+ formatting one should be looking at deploying comprehensive parsing and formatting
+ libraries of their choice (say, <span class="emphasis"><em>Boost.Spirit</em></span> might be
+ a worthy contender). Still, one does not need a big cannon for shooting ducks
+ (not that I approve such an activity) as one does not need a comprehensive
+ formatter when all that is needed is:
+ </p>
+<pre class="programlisting"><span class="identifier">string</span> <span class="identifier">s</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">i</span><span class="special">)</span> <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">hex</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">double_str</span><span class="special">)</span> <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">scientific</span><span class="special">;</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_modified.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_locale.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/the_convert_library/convert_integration.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/the_convert_library/convert_integration.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,87 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Integration of User-Defined Types</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="convert_requirements.html" title="Requirements on the Argument and Result Types">
+<link rel="next" href="convert_modified.html" title="Modifying Throwing Behavior">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_requirements.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_modified.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_convert_library.convert_integration"></a><a class="link" href="convert_integration.html" title="Integration of User-Defined Types">Integration of
+ User-Defined Types</a>
+</h2></div></div></div>
+<p>
+ The mechanism for integrating a user-defined type into the <span class="emphasis"><em>Boost.Convert</em></span>
+ framework is the same as for <span class="emphasis"><em>boost::lexical_cast</em></span>. That
+ is, the class needs to be <span class="emphasis"><em>InputStreamable</em></span> and <span class="emphasis"><em>OutputStreamable</em></span>
+ with the following operators defined (see the <span class="emphasis"><em>lexical_cast</em></span>
+ documentation for more information):
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">&gt;&gt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&amp;</span> <span class="identifier">stream</span><span class="special">,</span> <span class="identifier">Type</span><span class="special">&amp;);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">&lt;&lt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">stream</span><span class="special">,</span> <span class="identifier">Type</span> <span class="keyword">const</span><span class="special">&amp;);</span>
+</pre>
+<p>
+ For example,
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">direction</span>
+<span class="special">{</span>
+ <span class="keyword">enum</span> <span class="identifier">value_type</span> <span class="special">{</span> <span class="identifier">up</span><span class="special">,</span> <span class="identifier">dn</span> <span class="special">};</span>
+
+ <span class="identifier">direction</span><span class="special">(</span><span class="identifier">value_type</span> <span class="identifier">value</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">value_</span><span class="special">(</span><span class="identifier">value</span><span class="special">)</span> <span class="special">{}</span>
+ <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span><span class="identifier">direction</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">that</span><span class="special">)</span> <span class="identifier">cont</span>
+ <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">value_</span> <span class="special">==</span> <span class="identifier">that</span><span class="special">.</span><span class="identifier">value_</span><span class="special">;</span> <span class="special">}</span>
+
+ <span class="keyword">friend</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">&gt;&gt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&amp;,</span> <span class="identifier">direction</span><span class="special">&amp;)</span>
+ <span class="keyword">friend</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">&lt;&lt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;,</span> <span class="identifier">direction</span> <span class="keyword">const</span><span class="special">&amp;);</span>
+
+ <span class="keyword">private</span><span class="special">:</span> <span class="identifier">value_type</span> <span class="identifier">value_</span><span class="special">;</span>
+<span class="special">};</span>
+
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">&gt;&gt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&amp;</span> <span class="identifier">stream</span><span class="special">,</span> <span class="identifier">direction</span><span class="special">&amp;</span> <span class="identifier">dir</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">string</span> <span class="identifier">str</span><span class="special">;</span>
+ <span class="identifier">stream</span> <span class="special">&gt;&gt;</span> <span class="identifier">str</span><span class="special">;</span>
+ <span class="comment">/**/</span> <span class="keyword">if</span> <span class="special">(</span><span class="identifier">str</span> <span class="special">==</span> <span class="string">"up"</span><span class="special">)</span> <span class="identifier">dir</span><span class="special">.</span><span class="identifier">value_</span> <span class="special">=</span> <span class="identifier">up</span><span class="special">;</span>
+ <span class="keyword">else</span> <span class="keyword">if</span> <span class="special">(</span><span class="identifier">str</span> <span class="special">==</span> <span class="string">"dn"</span><span class="special">)</span> <span class="identifier">dir</span><span class="special">.</span><span class="identifier">value_</span> <span class="special">=</span> <span class="identifier">dn</span><span class="special">;</span>
+ <span class="keyword">else</span> <span class="identifier">stream</span><span class="special">.</span><span class="identifier">setstate</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ios_base</span><span class="special">::</span><span class="identifier">failbit</span><span class="special">);</span>
+
+ <span class="keyword">return</span> <span class="identifier">stream</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">&lt;&lt;(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">stream</span><span class="special">,</span> <span class="identifier">direction</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">dir</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">stream</span> <span class="special">&lt;&lt;</span> <span class="special">(</span><span class="identifier">dir</span><span class="special">.</span><span class="identifier">value_</span> <span class="special">==</span> <span class="identifier">up</span> <span class="special">?</span> <span class="string">"up"</span> <span class="special">:</span> <span class="string">"dn"</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ That allows handling conversions of user-defined types uniformly via <span class="emphasis"><em>boost::convert</em></span>
+ interface:
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">str</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">);</span>
+<span class="identifier">direction</span> <span class="identifier">d</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">direction</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">str</span><span class="special">,</span> <span class="identifier">direction</span><span class="special">::</span><span class="identifier">up</span><span class="special">);</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_requirements.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_modified.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/the_convert_library/convert_locale.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/the_convert_library/convert_locale.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,69 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Locale-Based Conversions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="convert_formatted.html" title="Formatted Conversions">
+<link rel="next" href="convert_string.html" title="String-To-String Conversions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_formatted.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_string.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_convert_library.convert_locale"></a><a class="link" href="convert_locale.html" title="Locale-Based Conversions">Locale-Based Conversions</a>
+</h2></div></div></div>
+<p>
+ Locales are deployed in a similar fashion:
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">conversion</span><span class="special">::</span><span class="identifier">parameter</span><span class="special">;</span>
+
+<span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">double_str</span> <span class="special">=</span> <span class="string">"1.2345e-02"</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">double_str</span><span class="special">)</span>
+ <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="number">4</span><span class="special">)</span>
+ <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">scientific</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">eng_locale</span> <span class="special">(</span><span class="string">""</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">rus_locale</span> <span class="special">(</span><span class="string">"ru_RU.UTF-8"</span><span class="special">);</span> <span class="comment">// Linux-style locale
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">rus_locale</span> <span class="special">(</span><span class="string">"Russian_Russia.1251"</span><span class="special">);</span> <span class="comment">// Windows-style locale
+</span>
+<span class="comment">// Convert double to a string using Russian locale.
+</span><span class="identifier">string</span> <span class="identifier">d1</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">d</span><span class="special">)(</span><span class="identifier">locale_</span> <span class="special">=</span> <span class="identifier">rus_locale</span><span class="special">)</span>
+ <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="number">4</span><span class="special">)</span>
+ <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">scientific</span><span class="special">;</span>
+<span class="comment">// Convert double to a string using English locale.
+</span><span class="identifier">string</span> <span class="identifier">d2</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">d</span><span class="special">)(</span><span class="identifier">locale_</span> <span class="special">=</span> <span class="identifier">eng_locale</span><span class="special">)</span>
+ <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="number">4</span><span class="special">)</span>
+ <span class="special">&gt;&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">scientific</span><span class="special">;</span>
+
+<span class="identifier">printf</span><span class="special">(</span><span class="string">"rus locale: %s. %s.\n"</span><span class="special">,</span> <span class="identifier">rus_locale</span><span class="special">.</span><span class="identifier">name</span><span class="special">().</span><span class="identifier">c_str</span><span class="special">(),</span> <span class="identifier">d1</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">());</span>
+<span class="identifier">printf</span><span class="special">(</span><span class="string">"eng locale: %s. %s.\n"</span><span class="special">,</span> <span class="identifier">eng_locale</span><span class="special">.</span><span class="identifier">name</span><span class="special">().</span><span class="identifier">c_str</span><span class="special">(),</span> <span class="identifier">d2</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">());</span>
+</pre>
+<p>
+ For the current locale being "en_AU" the code above will produce
+ the following output (the difference is the comma or the dot between '1' and
+ '2'):
+ </p>
+<pre class="programlisting"><span class="identifier">rus</span> <span class="identifier">locale</span><span class="special">:</span> <span class="identifier">ru_RU</span><span class="special">.</span><span class="identifier">UTF</span><span class="special">-</span><span class="number">8.</span> <span class="number">1</span><span class="special">,</span><span class="number">2345e-02</span><span class="special">.</span>
+<span class="identifier">eng</span> <span class="identifier">locale</span><span class="special">:</span> <span class="identifier">en_AU</span><span class="special">.</span><span class="identifier">UTF</span><span class="special">-</span><span class="number">8.</span> <span class="number">1.2345e-02</span><span class="special">.</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_formatted.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_string.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/the_convert_library/convert_modified.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/the_convert_library/convert_modified.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,76 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Modifying Throwing Behavior</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="convert_integration.html" title="Integration of User-Defined Types">
+<link rel="next" href="convert_formatted.html" title="Formatted Conversions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_integration.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_formatted.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_convert_library.convert_modified"></a><a class="link" href="convert_modified.html" title="Modifying Throwing Behavior">Modifying Throwing
+ Behavior</a>
+</h2></div></div></div>
+<p>
+ In the previous <span class="emphasis"><em>direction</em></span>-related examples the non-throwing
+ (by default) interface might have been used out of necessity as the throw-on-failure
+ interface could not be deployed due to lack of the default constructor. Still,
+ the throw-on-failure behavior might be the preferred choice. There are two
+ ways to achieve that:
+ </p>
+<pre class="programlisting"><span class="keyword">try</span>
+<span class="special">{</span>
+ <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">direction</span><span class="special">&gt;::</span><span class="identifier">result</span> <span class="identifier">res</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">direction</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">str</span><span class="special">,</span> <span class="identifier">direction</span><span class="special">::</span><span class="identifier">up</span><span class="special">);</span>
+ <span class="keyword">if</span> <span class="special">(!</span><span class="identifier">res</span><span class="special">)</span> <span class="keyword">throw</span> <span class="identifier">an</span> <span class="identifier">exception</span> <span class="identifier">of</span> <span class="identifier">your</span> <span class="identifier">choice</span>
+ <span class="special">...</span>
+<span class="special">}</span>
+<span class="keyword">catch</span> <span class="special">(</span><span class="identifier">exception</span><span class="special">-</span><span class="identifier">of</span><span class="special">-</span><span class="identifier">your</span><span class="special">-</span><span class="identifier">choice</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">ex</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Process conversion failure
+</span><span class="special">}</span>
+</pre>
+<p>
+ or alternatively
+ </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">convert</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">conversion</span><span class="special">::</span><span class="identifier">parameter</span><span class="special">;</span>
+
+<span class="keyword">try</span>
+<span class="special">{</span>
+ <span class="identifier">direction</span> <span class="identifier">dir</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">direction</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">str</span><span class="special">,</span> <span class="identifier">up_dir</span><span class="special">)(</span><span class="identifier">throw_</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">);</span>
+ <span class="special">...</span>
+<span class="special">}</span>
+<span class="keyword">catch</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">invalid_argument</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">ex</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="special">...</span> <span class="comment">// Process conversion failure
+</span><span class="special">}</span>
+</pre>
+<p>
+ The additional <span class="emphasis"><em>(throw_ = true)</em></span> directive changes the default
+ behavior and forces to throw a <span class="emphasis"><em>std::invalid_argument</em></span> if
+ the conversion fails.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_integration.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_formatted.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/the_convert_library/convert_more_converters.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/the_convert_library/convert_more_converters.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,85 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>More About Converters, Customization, Optimization and Performance</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="convert_direct.html" title="Accessing Converters Directly">
+<link rel="next" href="../convert_reference.html" title="Convert Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_direct.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../convert_reference.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_convert_library.convert_more_converters"></a><a class="link" href="convert_more_converters.html" title="More About Converters, Customization, Optimization and Performance">More About
+ Converters, Customization, Optimization and Performance</a>
+</h2></div></div></div>
+<p>
+ As have already been mentioned <span class="emphasis"><em>convert::from()</em></span> returns
+ a configured implementation-defined converter for the specified <span class="emphasis"><em>TypeIn-TypeOut</em></span>
+ conversion pair. Those type converters are the underlying engine of the <span class="emphasis"><em>Boost.Convert</em></span>
+ framework and are largely remain hidden behind the <span class="emphasis"><em>convert::from()</em></span>
+ on one end and the <span class="emphasis"><em>convert::result</em></span> on the other end (unless
+ one decides to manipulate those converters directly as discussed in the previous
+ section).
+ </p>
+<p>
+ That said, those converters do advertise themselves by providing the bulk of
+ the conversion and behavior configuration interface that is applicable for
+ the respective <span class="emphasis"><em>TypeIn-TypeOut</em></span> conversion pair. Like
+ </p>
+<pre class="programlisting"><span class="identifier">converter</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">throw_</span><span class="special">),</span>
+<span class="identifier">converter</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">locale_</span><span class="special">),</span>
+<span class="identifier">converter</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">fallback_</span><span class="special">)</span>
+<span class="identifier">converter</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">&gt;&gt;(</span><span class="identifier">Manipulator</span><span class="special">)</span>
+</pre>
+<p>
+ interfaces discussed previously are, in fact, provided by those converters
+ (where applicable). That is a peculiarity of the <span class="emphasis"><em>Boost.Convert</em></span>
+ framework -- itself it defines very limited -- <span class="emphasis"><em>convert::from()</em></span>
+ and <span class="emphasis"><em>convert::result</em></span> -- interface. The remaining (possibly
+ quite extensive) interface is implementation-defined and is provided by the
+ respective <span class="emphasis"><em>TypeIn-TypeOut</em></span> converters.
+ </p>
+<p>
+ For example, in its current implementation <span class="emphasis"><em>Boost.Convert</em></span>
+ provides a generic <span class="emphasis"><em>string-to-type</em></span> converter and its optimized
+ "specialization" for <span class="emphasis"><em>string-to-bool</em></span> conversions.
+ Admittedly, the <span class="emphasis"><em>string-to-bool</em></span> converter is quite experimental
+ (and probably insufficient). However, it does demonstrate the idea of optimization
+ and customization.
+ </p>
+<p>
+ When the generic <span class="emphasis"><em>string-to-type</em></span> converter is <span class="emphasis"><em>std::stream</em></span>-based
+ (with everything else following), the <span class="emphasis"><em>string-to-bool</em></span> converter
+ is lean and unsofisticated (and considerably more efficient). It does not accept
+ any manipulators and is not even <span class="emphasis"><em>std::stream</em></span>-based. It
+ only accepts, "1, yes, true" or "0, no, false" as input.
+ </p>
+<p>
+ Consequently, new converters can be written for new and existing <span class="emphasis"><em>TypeIn-TypeOut</em></span>
+ conversion pairs with functionality or performance in mind; incorporated into
+ the Boost.Convert framework and, then, deployed uniformly via the Boost.Convert
+ interface.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_direct.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="../convert_reference.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/the_convert_library/convert_motivation.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/the_convert_library/convert_motivation.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,75 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Motivation</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="next" href="convert_started.html" title="Getting Started">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_started.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_convert_library.convert_motivation"></a><a class="link" href="convert_motivation.html" title="Motivation">Motivation</a>
+</h2></div></div></div>
+<p>
+ My project used textual configuration files extensively and was processing
+ and preparing considerable amounts of data in XML for interprocess communications
+ (tasks fairly common these days). Consequently, I had a need for a library
+ that would provide unifying and extendable interface to convert various data
+ between their 'native' (internal to an application) binary representations
+ and external (predominantly textual, string-based) representations.
+ </p>
+<p>
+ The <span class="emphasis"><em>boost::lexical_cast</em></span> library (with its orthogonal design
+ and extendable deployment) looked very promising and was by far the preferred
+ candidate compared to others (such as C functions, the <span class="emphasis"><em>std::stringstream</em></span>,
+ etc., see <a href="http://www.gotw.ca/publications/mill19.htm" target="_top">The String
+ Formatters of Manor Farm by H. Sutter</a> for the discussion of alternatives).
+ </p>
+<p>
+ Unfortunately, many user types/classes did not meet <span class="emphasis"><em>lexical_cast</em></span>
+ requirements; the <span class="emphasis"><em>lexical_cast</em></span> behavior of throwing an
+ exception for a conversion failure was difficult to work with; additional conversion
+ formatting and locale support were needed, etc.
+ </p>
+<p>
+ After discussions with Kevlin Henney (the <span class="emphasis"><em>lexical_cast</em></span>
+ author) and in the Boost Developers forum it was collectively decided that
+ the requested extensions were not compatible with the idea of what <span class="emphasis"><em>lexical_cast</em></span>
+ embodied and a dedicated family of conversion functions with richer interfaces
+ was needed. That decision resulted in the development and the subsequent submission
+ of the <span class="emphasis"><em>Boost.Convert</em></span> library described in this document.
+ </p>
+<p>
+ <span class="emphasis"><em>Boost.Convert</em></span> was born out of the need for string-to-type
+ and type-to-string conversions and due to limitations of <span class="emphasis"><em>boost::lexical_cast</em></span>.
+ However, <span class="emphasis"><em>Boost.Convert</em></span> interface is intentionally generic
+ to accommodate any type-to-type conversions if needed. Judging from <a href="http://www.boostpro.com/vault/index.php?action=downloadfile&amp;filename=conversion.zip&amp;directory=Utilities&amp;" target="_top">the
+ Conversion Library submission by Vicente Botet (currently in the Boost Review
+ Queue)</a> such a need might indeed exist. If so, such functionality can
+ be implemented within the <span class="emphasis"><em>Boost.Convert</em></span> framework and
+ accessed uniformly via <span class="emphasis"><em>Boost.Convert</em></span> interface.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_started.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/the_convert_library/convert_requirements.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/the_convert_library/convert_requirements.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,59 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Requirements on the Argument and Result Types</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="convert_two_behavioral.html" title="Two Behavioral Policies">
+<link rel="next" href="convert_integration.html" title="Integration of User-Defined Types">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_two_behavioral.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_integration.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_convert_library.convert_requirements"></a><a class="link" href="convert_requirements.html" title="Requirements on the Argument and Result Types">Requirements
+ on the Argument and Result Types</a>
+</h2></div></div></div>
+<p>
+ At present string-to-type and type-to-string conversions are <span class="emphasis"><em>std::stream</em></span>-based
+ (as <span class="emphasis"><em>boost::lexical_cast</em></span> is) and, therefore, for those
+ conversions the requirements on the argument and result types are as follows:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ TypeIn is OutputStreamable of a string-related type - a char or wchar_t-based
+ container compatible with the <span class="emphasis"><em>boost::range</em></span> concept;
+ </li>
+<li class="listitem">
+ TypeOut is InputStreamable with a std::istream&amp; operator&gt;&gt;(std::istream&amp;,
+ TypeOut&amp;) defined;
+ </li>
+<li class="listitem">
+ TypeOut is CopyConstructible.
+ </li>
+<li class="listitem">
+ TypeOut is DefaultConstructible when the fallback return value is not provided
+ explicitly.
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_two_behavioral.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_integration.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/the_convert_library/convert_started.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/the_convert_library/convert_started.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,110 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Getting Started</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="convert_motivation.html" title="Motivation">
+<link rel="next" href="convert_better_conv.html" title="Better Conversion-Failure Check With convert&lt;&gt;::result">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_motivation.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_better_conv.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_convert_library.convert_started"></a><a class="link" href="convert_started.html" title="Getting Started">Getting Started</a>
+</h2></div></div></div>
+<p>
+ In its simplest form the conversion functionality is typically deployed as
+ follows:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">convert</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">convert</span><span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">i1</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">str</span><span class="special">);</span> <span class="comment">// Throws if the conversion fails
+</span><span class="keyword">int</span> <span class="identifier">i2</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">str</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">);</span> <span class="comment">// Returns -1 if the conversion fails
+</span></pre>
+<p>
+ For those familiar with <span class="emphasis"><em>boost::lexical_cast</em></span> the first
+ deployment should look identical and as a drop-in replacement for <span class="emphasis"><em>lexical_cast&lt;int&gt;(str)</em></span>.
+ The requirements for the Target/Destination type (<span class="emphasis"><em>int</em></span>
+ in the example above) and the behavior of <span class="emphasis"><em>boost::convert</em></span>
+ are the same as for <span class="emphasis"><em>boost::lexical_cast</em></span>. Namely, when
+ the requested conversion fails, an exception is thrown as there is no other
+ way to indicate a conversion failure.
+ </p>
+<p>
+ The second interface takes a default/fallback value (the second parameter).
+ That value is returned if/when the requested conversion fails. Often the fact
+ of returning the provided fallback value can uniquely identify conversion failure.
+ Consequently, by default this second interface does not throw.
+ </p>
+<p>
+ Additionally, as an already constructed (fallback) object is provided explicitly,
+ the latter interface does not impose the <span class="emphasis"><em>DefaultConstructibility</em></span>
+ requirement on to the Target type. That might be quite a deal-breaker for user-defined
+ types that do not have default constructors (see the <span class="emphasis"><em>direction</em></span>
+ example further).
+ </p>
+<p>
+ The described interface is sufficient and well-suited for a wide variety of
+ conversion deployments. For example, an application is expected to read external
+ configuration files, to convert and to incorporate those configuration settings.
+ The application needs to stay operational and to maintain its internal integrity
+ despite the not-too-remote possibility of reading invalid configuration settings.
+ A typical processing flow might be to read a new configuration parameter and
+ try converting it. If the conversion fails, then use some fallback value instead,
+ log an error message and move on. Like the following
+ </p>
+<pre class="programlisting"><span class="identifier">type1</span> <span class="identifier">p1</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">type1</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">string_value_1</span><span class="special">,</span> <span class="identifier">fallback_1</span><span class="special">);</span>
+<span class="identifier">type2</span> <span class="identifier">p2</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">type2</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">string_value_2</span><span class="special">,</span> <span class="identifier">fallback_2</span><span class="special">);</span>
+
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">p1</span> <span class="special">==</span> <span class="identifier">fallback_1</span><span class="special">)</span> <span class="identifier">message</span><span class="special">(</span><span class="string">"bad string_value_1"</span><span class="special">);</span>
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">p2</span> <span class="special">==</span> <span class="identifier">fallback_2</span><span class="special">)</span> <span class="identifier">message</span><span class="special">(</span><span class="string">"bad string_value_2"</span><span class="special">);</span>
+
+<span class="special">...</span> <span class="identifier">proceed</span> <span class="identifier">with</span> <span class="identifier">whatever</span> <span class="identifier">parameters</span> <span class="identifier">we</span><span class="error">'</span><span class="identifier">ve</span> <span class="identifier">got</span><span class="special">.</span>
+</pre>
+<p>
+ In these circumstances the deployment of <span class="emphasis"><em>boost::convert</em></span>
+ looks considerably more natural compared to <span class="emphasis"><em>boost::lexical_cast</em></span>
+ deployment which achieves that same result with
+ </p>
+<pre class="programlisting"><span class="identifier">type</span> <span class="identifier">p1</span> <span class="special">=</span> <span class="identifier">fallback_1</span><span class="special">;</span>
+
+<span class="keyword">try</span>
+<span class="special">{</span>
+ <span class="identifier">p1</span> <span class="special">=</span> <span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="identifier">type1</span><span class="special">&gt;(</span><span class="identifier">string_value_1</span><span class="special">);</span>
+<span class="special">}</span>
+<span class="keyword">catch</span> <span class="special">...</span>
+<span class="special">{</span>
+ <span class="identifier">message</span><span class="special">(</span><span class="string">"bad string_value_1"</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ In these circumstances (and quite often in general) a conversion failure is
+ not <span class="emphasis"><em>exceptional</em></span> enough to justify throwing an exception.
+ However, the constraints of the <span class="emphasis"><em>boost::lexical_cast</em></span> interface
+ seem to define the behavior (rather than the other way around) as the throw-on-failure
+ seems the only available choice to indicate conversion failure.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_motivation.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_better_conv.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/the_convert_library/convert_string.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/the_convert_library/convert_string.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,65 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>String-To-String Conversions</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="convert_locale.html" title="Locale-Based Conversions">
+<link rel="next" href="convert_algorithms.html" title="Using Boost.Convert with Standard Algorithms">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_locale.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_algorithms.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_convert_library.convert_string"></a><a class="link" href="convert_string.html" title="String-To-String Conversions">String-To-String Conversions</a>
+</h2></div></div></div>
+<p>
+ The string-to-string conversion is currently provided in a somewhat experimental
+ form as it is yet to be seen if such functionality is indeed generates much
+ interest. Still, I do not see the <span class="emphasis"><em>Boost.Convert</em></span> interface
+ unsuitable for conversions like
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">u8string</span> <span class="identifier">utf8</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">u8string</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">utf32_str</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">u8string</span> <span class="identifier">utf8</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">u8string</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">mbcs_str</span><span class="special">);</span>
+</pre>
+<p>
+ More so, a more practical (and not as remote) deployment of the string-to-string
+ conversion might be demonstrated by the following snippet (taken from the library
+ unit test):
+ </p>
+<pre class="programlisting"><span class="identifier">string</span> <span class="identifier">encrypted</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">naked_str</span><span class="special">)</span> <span class="special">&gt;&gt;</span> <span class="identifier">my_cypher</span><span class="special">;</span>
+<span class="identifier">string</span> <span class="identifier">decrypted</span> <span class="special">=</span> <span class="identifier">convert</span><span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;::</span><span class="identifier">from</span><span class="special">(</span><span class="identifier">encrypted_str</span><span class="special">)</span> <span class="special">&gt;&gt;</span> <span class="identifier">my_cypher</span><span class="special">;</span>
+</pre>
+<p>
+ Where <span class="emphasis"><em>my_cypher</em></span> is a custom manipulator with the following
+ signature
+ </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ios</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;&amp;</span> <span class="identifier">my_cypher</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ios</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;&amp;</span> <span class="identifier">stream</span><span class="special">)</span>
+</pre>
+<p>
+ With the above-mentioned manipulator applied <span class="emphasis"><em>boost::convert</em></span>
+ keeps the type (<span class="emphasis"><em>std::string</em></span>) of the source but changes
+ (encrypts or decrypts) its representation. See <span class="emphasis"><em>libs/convert/test/test_convert.cpp</em></span>
+ for the implementation of that manipulator.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_locale.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_algorithms.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/html/the_convert_library/convert_two_behavioral.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/html/the_convert_library/convert_two_behavioral.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,59 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Two Behavioral Policies</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Convert Library 1.0">
+<link rel="prev" href="convert_better_conv.html" title="Better Conversion-Failure Check With convert&lt;&gt;::result">
+<link rel="next" href="convert_requirements.html" title="Requirements on the Argument and Result Types">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_better_conv.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_requirements.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="the_convert_library.convert_two_behavioral"></a><a class="link" href="convert_two_behavioral.html" title="Two Behavioral Policies">Two Behavioral
+ Policies</a>
+</h2></div></div></div>
+<p>
+ The examples above demonstrate two interfaces behave differently with regard
+ to handling conversion failures. These two behavioral policies can be summarized
+ as follows:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ when the fallback value is provided, return the conversion result if successful,
+ otherwise return the provided fallback value;
+ </li>
+<li class="listitem">
+ when no fallback value provided, return the conversion result if successful,
+ otherwise throw (as there is nothing to return).
+ </li>
+</ol></div>
+<p>
+ Returning <span class="emphasis"><em>convert::result</em></span> does not change these behavior
+ but only <span class="emphasis"><em>delay</em></span> their application or execution. Namely,
+ an attempt to retrieve a value from a failed-to-convert <span class="emphasis"><em>convert::result</em></span>
+ will throw or return the provided fallback value depending on the form of the
+ conversion request used.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2009 -2011 Vladimir Batov<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="convert_better_conv.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="convert_requirements.html"><img src="../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/convert/libs/convert/doc/index.idx
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/doc/index.idx 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,2 @@
+!scan boost/convert/api.hpp
+

Added: sandbox/convert/libs/convert/index.html
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/index.html 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="refresh" content="0; URL=doc/html/index.html">
+<title>Boost.Convert Documentation</title>
+<link rel="stylesheet" href="doc/style.css" type="text/css">
+</head>
+
+<body>
+Automatic redirection failed, please go to
+doc/index.html
+ <p>
+ Copyright © 2009-2011 Vladimir Batov. Distributed under the Boost Software License, Version 1.0.
+See http://www.boost.org/LICENSE_1_0.txt.
+ </p>
+</body>
+</html></body>
+</html>

Added: sandbox/convert/libs/convert/test/Jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/test/Jamfile.v2 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,14 @@
+# Boost.Convert Library test Jamfile
+#
+# Copyright (c) 2009-2011 Vladimir Batov
+#
+# 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)
+
+# bring in rules for testing
+import testing ;
+
+test-suite "convert"
+ : [ run test_convert.cpp ]
+ ;

Added: sandbox/convert/libs/convert/test/test_convert.cpp
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/convert/test/test_convert.cpp 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,509 @@
+// Boost.Convert library test and usage example
+//
+// Copyright (c) 2009-2011 Vladimir Batov.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
+
+#include <boost.xtra/convert.hpp>
+#include <boost/array.hpp>
+#include <boost/bind.hpp>
+#include <iomanip>
+#include <vector>
+#include <list>
+
+using std::string;
+using std::wstring;
+using boost::array;
+using boost::convert;
+using namespace boost::conversion::parameter;
+
+std::basic_ios<char>&
+my_cypher(std::basic_ios<char>& stream)
+{
+ std::streambuf* buf = stream.rdbuf();
+ size_t cypher = 'A' - '1';
+ string data;
+
+ for (int c = 0; c = buf->sbumpc(), c != EOF; data += c);
+
+ for (string::iterator it = data.begin(); it != data.end(); ++it)
+ {
+ *it < 'A' ? buf->sputc(*it += cypher) : buf->sputc(*it -= cypher);
+ }
+ return stream;
+}
+
+struct direction
+{
+ // Note: the class does NOT have the default constructor.
+
+ enum value_type { up, dn };
+
+ direction(value_type value) : value_(value) {}
+ bool operator==(direction const& that) const { return value_ == that.value_; }
+
+ friend std::istream& operator>>(std::istream& stream, direction& dir)
+ {
+ string str; stream >> str;
+ /**/ if (str == "up") dir.value_ = up;
+ else if (str == "dn") dir.value_ = dn;
+ else stream.setstate(std::ios_base::failbit);
+
+ return stream;
+ }
+ friend std::ostream& operator<<(std::ostream& stream, direction const& dir)
+ {
+ return (stream << (dir.value_ == up ? "up" : "dn"));
+ }
+
+ private: value_type value_;
+};
+
+int
+main(int argc, char const* argv[])
+{
+ ////////////////////////////////////////////////////////////////////////////
+ // Test that SFINAE recognises string containers in their various forms.
+ ////////////////////////////////////////////////////////////////////////////
+
+ bool q01 = boost::convert_detail::is_any_string<std::string>::value;
+ bool q02 = boost::convert_detail::is_any_string<char const*>::value;
+ bool q03 = boost::convert_detail::is_any_string<std::wstring>::value;
+ bool q04 = boost::convert_detail::is_any_string<wchar_t const*>::value;
+ bool q05 = boost::convert_detail::is_any_string<char []>::value;
+ bool q06 = boost::convert_detail::is_any_string<wchar_t []>::value;
+ bool q07 = boost::convert_detail::is_any_string<std::vector<char> >::value;
+ bool q08 = boost::convert_detail::is_any_string<std::list<wchar_t> >::value;
+ bool q98 = boost::convert_detail::is_any_string<int>::value;
+ bool q99 = boost::convert_detail::is_any_string<direction>::value;
+
+ BOOST_ASSERT( q01);
+ BOOST_ASSERT( q02);
+ BOOST_ASSERT( q03);
+ BOOST_ASSERT( q04);
+ BOOST_ASSERT( q05);
+ BOOST_ASSERT( q06);
+ BOOST_ASSERT(!q07); // Original support withdrawn. So, evaluates to false.
+ BOOST_ASSERT(!q08); // Original support withdrawn. So, evaluates to false.
+ BOOST_ASSERT(!q98);
+ BOOST_ASSERT(!q99);
+
+ string not_int_str = "not an int";
+ string std_str = "-11";
+ char const* c_str = "-12";
+ string const const_std_str = "-13";
+ char const* const const_c_str = "-14";
+ wstring wstd_str = L"-15";
+ wchar_t const* wc_str = L"-16";
+ char array_str[] = "-17";
+ char const* container_str = "-18";
+ std::vector<char> vector_str (container_str, container_str + strlen(container_str));
+ std::list<char> list_str (container_str, container_str + strlen(container_str));
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Testing various kinds of string containers.
+ // Testing implicit conversion directly to TypeOut (int).
+ // Testing with the fallback value value provided.
+ // On failure returns the provided fallback value and DOES NOT THROW.
+ ////////////////////////////////////////////////////////////////////////////
+
+ int a001 = convert<int>::from(std_str, -1);
+ int a002 = convert<int>::from(c_str, -1);
+ int a003 = convert<int>::from(const_std_str, -1);
+ int a004 = convert<int>::from(const_c_str, -1);
+ int a005 = convert<int>::from(wstd_str, -1);
+ int a006 = convert<int>::from(wc_str, -1);
+ int a007 = convert<int>::from(array_str, -1);
+ int a008 = convert<int>::from(not_int_str, -1);
+// int a000 = convert<int>::from(vector_str, -1); support withdrawn
+// int a000 = convert<int>::from(list_str, -1); support withdrawn
+
+ BOOST_ASSERT(a001 == -11);
+ BOOST_ASSERT(a002 == -12);
+ BOOST_ASSERT(a003 == -13);
+ BOOST_ASSERT(a004 == -14);
+ BOOST_ASSERT(a005 == -15);
+ BOOST_ASSERT(a006 == -16);
+ BOOST_ASSERT(a007 == -17);
+ BOOST_ASSERT(a008 == -1); // Failed conversion
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Testing with the fallback value value provided.
+ // Testing implicit conversion to convert<TypeOut>::result.
+ // convert<>::result exhibits the SAME behavior, i.e.
+ // on failure it returns the provided fallback value and DOES NOT THROW.
+ ////////////////////////////////////////////////////////////////////////////
+
+ convert<int>::result r001 = convert<int>::from(std_str, -1);
+ convert<int>::result r002 = convert<int>::from(c_str, -1);
+ convert<int>::result r003 = convert<int>::from(const_std_str, -1);
+ convert<int>::result r004 = convert<int>::from(const_c_str, -1);
+ convert<int>::result r005 = convert<int>::from(wstd_str, -1);
+ convert<int>::result r006 = convert<int>::from(wc_str, -1);
+ convert<int>::result r007 = convert<int>::from(array_str, -1);
+ convert<int>::result r008 = convert<int>::from(not_int_str, -1);
+
+ BOOST_ASSERT( r001 && r001.value() == -11);
+ BOOST_ASSERT( r002 && r002.value() == -12);
+ BOOST_ASSERT( r003 && r003.value() == -13);
+ BOOST_ASSERT( r004 && r004.value() == -14);
+ BOOST_ASSERT( r005 && r005.value() == -15);
+ BOOST_ASSERT( r006 && r006.value() == -16);
+ BOOST_ASSERT( r007 && r007.value() == -17);
+ BOOST_ASSERT(!r008 && r008.value() == -1); // Failed conversion
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Testing without a fallback value provided.
+ // On failure it throws as there is nothing to return.
+ // Requires TypeOut to be DefaultConstructible.
+ ////////////////////////////////////////////////////////////////////////////
+
+ int a021 = convert<int>::from(std_str);
+ int a022 = convert<int>::from(c_str);
+ int a023 = convert<int>::from(const_std_str);
+ int a024 = convert<int>::from(const_c_str);
+ int a025 = convert<int>::from(wstd_str);
+ int a026 = convert<int>::from(wc_str);
+ int a027 = convert<int>::from(array_str);
+
+ BOOST_ASSERT(a021 == -11);
+ BOOST_ASSERT(a022 == -12);
+ BOOST_ASSERT(a023 == -13);
+ BOOST_ASSERT(a024 == -14);
+ BOOST_ASSERT(a025 == -15);
+ BOOST_ASSERT(a026 == -16);
+ BOOST_ASSERT(a027 == -17);
+
+ try
+ {
+ int a027 = convert<int>::from(not_int_str);
+ BOOST_ASSERT(!"failed to throw");
+ }
+ catch (std::exception&)
+ {
+ // Expected behavior: received 'boost::convert failed' exception. All well.
+ }
+ ////////////////////////////////////////////////////////////////////////////
+ // Testing convert<>::result interface.
+ // convert<>::result exhibits the SAME (but delayed) behavior, i.e.
+ // for failed conversion it throws on an attempt to retrieve the value
+ // as there is nothing to return.
+ ////////////////////////////////////////////////////////////////////////////
+
+ convert<int>::result r011 = convert<int>::from(std_str);
+ convert<int>::result r012 = convert<int>::from(c_str);
+ convert<int>::result r013 = convert<int>::from(const_std_str);
+ convert<int>::result r014 = convert<int>::from(const_c_str);
+ convert<int>::result r015 = convert<int>::from(wstd_str);
+ convert<int>::result r016 = convert<int>::from(wc_str);
+ convert<int>::result r017 = convert<int>::from(array_str);
+ convert<int>::result r018 = convert<int>::from(not_int_str);
+
+ BOOST_ASSERT( r011 && r011.value() == -11);
+ BOOST_ASSERT( r012 && r012.value() == -12);
+ BOOST_ASSERT( r013 && r013.value() == -13);
+ BOOST_ASSERT( r014 && r014.value() == -14);
+ BOOST_ASSERT( r015 && r015.value() == -15);
+ BOOST_ASSERT( r016 && r016.value() == -16);
+ BOOST_ASSERT( r017 && r017.value() == -17);
+ BOOST_ASSERT(!r018); // Failed conversion
+
+ try
+ {
+ int r018_value = r018.value(); // Throws on an attempt to retrieve the value.
+ BOOST_ASSERT(!"failed to throw");
+ }
+ catch (std::exception&)
+ {
+ // Expected behavior: received 'boost::convert failed' exception. All well.
+ }
+ ////////////////////////////////////////////////////////////////////////////
+ // Testing int-to-string conversion with various string
+ // containers as the fallback values.
+ ////////////////////////////////////////////////////////////////////////////
+
+ string s001 = convert< string>::from(-5, std_str);
+ string s002 = convert< string>::from(-5, c_str);
+ string s003 = convert< string>::from(-5, const_std_str);
+ string s004 = convert< string>::from(-5, const_c_str);
+ wstring s005 = convert<wstring>::from(-5, wstd_str);
+ wstring s006 = convert<wstring>::from(-5, wc_str);
+ string s007 = convert< string>::from(-5, array_str);
+ string s008 = convert< string>::from(-5, vector_str);
+ string s009 = convert< string>::from(-5, list_str);
+ convert< string>::result rs001 = convert< string>::from(-5, std_str);
+ convert< string>::result rs002 = convert< string>::from(-5, c_str);
+ convert< string>::result rs003 = convert< string>::from(-5, const_std_str);
+ convert< string>::result rs004 = convert< string>::from(-5, const_c_str);
+ convert<wstring>::result rs005 = convert<wstring>::from(-5, wstd_str);
+ convert<wstring>::result rs006 = convert<wstring>::from(-5, wc_str);
+ convert< string>::result rs007 = convert< string>::from(-5, array_str);
+ convert< string>::result rs008 = convert< string>::from(-5, vector_str);
+ convert< string>::result rs009 = convert< string>::from(-5, list_str);
+
+ BOOST_ASSERT(s001 == "-5"); BOOST_ASSERT(rs001 && rs001.value() == "-5");
+ BOOST_ASSERT(s002 == "-5"); BOOST_ASSERT(rs002 && rs002.value() == "-5");
+ BOOST_ASSERT(s003 == "-5"); BOOST_ASSERT(rs003 && rs003.value() == "-5");
+ BOOST_ASSERT(s004 == "-5"); BOOST_ASSERT(rs004 && rs004.value() == "-5");
+ BOOST_ASSERT(s005 == L"-5"); BOOST_ASSERT(rs005 && rs005.value() == L"-5");
+ BOOST_ASSERT(s006 == L"-5"); BOOST_ASSERT(rs006 && rs006.value() == L"-5");
+ BOOST_ASSERT(s007 == "-5"); BOOST_ASSERT(rs007 && rs007.value() == "-5");
+ BOOST_ASSERT(s008 == "-5"); BOOST_ASSERT(rs008 && rs008.value() == "-5");
+ BOOST_ASSERT(s009 == "-5"); BOOST_ASSERT(rs009 && rs009.value() == "-5");
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Testing int-to-string conversion with no fallback value.
+ ////////////////////////////////////////////////////////////////////////////
+
+ string s010 = convert< string>::from(-5);
+ wstring s011 = convert<wstring>::from(-5);
+ convert< string>::result rs010 = convert< string>::from(-5);
+ convert<wstring>::result rs011 = convert<wstring>::from(-5);
+
+ BOOST_ASSERT( s010 == "-5");
+ BOOST_ASSERT( s011 == L"-5");
+ BOOST_ASSERT(rs010 && rs010.value() == "-5");
+ BOOST_ASSERT(rs011 && rs011.value() == L"-5");
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Testing conversions of a user-defined type
+ ////////////////////////////////////////////////////////////////////////////
+
+ direction up_dir1 = direction::up;
+ direction dn_dir1 = direction::dn;
+ string up_dir1_str = convert<string>::from(up_dir1);
+ string dn_dir1_str = convert<string>::from(dn_dir1);
+ direction up_dir2 = convert<direction>::from(up_dir1_str, dn_dir1);
+ direction dn_dir2 = convert<direction>::from(dn_dir1_str, up_dir1);
+ direction up_dir3 = convert<direction>::from(up_dir1_str, direction::dn);
+ direction dn_dir3 = convert<direction>::from(dn_dir1_str, direction::up);
+// direction up_dir9 = convert<direction>::from(up_dir1_str); // Doesn't compile. No def.ctor
+// direction dn_dir9 = convert<direction>::from(dn_dir1_str); // Doesn't compile. No def.ctor
+
+ convert<direction>::result up_dir4 = convert<direction>::from("junk", dn_dir1);
+
+ BOOST_ASSERT(up_dir1_str == "up");
+ BOOST_ASSERT(dn_dir1_str == "dn");
+ BOOST_ASSERT(up_dir2 == up_dir1);
+ BOOST_ASSERT(dn_dir2 == dn_dir1);
+ BOOST_ASSERT(up_dir3 == direction::up);
+ BOOST_ASSERT(dn_dir3 == direction::dn);
+ BOOST_ASSERT(!up_dir4 && up_dir4.value() == direction::dn); // Failed conversion
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Testing explicitly specified throwing behavior.
+ ////////////////////////////////////////////////////////////////////////////
+ try
+ {
+ direction dir = convert<direction>::from("junk", direction::up)(throw_ = true);
+ BOOST_ASSERT(!"failed to throw");
+ }
+ catch (std::exception&)
+ {
+ // Expected behavior: received 'boost::convert failed' exception. All well.
+ }
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Testing formatters/manipulators
+ ////////////////////////////////////////////////////////////////////////////
+
+ string hex1_str = "0xFF"; // 255
+ wchar_t const* hex2_str = L"0xF"; // 15
+ char const* double_s01 = "1.2345e-02"; // Linux
+ char const* double_s02 = "1.2345e-002"; // Windows
+
+ int hex_v01 = convert< int>::from(hex1_str, 0) >> std::hex;
+ int hex_v02 = convert< int>::from(hex2_str, 0) >> std::hex;
+ string hex_s01 = convert<string>::from(hex_v01) >> std::showbase >> std::uppercase >> std::hex;
+ string hex_s02 = convert<string>::from(hex_v02) >> std::showbase >> std::uppercase >> std::hex;
+ double double_v01 = convert<double>::from(double_s01) >> std::setprecision(4) >> std::scientific;
+ string double_s03 = convert<string>::from(double_v01) >> std::setprecision(4) >> std::scientific;
+
+ BOOST_ASSERT(hex_v01 == 255);
+ BOOST_ASSERT(hex_v02 == 15);
+ BOOST_ASSERT(hex_s01 == "0XFF");
+ BOOST_ASSERT(hex_s02 == "0XF");
+ BOOST_ASSERT(double_s03 == double_s01 || double_s03 == double_s02);
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Testing locale
+ ////////////////////////////////////////////////////////////////////////////
+
+#if defined(_MSC_VER)
+ char const* rus_locale_name = "Russian_Russia.1251";
+ char const* rus_expected = "1,2345e-002";
+ char const* eng_expected = "1.2345e-002";
+#elif defined(__CYGWIN__)
+#error What is the locale name on Cygwin?
+#elif defined(__GNUC__)
+ char const* rus_locale_name = "ru_RU.UTF-8";
+ char const* rus_expected = "1,2345e-02";
+ char const* eng_expected = "1.2345e-02";
+#endif
+ try
+ {
+ std::locale rus_locale (rus_locale_name);
+ std::locale eng_locale ("");
+ string double_s02 = convert<string>::from(double_v01)(locale_ = rus_locale) >> std::setprecision(4) >> std::scientific;
+ string double_s03 = convert<string>::from(double_v01)(locale_ = eng_locale) >> std::setprecision(4) >> std::scientific;
+// printf("rus locale=%s, presentation=%s.\n", rus_locale.name().c_str(), double_s02.c_str());
+// printf("eng locale=%s, presentation=%s.\n", eng_locale.name().c_str(), double_s03.c_str());
+
+ BOOST_ASSERT(double_s02 == rus_expected);
+ BOOST_ASSERT(double_s03 == eng_expected);
+ }
+ catch (...)
+ {
+ printf("Test failed: bad locale %s.\n", rus_locale_name);
+ exit(1);
+ }
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Testing boost::convert with algorithms
+ ////////////////////////////////////////////////////////////////////////////
+
+ array<char const*, 5> strings = {{ "0XF", "0X10", "0X11", "0X12", "not int" }};
+ std::vector<int> integers;
+ std::vector<string> new_strings;
+
+ ////////////////////////////////////////////////////////////////////////////
+ // String to integer conversion
+ // No explicit fallback value parameter. i.e. throws on failure. Hex formatting.
+ ////////////////////////////////////////////////////////////////////////////
+ try
+ {
+ std::transform(
+ strings.begin(),
+ strings.end(),
+ std::back_inserter(integers),
+ convert<int>::from<string>() >> std::hex);
+
+ BOOST_ASSERT(!"failed to throw");
+ }
+ catch (std::exception&)
+ {
+ // Expected behavior: received 'boost::convert failed' exception. All well.
+ }
+ BOOST_ASSERT(integers[0] == 15);
+ BOOST_ASSERT(integers[1] == 16);
+ BOOST_ASSERT(integers[2] == 17);
+ BOOST_ASSERT(integers[3] == 18);
+
+ integers.clear();
+
+ ////////////////////////////////////////////////////////////////////////////
+ // String to integer conversion
+ // Explicit fallback parameter, i.e. no throwing. Hex formatting.
+ ////////////////////////////////////////////////////////////////////////////
+ std::transform(
+ strings.begin(),
+ strings.end(),
+ std::back_inserter(integers),
+ convert<int>::from<string>()(fallback_ = -1) >> std::hex);
+
+ BOOST_ASSERT(integers[0] == 15);
+ BOOST_ASSERT(integers[1] == 16);
+ BOOST_ASSERT(integers[2] == 17);
+ BOOST_ASSERT(integers[3] == 18);
+ BOOST_ASSERT(integers[4] == -1); // Failed conversion
+
+ ////////////////////////////////////////////////////////////////////////////
+ // int-to-string conversion. No explicit fallback value.
+ ////////////////////////////////////////////////////////////////////////////
+ std::transform(
+ integers.begin(),
+ integers.end(),
+ std::back_inserter(new_strings),
+ convert<string>::from<int>());
+
+ BOOST_ASSERT(new_strings[0] == "15");
+ BOOST_ASSERT(new_strings[1] == "16");
+ BOOST_ASSERT(new_strings[2] == "17");
+ BOOST_ASSERT(new_strings[3] == "18");
+ BOOST_ASSERT(new_strings[4] == "-1");
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Testing string-to-string conversion
+ ////////////////////////////////////////////////////////////////////////////
+
+ string s31 = convert< string>::from(std_str);
+ string s32 = convert< string>::from(c_str);
+ wstring s35 = convert<wstring>::from(wstd_str);
+ wstring s36 = convert<wstring>::from(wc_str);
+ string s37 = convert< string>::from(array_str);
+
+ BOOST_ASSERT(s31 == "-11");
+ BOOST_ASSERT(s32 == "-12");
+ BOOST_ASSERT(s35 == L"-15");
+ BOOST_ASSERT(s36 == L"-16");
+ BOOST_ASSERT(s37 == "-17");
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Testing custom manipulators.
+ // I do not really know how to write manipulators.
+ // Wrote my_cypher just to demonstrate the idea.
+ ////////////////////////////////////////////////////////////////////////////
+
+ string encrypted = convert<string>::from("ABC") >> my_cypher;
+ string decrypted = convert<string>::from(encrypted) >> my_cypher;
+
+ BOOST_ASSERT(encrypted == "123");
+ BOOST_ASSERT(decrypted == "ABC");
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Testing string-to-bool and bool-to-string conversions
+ ////////////////////////////////////////////////////////////////////////////
+
+ convert<bool>::result bool_res1 = convert<bool>::from("1", false);
+ convert<bool>::result bool_res2 = convert<bool>::from("true", false);
+ convert<bool>::result bool_res3 = convert<bool>::from("yes", false);
+ convert<bool>::result bool_res4 = convert<bool>::from(L"1", false);
+ convert<bool>::result bool_res5 = convert<bool>::from(L"true", false);
+ convert<bool>::result bool_res6 = convert<bool>::from(L"yes", false);
+ convert<bool>::result bool_res7 = convert<bool>::from("junk", true);
+
+ BOOST_ASSERT( bool_res1 && bool_res1.value() == true);
+ BOOST_ASSERT( bool_res2 && bool_res2.value() == true);
+ BOOST_ASSERT( bool_res3 && bool_res3.value() == true);
+ BOOST_ASSERT( bool_res4 && bool_res4.value() == true);
+ BOOST_ASSERT( bool_res5 && bool_res5.value() == true);
+ BOOST_ASSERT( bool_res6 && bool_res6.value() == true);
+ BOOST_ASSERT(!bool_res7 && bool_res7.value() == true);
+
+ string bool_str1 = convert<string>::from(true, "failed");
+ string bool_str2 = convert<string>::from(false, "failed");
+ string bool_str3 = convert<string>::from(1, "failed");
+ string bool_str4 = convert<string>::from(0, "failed");
+
+ BOOST_ASSERT(bool_str1 == "1");
+ BOOST_ASSERT(bool_str2 == "0");
+ BOOST_ASSERT(bool_str3 == "1");
+ BOOST_ASSERT(bool_str4 == "0");
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Testing direct access to converter.
+ // Converter is pre-configured (to apply hex) once and then re-used.
+ ////////////////////////////////////////////////////////////////////////////
+
+// convert<int>::converter<string> dec_cvt = convert<int>::from(string(), -1); // Same as below
+ convert<int>::converter<string> dec_cvt = convert<int>::from<string>()(fallback_ = -1);
+ convert<int>::converter<string> hex_cvt = convert<int>::from<string>() >> std::hex;
+
+ int cvt_result11 = dec_cvt("F"); // Conversion fails
+ int cvt_result21 = hex_cvt("F");
+ int cvt_result12 = dec_cvt("10"); // Returns 10
+ int cvt_result22 = hex_cvt("10"); // Returns 16
+
+ BOOST_ASSERT(cvt_result11 == -1); // Failed conversion
+ BOOST_ASSERT(cvt_result12 == 10);
+ BOOST_ASSERT(cvt_result21 == 15);
+ BOOST_ASSERT(cvt_result22 == 16);
+
+ ////////////////////////////////////////////////////////////////////////////
+ // Work in progress.
+ ////////////////////////////////////////////////////////////////////////////
+// convert<>::format format;
+
+ printf("Test completed successfully.\n");
+ return 0;
+}

Added: sandbox/convert/libs/project.vc++/convert/convert.ncb
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/project.vc++/convert/convert.sln
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/project.vc++/convert/convert.sln 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual C++ Express 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convert", "convert.vcproj", "{9975D6A3-61E9-4FC6-9AB8-B808F4D0E6C3}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {9975D6A3-61E9-4FC6-9AB8-B808F4D0E6C3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9975D6A3-61E9-4FC6-9AB8-B808F4D0E6C3}.Debug|Win32.Build.0 = Debug|Win32
+ {9975D6A3-61E9-4FC6-9AB8-B808F4D0E6C3}.Release|Win32.ActiveCfg = Release|Win32
+ {9975D6A3-61E9-4FC6-9AB8-B808F4D0E6C3}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal

Added: sandbox/convert/libs/project.vc++/convert/convert.suo
==============================================================================
Binary file. No diff available.

Added: sandbox/convert/libs/project.vc++/convert/convert.vcproj
==============================================================================
--- (empty file)
+++ sandbox/convert/libs/project.vc++/convert/convert.vcproj 2011-04-23 09:49:59 EDT (Sat, 23 Apr 2011)
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="windows-1251"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="convert"
+ ProjectGUID="{9975D6A3-61E9-4FC6-9AB8-B808F4D0E6C3}"
+ RootNamespace="convert"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="&quot;C:\Documents and Settings\Vladimir Batov\My Documents\dev\boost_1_46_0&quot;;&quot;C:\Documents and Settings\Vladimir Batov\My Documents\dev&quot;"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="true"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ GenerateDebugInformation="true"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\convert\test\test_convert.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath="..\..\..\boost\convert\api.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\boost\convert\boost_parameter_ext.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\boost\convert.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\boost\convert\converter_base.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\boost\safebool.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\boost\convert\stream_based_string_convertor.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\boost\convert\string_sfinae.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\boost\convert\string_to_bool.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\boost\convert\string_to_type.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\boost\convert\type_to_bool.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\boost\convert\type_to_string.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\boost\convert\workarounds.hpp"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk