Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r64500 - in sandbox/SOC/2009/unicode: boost/iterator boost/unicode boost/unicode/detail libs/unicode/doc
From: loufoque_at_[hidden]
Date: 2010-07-31 10:38:48


Author: mgaunard
Date: 2010-07-31 10:38:46 EDT (Sat, 31 Jul 2010)
New Revision: 64500
URL: http://svn.boost.org/trac/boost/changeset/64500

Log:
macros to define a template converter helper functions + sharing the multi boundary/segment unicode macro
Added:
   sandbox/SOC/2009/unicode/boost/unicode/detail/boundary_segment_def.hpp (contents, props changed)
Text files modified:
   sandbox/SOC/2009/unicode/boost/iterator/convert_iterator.hpp | 65 ++++++++++++++++++++++----------------
   sandbox/SOC/2009/unicode/boost/iterator/converter_codecvt_facet.hpp | 4 +-
   sandbox/SOC/2009/unicode/boost/unicode/cat.hpp | 10 +----
   sandbox/SOC/2009/unicode/boost/unicode/combining.hpp | 67 +++++++++++----------------------------
   sandbox/SOC/2009/unicode/boost/unicode/compose.hpp | 6 +-
   sandbox/SOC/2009/unicode/boost/unicode/compose_fwd.hpp | 35 ++++----------------
   sandbox/SOC/2009/unicode/boost/unicode/graphemes.hpp | 27 +++------------
   sandbox/SOC/2009/unicode/boost/unicode/utf.hpp | 13 +------
   sandbox/SOC/2009/unicode/libs/unicode/doc/Jamfile.v2 | 9 +++-
   9 files changed, 88 insertions(+), 148 deletions(-)

Modified: sandbox/SOC/2009/unicode/boost/iterator/convert_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/unicode/boost/iterator/convert_iterator.hpp (original)
+++ sandbox/SOC/2009/unicode/boost/iterator/convert_iterator.hpp 2010-07-31 10:38:46 EDT (Sat, 31 Jul 2010)
@@ -19,6 +19,9 @@
 #include <boost/mpl/assert.hpp>
 #include <boost/mpl/equal_to.hpp>
 
+#include <boost/preprocessor/punctuation/comma.hpp>
+#include <boost/preprocessor/facilities/empty.hpp>
+
 namespace boost
 {
 
@@ -368,16 +371,12 @@
 } // namespace boost
 
 #ifdef BOOST_UNICODE_DOXYGEN_INVOKED
-/** Defines helper functions for usage of a \c \xmlonly<conceptname>Converter</conceptname>\endxmlonly.
- * Helper functions provide a pseudo-variadic interface where they forward all the extra arguments to
- * the constructor of the \c \xmlonly<conceptname>Converter</conceptname>\endxmlonly.
- * \arg \c name Name of the type modelling the \c \xmlonly<conceptname>Converter</conceptname>\endxmlonly.
- * \arg \c n Maximum number of optional arguments. */
-#define BOOST_CONVERTER_DEF(converter_name, convert_name) \
+/** INTERNAL ONLY */
+#define BOOST_CONVERTER_DEF_I(converter_name, convert_name, tpl) \
 /** Eagerly evaluates \c converter_name until the whole input
    range \c range has been treated, copying the result to \c out and
    returning the past-the-end output iterator. */ \
-template<typename Range, typename OutputIterator, typename... T> \
+template<tpl() typename Range, typename OutputIterator, typename... T> \
 OutputIterator \
 convert_name(const Range& range, OutputIterator out, const T&... ); \
 namespace adaptors \
@@ -385,7 +384,7 @@
    /** Lazily evalutes \c converter_name by returning a range
       adapter that wraps the range \c range and converts it
       step-by-step as the range is advanced. */ \
- template<typename Range, typename... T> \
+ template<tpl() typename Range, typename... T> \
     boost::converted_range< \
         Range, \
         converter_name \
@@ -393,13 +392,13 @@
     convert_name(Range&& range, const T&...); \
 }
 #else
