00001 #ifndef _theplu_yat_normalizer_utility_
00002 #define _theplu_yat_normalizer_utility_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "yat/utility/iterator_traits.h"
00026 #include "yat/utility/WeightIterator.h"
00027
00028 #include <algorithm>
00029
00030 namespace theplu {
00031 namespace yat {
00032 namespace normalizer {
00033
00034
00035 namespace detail {
00036 template<typename InputIterator, typename OutputIterator>
00037 void copy_weight_if_weighted(InputIterator first, InputIterator last,
00038 OutputIterator result,
00039 utility::unweighted_iterator_tag tag)
00040 {
00041 }
00042
00043 template<typename InputIterator, typename OutputIterator>
00044 void copy_weight_if_weighted(InputIterator first, InputIterator last,
00045 OutputIterator result,
00046 utility::weighted_iterator_tag tag)
00047 {
00048 using utility::weight_iterator;
00049 std::copy(weight_iterator(first), weight_iterator(last),
00050 weight_iterator(result));
00051 }
00052
00058 template<typename InputIterator, typename OutputIterator>
00059 void copy_weight_if_weighted(InputIterator first, InputIterator last,
00060 OutputIterator result)
00061 {
00062 typename utility::weighted_iterator_traits<OutputIterator>::type tag;
00063 copy_weight_if_weighted(first, last, result, tag);
00064 }
00065 }
00066
00067 }}}
00068
00069 #endif