-#define BOOST_CONVERTER_DEF(converter_name, convert_name) \
-template<typename Range, typename OutputIterator> \
+#define BOOST_CONVERTER_DEF_I(converter_name, convert_name, tpl) \
+template<tpl() typename Range, typename OutputIterator> \
 OutputIterator convert_name(const Range& range, OutputIterator out) \
 { \
     return boost::convert(range, converter_name(), out); \
 } \
-template<typename Range, typename OutputIterator, typename T0> \
+template<tpl() typename Range, typename OutputIterator, typename T0> \
 OutputIterator \
 convert_name(const Range& range, OutputIterator out, const T0& t0) \
 { \
@@ -407,7 +406,7 @@
 } \
 namespace adaptors \
 { \
- template<typename Range> \
+ template<tpl() typename Range> \
     boost::converted_range< \
         const Range, \
         converter_name \
@@ -417,7 +416,7 @@
         return boost::adaptors::convert(range, converter_name()); \
     } \
                                                                        \
- template<typename Range> \
+ template<tpl() typename Range> \
     boost::converted_range< \
         Range, \
         converter_name \
@@ -427,7 +426,7 @@
         return boost::adaptors::convert(range, converter_name()); \
     } \
                                                                        \
- template<typename Range, typename T0> \
+ template<tpl() typename Range, typename T0> \
     boost::converted_range< \
         const Range, \
         converter_name \
@@ -437,7 +436,7 @@
         return boost::adaptors::convert(range, converter_name(t0)); \
     } \
                                                                        \
- template<typename Range, typename T0> \
+ template<tpl() typename Range, typename T0> \
     boost::converted_range< \
         Range, \
         converter_name \
@@ -450,18 +449,14 @@
 #endif
 
 #ifdef BOOST_UNICODE_DOXYGEN_INVOKED
-/** Defines helper functions for usage of a \c \xmlonly<conceptname>OneManyConverter</conceptname>\endxmlonly.
- * Helper functions provide a pseudo-variadic interface where they forward all the extra arguments to
- * the constructor of the \c \xmlonly<conceptname>OneManyConverter</conceptname>\endxmlonly.
- * \arg \c name Name of the type modelling the \c \xmlonly<conceptname>OneManyConverter</conceptname>\endxmlonly.
- * \arg \c n Maximum number of optional arguments. */
-#define BOOST_ONEMANYCONVERTER_DEF(converter_name, convert_name) \
-BOOST_CONVERTER_DEF(converter_name, convert_name) \
+/** INTERNAL ONLY */
+#define BOOST_ONEMANYCONVERTER_DEF_I(converter_name, convert_name, tpl)\
+BOOST_CONVERTER_DEF_I(converter_name, convert_name, tpl) \
 namespace adaptors \
 { \
     /** Lazily evalutes \c converter_name by returning an output
       iterator that wraps \c out and converts every pushed element. */ \
- template<typename OutputIterator, typename... T> \
+ template<tpl() typename OutputIterator, typename... T> \
     boost::convert_output_iterator< \
         OutputIterator, \
         converter_name \
@@ -469,11 +464,11 @@
     convert_name##_output(OutputIterator out, const T&...); \
 }
 #else
-#define BOOST_ONEMANYCONVERTER_DEF(converter_name, convert_name) \
-BOOST_CONVERTER_DEF(converter_name, convert_name) \
+#define BOOST_ONEMANYCONVERTER_DEF_I(converter_name, convert_name, tpl)\
+BOOST_CONVERTER_DEF_I(converter_name, convert_name, tpl) \
 namespace adaptors \
 { \
- template<typename OutputIterator> \
+ template<tpl() typename OutputIterator> \
     boost::convert_output_iterator< \
         OutputIterator, \
         converter_name \
@@ -483,7 +478,7 @@
         return boost::adaptors::convert_output(out, converter_name()); \
     } \
                                                                        \
- template<typename OutputIterator, typename T0> \
+ template<tpl() typename OutputIterator, typename T0> \
     boost::convert_output_iterator< \
         OutputIterator, \
         converter_name \
@@ -498,5 +493,21 @@
 }
 #endif
 
+/** Defines helper functions for usage of a \c \xmlonly<conceptname>Converter</conceptname>\endxmlonly.
+ * Helper functions provide a pseudo-variadic interface where they forward all the extra arguments to
+ * the constructor of the \c \xmlonly<conceptname>Converter</conceptname>\endxmlonly.
+ * \arg \c converter_name Name of the type modelling the \c \xmlonly<conceptname>Converter</conceptname>\endxmlonly.
+ * \arg \c convert_name Name to use for the helper functions. */
+#define BOOST_CONVERTER_DEF(converter_name, convert_name) BOOST_CONVERTER_DEF_I(converter_name, convert_name, BOOST_PP_EMPTY)
+#define BOOST_CONVERTER_TPL_DEF(converter_name, convert_name) BOOST_CONVERTER_DEF_I(converter_name, convert_name, typename ValueType BOOST_PP_COMMA)
+
+/** Defines helper functions for usage of a \c \xmlonly<conceptname>OneManyConverter</conceptname>\endxmlonly.
+ * Helper functions provide a pseudo-variadic interface where they forward all the extra arguments to
+ * the constructor of the \c \xmlonly<conceptname>OneManyConverter</conceptname>\endxmlonly.
+ * \arg \c converter_name Name of the type modelling the \c \xmlonly<conceptname>OneManyConverter</conceptname>\endxmlonly.
+ * \arg \c convert_name Name to use for the helper functions. */
+#define BOOST_ONEMANYCONVERTER_DEF(converter_name, convert_name) BOOST_ONEMANYCONVERTER_DEF_I(converter_name, convert_name, BOOST_PP_EMPTY)
+#define BOOST_ONEMANYCONVERTER_TPL_DEF(converter_name, convert_name) BOOST_ONEMANYCONVERTER_DEF_I(converter_name, convert_name, typename ValueType BOOST_PP_COMMA)
+
 #endif
 

Modified: sandbox/SOC/2009/unicode/boost/iterator/converter_codecvt_facet.hpp
==============================================================================
--- sandbox/SOC/2009/unicode/boost/iterator/converter_codecvt_facet.hpp (original)
+++ sandbox/SOC/2009/unicode/boost/iterator/converter_codecvt_facet.hpp 2010-07-31 10:38:46 EDT (Sat, 31 Jul 2010)
@@ -17,8 +17,8 @@
 namespace boost
 {
 
-/** Builds a codecvt facet from two \xmlonly<conceptname>Converter</conceptname>s\endxmlonly
- * and two \xmlonly<conceptname>BoundaryChecker</conceptname>s\endxmlonly.
+/** Builds a codecvt facet from two \c \xmlonly<conceptname>Converter</conceptname>s\endxmlonly
+ * and two \c \xmlonly<conceptname>BoundaryChecker</conceptname>s\endxmlonly.
  * When writing to a file, \c P1 is applied for segments of data on which \c B1 is true at the beginning and at the end.
  * When reading a file, \c P2 is applied for segments of data on which \c B2 is true at the beginning and at the end. */
 template<typename InternT, typename B1, typename P1, typename B2, typename P2>

Modified: sandbox/SOC/2009/unicode/boost/unicode/cat.hpp
==============================================================================
--- sandbox/SOC/2009/unicode/boost/unicode/cat.hpp (original)
+++ sandbox/SOC/2009/unicode/boost/unicode/cat.hpp 2010-07-31 10:38:46 EDT (Sat, 31 Jul 2010)
@@ -2,16 +2,12 @@
 #define BOOST_UNICODE_CAT_HPP
 
 #include <boost/unicode/compose.hpp>
-#include <boost/unicode/utf.hpp>
 #include <boost/unicode/combining.hpp>
 
 #include <algorithm>
-#include <boost/utility.hpp>
-
-#include <boost/range/join.hpp>
-
 #include <boost/range/algorithm/copy.hpp>
 #include <boost/tuple/tuple.hpp>
+#include <boost/range/join.hpp>
 
 #include <boost/detail/unspecified.hpp>
 
@@ -60,12 +56,12 @@
         typename range_iterator<cv2 Range2>::type \
         new_begin = boost::begin(range2); \
                                                                        \
- combiner().rtl( \
+ combine_segmenter().rtl( \
             boost::begin(range1), \
             new_end \
         ); \
                                                                        \
- combiner().ltr( \
+ combine_segmenter().ltr( \
             new_begin, \
             boost::end(range2) \
         ); \

Modified: sandbox/SOC/2009/unicode/boost/unicode/combining.hpp
==============================================================================
--- sandbox/SOC/2009/unicode/boost/unicode/combining.hpp (original)
+++ sandbox/SOC/2009/unicode/boost/unicode/combining.hpp 2010-07-31 10:38:46 EDT (Sat, 31 Jul 2010)
@@ -1,12 +1,15 @@
 #ifndef BOOST_UNICODE_COMBINING_HPP
 #define BOOST_UNICODE_COMBINING_HPP
 
-#include <boost/config.hpp>
+#include <boost/unicode/ucd/properties.hpp>
+#include <boost/unicode/utf_codecs.hpp>
+
+#include <boost/unicode/detail/boundary_segment_def.hpp>
 #include <boost/iterator/segment_iterator.hpp>
-#include <boost/cuchar.hpp>
-#include <boost/unicode/utf.hpp>
-#include <algorithm>
+#include <boost/iterator/convert_iterator.hpp>
 
+#include <boost/detail/unspecified.hpp>
+#include <algorithm>
 #include <boost/range/adaptor/reversed.hpp>
 
 #include <boost/throw_exception.hpp>
@@ -16,9 +19,6 @@
 #include <ios>
 #endif
 
-#include <boost/type_traits.hpp>
-#include <boost/utility/enable_if.hpp>
-
 namespace boost
 {
 namespace unicode
@@ -97,26 +97,15 @@
  * that segments combining character sequences. */
 typedef boost::detail::unspecified<
     boost::boundary_segmenter<combine_boundary>
->::type combiner;
+>::type combine_segmenter;
+BOOST_SEGMENTER_DEF(boost::unicode::combine_segmenter, combine_segment)
 
-/** INTERNAL ONLY */
-#define BOOST_UNICODE_COMBINE_DEF(codec) \
-typedef boost::detail::unspecified< \
- boost::multi_boundary< \
- codec##_boundary, \
- codec##_decoder, \
- combine_boundary \
- > \
->::type codec##_combine_boundary; \
-typedef boost::detail::unspecified< \
- boost::boundary_segmenter<codec##_combine_boundary> \
->::type codec##_combiner; \
-BOOST_SEGMENTER_DEF(BOOST_UNICODE_CAT(boost::unicode, codec##_combiner), codec##_combine_segment)
-
-BOOST_UNICODE_COMBINE_DEF(u8)
-BOOST_UNICODE_COMBINE_DEF(u16)
-BOOST_UNICODE_COMBINE_DEF(utf)
+BOOST_UNICODE_BOUNDARY_SEGMENT_DEF(u8, combine)
+BOOST_UNICODE_BOUNDARY_SEGMENT_DEF(u16, combine)
+BOOST_UNICODE_BOUNDARY_SEGMENT_DEF(utf, combine)
 
+/** Model of \c \xmlonly<conceptname>Converter</conceptname>\endxmlonly
+ * that canonically sorts a combining character sequence. */
 struct combine_sorter
 {
     typedef char32 input_type;
@@ -128,7 +117,7 @@
     {
         boost::iterator_range<
             In
- > sequence = *boost::make_segment_iterator(begin, end, begin, combiner());
+ > sequence = *boost::make_segment_iterator(begin, end, begin, combine_segmenter());
         
         out = combine_sort_impl(sequence, out);
         begin = boost::end(sequence);
@@ -142,7 +131,7 @@
             const boost::iterator_range<In>
> sequence = boost::adaptors::reverse(
             *boost::prior(
- boost::make_segment_iterator(begin, end, end, combiner())
+ boost::make_segment_iterator(begin, end, end, combine_segmenter())
             )
         );
         
@@ -155,18 +144,11 @@
     template<typename Range, typename Out>
     Out combine_sort_impl(const Range& range, Out out)
     {
- return combine_sort_impl(boost::begin(range), boost::end(range), out);
+ return combine_sort_impl(boost::begin(range), boost::end(range), out, (typename std::iterator_traits<Out>::iterator_category*)0);
     }
 
     template<typename In, typename Out>
- typename enable_if<
- is_base_of<
- std::random_access_iterator_tag,
- typename std::iterator_traits<Out>::iterator_category
- >,
- Out
- >::type
- combine_sort_impl(In begin, In end, Out out)
+ Out combine_sort_impl(In begin, In end, Out out, std::random_access_iterator_tag*)
     {
         Out out_pos = detail::copy_bounded(begin, end, out, out + max_output::value);
         detail::stable_sort_bounded<max_output>(out, out_pos, detail::combining_pred());
@@ -174,14 +156,7 @@
     }
     
     template<typename In, typename Out>
- typename disable_if<
- is_base_of<
- std::random_access_iterator_tag,
- typename std::iterator_traits<Out>::iterator_category
- >,
- Out
- >::type
- combine_sort_impl(In begin, In end, Out out)
+ Out combine_sort_impl(In begin, In end, Out out, std::output_iterator_tag*)
     {
         char32 buffer[max_output::value];
         char32* out_pos = detail::copy_bounded(begin, end, buffer, buffer + max_output::value);
@@ -189,9 +164,7 @@
         return std::copy(buffer, out_pos, out);
     }
 };
-
-BOOST_SEGMENTER_DEF(combiner, combine)
-BOOST_SEGMENTER_DEF(combine_sorter, combine_sort)
+BOOST_CONVERTER_DEF(boost::unicode::combine_sorter, combine_sort)
     
 } // namespace unicode
 } // namespace boost

Modified: sandbox/SOC/2009/unicode/boost/unicode/compose.hpp
==============================================================================
--- sandbox/SOC/2009/unicode/boost/unicode/compose.hpp (original)
+++ sandbox/SOC/2009/unicode/boost/unicode/compose.hpp 2010-07-31 10:38:46 EDT (Sat, 31 Jul 2010)
@@ -8,9 +8,9 @@
 namespace unicode
 {
 
-BOOST_CONVERTER_DEF(composer, compose)
-BOOST_CONVERTER_DEF(decomposer, decompose)
-BOOST_CONVERTER_DEF(normalizer, normalize)
+BOOST_CONVERTER_DEF(boost::unicode::composer, compose)
+BOOST_CONVERTER_DEF(boost::unicode::decomposer, decompose)
+BOOST_CONVERTER_DEF(boost::unicode::normalizer, normalize)
 
 } // namespace unicode
 } // namespace boost

Modified: sandbox/SOC/2009/unicode/boost/unicode/compose_fwd.hpp
==============================================================================
--- sandbox/SOC/2009/unicode/boost/unicode/compose_fwd.hpp (original)
+++ sandbox/SOC/2009/unicode/boost/unicode/compose_fwd.hpp 2010-07-31 10:38:46 EDT (Sat, 31 Jul 2010)
@@ -5,18 +5,13 @@
 #include <boost/unicode/hangul.hpp>
 #include <boost/unicode/combining.hpp>
 
-#include <boost/integer/static_pow.hpp>
-#include <climits>
-
-#include <vector>
-
 #include <boost/detail/unspecified.hpp>
 #include <boost/iterator/convert_iterator.hpp>
 
 #include <boost/range/adaptor/reversed.hpp>
-
-#include <boost/utility/enable_if.hpp>
-#include <boost/type_traits.hpp>
+#include <boost/integer/static_pow.hpp>
+#include <vector>
+#include <climits>
 
 namespace boost
 {
@@ -52,7 +47,7 @@
     {
         boost::iterator_range<
             In
- > sequence = *boost::make_segment_iterator(begin, end, begin, combiner());
+ > sequence = *boost::make_segment_iterator(begin, end, begin, combine_segmenter());
         
         out = decompose_impl(sequence, out);
         begin = boost::end(sequence);
@@ -68,7 +63,7 @@
             const boost::iterator_range<In>
> sequence = boost::adaptors::reverse(
             *boost::prior(
- boost::make_segment_iterator(begin, end, end, combiner())
+ boost::make_segment_iterator(begin, end, end, combine_segmenter())
             )
         );
         
@@ -81,18 +76,11 @@
     template<typename Range, typename Out>
     Out decompose_impl(const Range& range, Out out)
     {
- return decompose_impl(boost::begin(range), boost::end(range), out);
+ return decompose_impl(boost::begin(range), boost::end(range), out, (typename std::iterator_traits<Out>::iterator_category*)0);
     }
     
     template<typename In, typename Out>
- typename disable_if<
- is_base_of<
- std::random_access_iterator_tag,
- typename std::iterator_traits<Out>::iterator_category
- >,
- Out
- >::type
- decompose_impl(In begin, In end, Out out)
+ Out decompose_impl(In begin, In end, Out out, std::output_iterator_tag*)
     {
         char32 buf[max_output::value];
         char32* out_pos = buf;
@@ -137,14 +125,7 @@
     }
     
     template<typename In, typename Out>
- typename enable_if<
- is_base_of<
- std::random_access_iterator_tag,
- typename std::iterator_traits<Out>::iterator_category
- >,
- Out
- >::type
- decompose_impl(In begin, In end, Out out)
+ Out decompose_impl(In begin, In end, Out out, std::random_access_iterator_tag*)
     {
         Out out_pos = out;
         

Added: sandbox/SOC/2009/unicode/boost/unicode/detail/boundary_segment_def.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/unicode/boost/unicode/detail/boundary_segment_def.hpp 2010-07-31 10:38:46 EDT (Sat, 31 Jul 2010)
@@ -0,0 +1,20 @@
+#ifndef BOOST_UNICODE_DETAIL_BOUNDARY_SEGMENT_DEF_HPP
+#define BOOST_UNICODE_DETAIL_BOUNDARY_SEGMENT_DEF_HPP
+
+#include <boost/unicode/detail/cat.hpp>
+
+/** INTERNAL ONLY */
+#define BOOST_UNICODE_BOUNDARY_SEGMENT_DEF(codec, boundary) \
+typedef boost::detail::unspecified< \
+ boost::multi_boundary< \
+ codec##_boundary, \
+ codec##_decoder, \
+ boundary##_boundary \
+ > \
+>::type codec##_##boundary##_boundary; \
+typedef boost::detail::unspecified< \
+ boost::boundary_segmenter<codec##_##boundary##_boundary> \
+>::type codec##_##boundary##_segmenter; \
+BOOST_SEGMENTER_DEF(BOOST_UNICODE_CAT(boost::unicode, codec##_##boundary##_segmenter), codec##_##boundary##_segment)
+
+#endif

Modified: sandbox/SOC/2009/unicode/boost/unicode/graphemes.hpp
==============================================================================
--- sandbox/SOC/2009/unicode/boost/unicode/graphemes.hpp (original)
+++ sandbox/SOC/2009/unicode/boost/unicode/graphemes.hpp 2010-07-31 10:38:46 EDT (Sat, 31 Jul 2010)
@@ -2,13 +2,12 @@
 #define BOOST_UNICODE_GRAPHEMES_HPP
 
 #include <boost/unicode/ucd/properties.hpp>
-#include <boost/utility.hpp>
-#include <boost/detail/unspecified.hpp>
-#include <boost/unicode/detail/cat.hpp>
+#include <boost/unicode/utf_codecs.hpp>
 
+#include <boost/unicode/detail/boundary_segment_def.hpp>
 #include <boost/iterator/segment_iterator.hpp>
 
-#include <boost/unicode/utf_codecs.hpp>
+#include <boost/utility.hpp>
 
 namespace boost
 {
@@ -43,23 +42,9 @@
>::type grapheme_segmenter;
 BOOST_SEGMENTER_DEF(boost::unicode::grapheme_segmenter, grapheme_segment)
 
-/** INTERNAL ONLY */
-#define BOOST_UNICODE_GRAPHEME_DEF(codec) \
-typedef boost::detail::unspecified< \
- boost::multi_boundary< \
- codec##_boundary, \
- codec##_decoder, \
- grapheme_boundary \
- > \
->::type codec##_grapheme_boundary; \
-typedef boost::detail::unspecified< \
- boost::boundary_segmenter<codec##_grapheme_boundary> \
->::type codec##_grapheme_segmenter; \
-BOOST_SEGMENTER_DEF(BOOST_UNICODE_CAT(boost::unicode, codec##_grapheme_segmenter), codec##_grapheme_segment)
-
-BOOST_UNICODE_GRAPHEME_DEF(u8)
-BOOST_UNICODE_GRAPHEME_DEF(u16)
-BOOST_UNICODE_GRAPHEME_DEF(utf)
+BOOST_UNICODE_BOUNDARY_SEGMENT_DEF(u8, grapheme)
+BOOST_UNICODE_BOUNDARY_SEGMENT_DEF(u16, grapheme)
+BOOST_UNICODE_BOUNDARY_SEGMENT_DEF(utf, grapheme)
 
 } // unicode
 } // boost

Modified: sandbox/SOC/2009/unicode/boost/unicode/utf.hpp
==============================================================================
--- sandbox/SOC/2009/unicode/boost/unicode/utf.hpp (original)
+++ sandbox/SOC/2009/unicode/boost/unicode/utf.hpp 2010-07-31 10:38:46 EDT (Sat, 31 Jul 2010)
@@ -31,17 +31,8 @@
 BOOST_UNICODE_DECODER_DEF(u16)
 BOOST_UNICODE_DECODER_DEF(utf)
 
-namespace adaptors
-{
- template<typename ValueType, typename OutputIterator>
- boost::convert_output_iterator<
- OutputIterator,
- boost::unicode::utf_encoder<ValueType>
- > utf_encode_output(OutputIterator out)
- {
- return boost::adaptors::convert_output(out, utf_encoder<ValueType>());
- }
-}
+BOOST_ONEMANYCONVERTER_TPL_DEF(BOOST_UNICODE_CAT(boost::unicode, utf_encoder<ValueType>), utf_encode)
+BOOST_CONVERTER_TPL_DEF(BOOST_UNICODE_CAT(boost::unicode, utf_transcoder<ValueType>), utf_transcode)
 
 } // namespace unicode
 } // namespace boost

Modified: sandbox/SOC/2009/unicode/libs/unicode/doc/Jamfile.v2
==============================================================================
--- sandbox/SOC/2009/unicode/libs/unicode/doc/Jamfile.v2 (original)
+++ sandbox/SOC/2009/unicode/libs/unicode/doc/Jamfile.v2 2010-07-31 10:38:46 EDT (Sat, 31 Jul 2010)
@@ -28,9 +28,12 @@
         <doxygen:param>ENABLE_PREPROCESSING=YES
         <doxygen:param>MACRO_EXPANSION=YES
         <doxygen:param>EXPAND_ONLY_PREDEF=YES
- <doxygen:param>"EXPAND_AS_DEFINED=BOOST_UNICODE_ENCODER_DEF BOOST_UNICODE_DECODER_DEF \\
- BOOST_ONEMANYCONVERTER_DEF BOOST_CONVERTER_DEF BOOST_SEGMENTER_DEF \\
- BOOST_UNICODE_GRAPHEME_DEF BOOST_UNICODE_COMBINE_DEF BOOST_UNICODE_GET_PROPERTY_DEF \\
+ <doxygen:param>"EXPAND_AS_DEFINED=BOOST_PP_EMPTY BOOST_PP_COMMA \\
+ BOOST_ONEMANYCONVERTER_DEF BOOST_ONEMANYCONVERTER_TPL_DEF BOOST_ONEMANYCONVERTER_DEF_I \\
+ BOOST_CONVERTER_DEF BOOST_CONVERTER_TPL_DEF BOOST_CONVERTER_DEF_I \\
+ BOOST_SEGMENTER_DEF \\
+ BOOST_UNICODE_ENCODER_DEF BOOST_UNICODE_DECODER_DEF BOOST_UNICODE_BOUNDARY_SEGMENT_DEF \\
+ BOOST_UNICODE_GET_PROPERTY_DEF \\
                         BOOST_UNICODE_FWD_2 BOOST_UNICODE_CAT_LIMITS_FWD BOOST_UNICODE_CAT \\
                         BOOST_UNICODE_COMPOSE_CONCAT_DEF BOOST_UNICODE_COMPOSE_CONCATED_DEF BOOST_UNICODE_COMPOSE_CAT_DEF"
         <doxygen:param>SEARCH_INCLUDES=YES


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