summaryrefslogtreecommitdiffstats
path: root/src/H5Gnode.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2010-03-26 03:17:42 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2010-03-26 03:17:42 (GMT)
commit49cd4a1f3affeaff363242114ca89f9c61876e0e (patch)
tree624777f4ef5f28e5a3e010e4397c75e52f7cd02f /src/H5Gnode.c
parent9a359c82243eb630ab4338dba08796d2d7e43e1a (diff)
downloadhdf5-49cd4a1f3affeaff363242114ca89f9c61876e0e.zip
hdf5-49cd4a1f3affeaff363242114ca89f9c61876e0e.tar.gz
hdf5-49cd4a1f3affeaff363242114ca89f9c61876e0e.tar.bz2
[svn-r18460] Description:
Fold metadata journaling changes into the trunk: mostly tweaky small stuff, also removed the H5F_t* field from the H5G_entry_t struct. Tested on: FreeBSD/32 6.3 (duty) in debug mode FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Diffstat (limited to 'src/H5Gnode.c')
-rw-r--r--src/H5Gnode.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/H5Gnode.c b/src/H5Gnode.c
index 1df2fe4..8154200 100644
--- a/src/H5Gnode.c
+++ b/src/H5Gnode.c
@@ -32,6 +32,7 @@
/* Packages needed by this file... */
#include "H5private.h" /* Generic Functions */
+#include "H5ACprivate.h" /* Metadata cache */
#include "H5Eprivate.h" /* Error handling */
#include "H5Fpkg.h" /* File access */
#include "H5FLprivate.h" /* Free Lists */
@@ -51,6 +52,7 @@ typedef struct H5G_node_key_t {
size_t offset; /*offset into heap for name */
} H5G_node_key_t;
+
/* Private macros */
#define H5G_NODE_SIZEOF_HDR(F) (H5_SIZEOF_MAGIC + 4)
| 34 + .../boost/detail/winapi/get_current_process_id.hpp | 66 +- .../src/boost/detail/winapi/get_current_thread.hpp | 34 + .../boost/detail/winapi/get_current_thread_id.hpp | 68 +- contrib/src/boost/detail/winapi/process.hpp | 386 ++ contrib/src/boost/detail/winapi/thread.hpp | 42 + contrib/src/boost/detail/winapi/timers.hpp | 96 +- contrib/src/boost/detail/workaround.hpp | 539 ++- contrib/src/boost/dynamic_bitset.hpp | 34 +- contrib/src/boost/dynamic_bitset/config.hpp | 144 +- .../src/boost/dynamic_bitset/dynamic_bitset.hpp | 3762 ++++++++++---------- contrib/src/boost/dynamic_bitset_fwd.hpp | 50 +- contrib/src/boost/exception/exception.hpp | 1020 +++--- contrib/src/boost/function.hpp | 132 +- .../src/boost/function/detail/function_iterate.hpp | 32 +- .../src/boost/function/detail/gen_maybe_include.pl | 74 +- .../src/boost/function/detail/maybe_include.hpp | 534 +-- contrib/src/boost/function/detail/prologue.hpp | 52 +- contrib/src/boost/function/function0.hpp | 24 +- contrib/src/boost/function/function1.hpp | 24 +- contrib/src/boost/function/function10.hpp | 24 +- contrib/src/boost/function/function2.hpp | 24 +- contrib/src/boost/function/function3.hpp | 24 +- contrib/src/boost/function/function4.hpp | 24 +- contrib/src/boost/function/function5.hpp | 24 +- contrib/src/boost/function/function6.hpp | 24 +- contrib/src/boost/function/function7.hpp | 24 +- contrib/src/boost/function/function8.hpp | 24 +- contrib/src/boost/function/function9.hpp | 24 +- contrib/src/boost/function/function_base.hpp | 1758 ++++----- contrib/src/boost/function/function_fwd.hpp | 138 +- contrib/src/boost/function/function_template.hpp | 2368 ++++++------ contrib/src/boost/function_equal.hpp | 56 +- contrib/src/boost/get_pointer.hpp | 152 +- contrib/src/boost/integer.hpp | 524 +-- contrib/src/boost/integer/integer_log2.hpp | 224 +- contrib/src/boost/integer/integer_mask.hpp | 252 +- contrib/src/boost/integer/static_log2.hpp | 254 +- contrib/src/boost/integer_fwd.hpp | 374 +- contrib/src/boost/integer_traits.hpp | 512 +-- contrib/src/boost/intrusive/detail/algorithm.hpp | 90 + .../src/boost/intrusive/detail/config_begin.hpp | 56 + contrib/src/boost/intrusive/detail/config_end.hpp | 15 + .../detail/has_member_function_callable_with.hpp | 341 ++ contrib/src/boost/intrusive/detail/iterator.hpp | 156 + .../intrusive/detail/minimal_less_equal_header.hpp | 30 + .../boost/intrusive/detail/minimal_pair_header.hpp | 30 + contrib/src/boost/intrusive/detail/mpl.hpp | 206 ++ .../src/boost/intrusive/detail/pointer_element.hpp | 168 + .../boost/intrusive/detail/reverse_iterator.hpp | 165 + contrib/src/boost/intrusive/detail/std_fwd.hpp | 43 + .../src/boost/intrusive/detail/to_raw_pointer.hpp | 47 + contrib/src/boost/intrusive/detail/workaround.hpp | 50 + contrib/src/boost/intrusive/pointer_rebind.hpp | 188 + contrib/src/boost/intrusive/pointer_traits.hpp | 318 ++ contrib/src/boost/io/ios_state.hpp | 878 ++--- contrib/src/boost/io_fwd.hpp | 134 +- contrib/src/boost/iterator.hpp | 40 +- contrib/src/boost/iterator/detail/config_def.hpp | 256 +- contrib/src/boost/iterator/detail/config_undef.hpp | 48 +- contrib/src/boost/iterator/detail/enable_if.hpp | 166 +- .../iterator/detail/facade_iterator_category.hpp | 386 +- contrib/src/boost/iterator/interoperable.hpp | 108 +- contrib/src/boost/iterator/iterator_adaptor.hpp | 720 ++-- contrib/src/boost/iterator/iterator_categories.hpp | 430 +-- contrib/src/boost/iterator/iterator_concepts.hpp | 550 +-- contrib/src/boost/iterator/iterator_facade.hpp | 1960 +++++----- contrib/src/boost/iterator/iterator_traits.hpp | 120 +- contrib/src/boost/iterator/reverse_iterator.hpp | 148 +- contrib/src/boost/iterator/transform_iterator.hpp | 342 +- contrib/src/boost/limits.hpp | 292 +- contrib/src/boost/mem_fn.hpp | 48 +- contrib/src/boost/move/adl_move_swap.hpp | 266 ++ contrib/src/boost/move/algo/move.hpp | 310 +- contrib/src/boost/move/algorithm.hpp | 334 +- contrib/src/boost/move/core.hpp | 1004 +++--- contrib/src/boost/move/default_delete.hpp | 201 ++ contrib/src/boost/move/detail/config_begin.hpp | 42 +- contrib/src/boost/move/detail/config_end.hpp | 24 +- contrib/src/boost/move/detail/fwd_macros.hpp | 661 ++++ contrib/src/boost/move/detail/iterator_traits.hpp | 154 +- contrib/src/boost/move/detail/meta_utils.hpp | 1170 +++--- contrib/src/boost/move/detail/meta_utils_core.hpp | 252 +- contrib/src/boost/move/detail/move_helpers.hpp | 256 ++ contrib/src/boost/move/detail/std_ns_begin.hpp | 60 +- contrib/src/boost/move/detail/std_ns_end.hpp | 28 +- contrib/src/boost/move/detail/type_traits.hpp | 2150 +++++------ .../boost/move/detail/unique_ptr_meta_utils.hpp | 591 +++ contrib/src/boost/move/detail/workaround.hpp | 137 +- contrib/src/boost/move/iterator.hpp | 622 ++-- contrib/src/boost/move/make_unique.hpp | 237 ++ contrib/src/boost/move/move.hpp | 70 +- contrib/src/boost/move/traits.hpp | 154 +- contrib/src/boost/move/unique_ptr.hpp | 871 +++++ contrib/src/boost/move/utility.hpp | 300 +- contrib/src/boost/move/utility_core.hpp | 636 ++-- contrib/src/boost/mpl/always.hpp | 76 +- contrib/src/boost/mpl/and.hpp | 120 +- contrib/src/boost/mpl/apply.hpp | 458 +-- contrib/src/boost/mpl/apply_fwd.hpp | 214 +- contrib/src/boost/mpl/apply_wrap.hpp | 468 +-- contrib/src/boost/mpl/arg.hpp | 262 +- contrib/src/boost/mpl/arg_fwd.hpp | 56 +- contrib/src/boost/mpl/assert.hpp | 878 ++--- contrib/src/boost/mpl/aux_/adl_barrier.hpp | 96 +- contrib/src/boost/mpl/aux_/arg_typedef.hpp | 62 +- contrib/src/boost/mpl/aux_/arity.hpp | 78 +- contrib/src/boost/mpl/aux_/arity_spec.hpp | 134 +- contrib/src/boost/mpl/aux_/common_name_wknd.hpp | 68 +- contrib/src/boost/mpl/aux_/config/adl.hpp | 80 +- contrib/src/boost/mpl/aux_/config/arrays.hpp | 60 +- contrib/src/boost/mpl/aux_/config/bcc.hpp | 56 +- contrib/src/boost/mpl/aux_/config/bind.hpp | 66 +- contrib/src/boost/mpl/aux_/config/compiler.hpp | 132 +- contrib/src/boost/mpl/aux_/config/ctps.hpp | 60 +- .../boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp | 54 +- contrib/src/boost/mpl/aux_/config/dtp.hpp | 92 +- contrib/src/boost/mpl/aux_/config/eti.hpp | 94 +- contrib/src/boost/mpl/aux_/config/gcc.hpp | 46 +- contrib/src/boost/mpl/aux_/config/gpu.hpp | 70 +- contrib/src/boost/mpl/aux_/config/has_apply.hpp | 64 +- contrib/src/boost/mpl/aux_/config/has_xxx.hpp | 68 +- contrib/src/boost/mpl/aux_/config/integral.hpp | 76 +- contrib/src/boost/mpl/aux_/config/intel.hpp | 42 +- contrib/src/boost/mpl/aux_/config/lambda.hpp | 64 +- contrib/src/boost/mpl/aux_/config/msvc.hpp | 42 +- .../src/boost/mpl/aux_/config/msvc_typename.hpp | 52 +- contrib/src/boost/mpl/aux_/config/nttp.hpp | 82 +- .../boost/mpl/aux_/config/overload_resolution.hpp | 58 +- contrib/src/boost/mpl/aux_/config/pp_counter.hpp | 52 +- contrib/src/boost/mpl/aux_/config/preprocessor.hpp | 78 +- .../src/boost/mpl/aux_/config/static_constant.hpp | 50 +- contrib/src/boost/mpl/aux_/config/ttp.hpp | 82 +- .../src/boost/mpl/aux_/config/use_preprocessed.hpp | 38 +- contrib/src/boost/mpl/aux_/config/workaround.hpp | 38 +- contrib/src/boost/mpl/aux_/count_args.hpp | 210 +- contrib/src/boost/mpl/aux_/full_lambda.hpp | 708 ++-- contrib/src/boost/mpl/aux_/has_apply.hpp | 64 +- contrib/src/boost/mpl/aux_/has_rebind.hpp | 198 +- contrib/src/boost/mpl/aux_/has_type.hpp | 46 +- .../src/boost/mpl/aux_/include_preprocessed.hpp | 84 +- contrib/src/boost/mpl/aux_/integral_wrapper.hpp | 186 +- contrib/src/boost/mpl/aux_/lambda_arity_param.hpp | 50 +- contrib/src/boost/mpl/aux_/lambda_no_ctps.hpp | 386 +- contrib/src/boost/mpl/aux_/lambda_support.hpp | 338 +- contrib/src/boost/mpl/aux_/logical_op.hpp | 330 +- contrib/src/boost/mpl/aux_/msvc_dtw.hpp | 136 +- contrib/src/boost/mpl/aux_/msvc_is_class.hpp | 116 +- contrib/src/boost/mpl/aux_/msvc_never_true.hpp | 68 +- contrib/src/boost/mpl/aux_/na.hpp | 190 +- contrib/src/boost/mpl/aux_/na_assert.hpp | 68 +- contrib/src/boost/mpl/aux_/na_fwd.hpp | 62 +- contrib/src/boost/mpl/aux_/na_spec.hpp | 350 +- contrib/src/boost/mpl/aux_/nested_type_wknd.hpp | 96 +- contrib/src/boost/mpl/aux_/nttp_decl.hpp | 70 +- .../mpl/aux_/preprocessed/bcc/advance_backward.hpp | 194 +- .../mpl/aux_/preprocessed/bcc/advance_forward.hpp | 194 +- .../src/boost/mpl/aux_/preprocessed/bcc/and.hpp | 138 +- .../src/boost/mpl/aux_/preprocessed/bcc/apply.hpp | 338 +- .../boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp | 104 +- .../boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp | 922 ++--- .../src/boost/mpl/aux_/preprocessed/bcc/arg.hpp | 234 +- .../boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp | 600 ++-- .../src/boost/mpl/aux_/preprocessed/bcc/bind.hpp | 794 ++--- .../boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp | 92 +- .../src/boost/mpl/aux_/preprocessed/bcc/bitand.hpp | 294 +- .../src/boost/mpl/aux_/preprocessed/bcc/bitor.hpp | 294 +- .../src/boost/mpl/aux_/preprocessed/bcc/bitxor.hpp | 294 +- .../src/boost/mpl/aux_/preprocessed/bcc/deque.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/bcc/divides.hpp | 292 +- .../boost/mpl/aux_/preprocessed/bcc/equal_to.hpp | 188 +- .../boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp | 360 +- .../mpl/aux_/preprocessed/bcc/full_lambda.hpp | 1116 +++--- .../boost/mpl/aux_/preprocessed/bcc/greater.hpp | 188 +- .../mpl/aux_/preprocessed/bcc/greater_equal.hpp | 188 +- .../boost/mpl/aux_/preprocessed/bcc/inherit.hpp | 278 +- .../aux_/preprocessed/bcc/iter_fold_if_impl.hpp | 266 +- .../mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp | 360 +- .../mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp | 458 +-- .../src/boost/mpl/aux_/preprocessed/bcc/less.hpp | 188 +- .../boost/mpl/aux_/preprocessed/bcc/less_equal.hpp | 188 +- .../src/boost/mpl/aux_/preprocessed/bcc/list.hpp | 646 ++-- .../src/boost/mpl/aux_/preprocessed/bcc/list_c.hpp | 656 ++-- .../src/boost/mpl/aux_/preprocessed/bcc/map.hpp | 646 ++-- .../src/boost/mpl/aux_/preprocessed/bcc/minus.hpp | 292 +- .../boost/mpl/aux_/preprocessed/bcc/modulus.hpp | 202 +- .../mpl/aux_/preprocessed/bcc/not_equal_to.hpp | 188 +- contrib/src/boost/mpl/aux_/preprocessed/bcc/or.hpp | 138 +- .../mpl/aux_/preprocessed/bcc/placeholders.hpp | 210 +- .../src/boost/mpl/aux_/preprocessed/bcc/plus.hpp | 292 +- .../src/boost/mpl/aux_/preprocessed/bcc/quote.hpp | 238 +- .../aux_/preprocessed/bcc/reverse_fold_impl.hpp | 590 +-- .../preprocessed/bcc/reverse_iter_fold_impl.hpp | 590 +-- .../src/boost/mpl/aux_/preprocessed/bcc/set.hpp | 646 ++-- .../src/boost/mpl/aux_/preprocessed/bcc/set_c.hpp | 656 ++-- .../boost/mpl/aux_/preprocessed/bcc/shift_left.hpp | 198 +- .../mpl/aux_/preprocessed/bcc/shift_right.hpp | 198 +- .../mpl/aux_/preprocessed/bcc/template_arity.hpp | 80 +- .../src/boost/mpl/aux_/preprocessed/bcc/times.hpp | 292 +- .../mpl/aux_/preprocessed/bcc/unpack_args.hpp | 194 +- .../src/boost/mpl/aux_/preprocessed/bcc/vector.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/bcc/vector_c.hpp | 618 ++-- .../aux_/preprocessed/bcc551/advance_backward.hpp | 194 +- .../aux_/preprocessed/bcc551/advance_forward.hpp | 194 +- .../src/boost/mpl/aux_/preprocessed/bcc551/and.hpp | 138 +- .../boost/mpl/aux_/preprocessed/bcc551/apply.hpp | 338 +- .../mpl/aux_/preprocessed/bcc551/apply_fwd.hpp | 104 +- .../mpl/aux_/preprocessed/bcc551/apply_wrap.hpp | 912 ++--- .../src/boost/mpl/aux_/preprocessed/bcc551/arg.hpp | 246 +- .../mpl/aux_/preprocessed/bcc551/basic_bind.hpp | 612 ++-- .../boost/mpl/aux_/preprocessed/bcc551/bind.hpp | 806 ++--- .../mpl/aux_/preprocessed/bcc551/bind_fwd.hpp | 92 +- .../boost/mpl/aux_/preprocessed/bcc551/bitand.hpp | 294 +- .../boost/mpl/aux_/preprocessed/bcc551/bitor.hpp | 294 +- .../boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp | 294 +- .../boost/mpl/aux_/preprocessed/bcc551/deque.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/bcc551/divides.hpp | 292 +- .../mpl/aux_/preprocessed/bcc551/equal_to.hpp | 188 +- .../mpl/aux_/preprocessed/bcc551/fold_impl.hpp | 360 +- .../mpl/aux_/preprocessed/bcc551/full_lambda.hpp | 1116 +++--- .../boost/mpl/aux_/preprocessed/bcc551/greater.hpp | 188 +- .../mpl/aux_/preprocessed/bcc551/greater_equal.hpp | 188 +- .../boost/mpl/aux_/preprocessed/bcc551/inherit.hpp | 282 +- .../aux_/preprocessed/bcc551/iter_fold_if_impl.hpp | 266 +- .../aux_/preprocessed/bcc551/iter_fold_impl.hpp | 360 +- .../aux_/preprocessed/bcc551/lambda_no_ctps.hpp | 458 +-- .../boost/mpl/aux_/preprocessed/bcc551/less.hpp | 188 +- .../mpl/aux_/preprocessed/bcc551/less_equal.hpp | 188 +- .../boost/mpl/aux_/preprocessed/bcc551/list.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/bcc551/list_c.hpp | 656 ++-- .../src/boost/mpl/aux_/preprocessed/bcc551/map.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/bcc551/minus.hpp | 292 +- .../boost/mpl/aux_/preprocessed/bcc551/modulus.hpp | 202 +- .../mpl/aux_/preprocessed/bcc551/not_equal_to.hpp | 188 +- .../src/boost/mpl/aux_/preprocessed/bcc551/or.hpp | 138 +- .../mpl/aux_/preprocessed/bcc551/placeholders.hpp | 210 +- .../boost/mpl/aux_/preprocessed/bcc551/plus.hpp | 292 +- .../boost/mpl/aux_/preprocessed/bcc551/quote.hpp | 22 +- .../aux_/preprocessed/bcc551/reverse_fold_impl.hpp | 590 +-- .../preprocessed/bcc551/reverse_iter_fold_impl.hpp | 590 +-- .../src/boost/mpl/aux_/preprocessed/bcc551/set.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/bcc551/set_c.hpp | 656 ++-- .../mpl/aux_/preprocessed/bcc551/shift_left.hpp | 198 +- .../mpl/aux_/preprocessed/bcc551/shift_right.hpp | 198 +- .../aux_/preprocessed/bcc551/template_arity.hpp | 80 +- .../boost/mpl/aux_/preprocessed/bcc551/times.hpp | 292 +- .../mpl/aux_/preprocessed/bcc551/unpack_args.hpp | 194 +- .../boost/mpl/aux_/preprocessed/bcc551/vector.hpp | 646 ++-- .../mpl/aux_/preprocessed/bcc551/vector_c.hpp | 618 ++-- .../preprocessed/bcc_pre590/advance_backward.hpp | 194 +- .../preprocessed/bcc_pre590/advance_forward.hpp | 194 +- .../boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp | 138 +- .../mpl/aux_/preprocessed/bcc_pre590/apply.hpp | 338 +- .../mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp | 104 +- .../aux_/preprocessed/bcc_pre590/apply_wrap.hpp | 912 ++--- .../boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp | 234 +- .../aux_/preprocessed/bcc_pre590/basic_bind.hpp | 600 ++-- .../mpl/aux_/preprocessed/bcc_pre590/bind.hpp | 794 ++--- .../mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp | 92 +- .../mpl/aux_/preprocessed/bcc_pre590/bitand.hpp | 294 +- .../mpl/aux_/preprocessed/bcc_pre590/bitor.hpp | 294 +- .../mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp | 294 +- .../mpl/aux_/preprocessed/bcc_pre590/deque.hpp | 646 ++-- .../mpl/aux_/preprocessed/bcc_pre590/divides.hpp | 292 +- .../mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp | 188 +- .../mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp | 360 +- .../aux_/preprocessed/bcc_pre590/full_lambda.hpp | 1116 +++--- .../mpl/aux_/preprocessed/bcc_pre590/greater.hpp | 188 +- .../aux_/preprocessed/bcc_pre590/greater_equal.hpp | 188 +- .../mpl/aux_/preprocessed/bcc_pre590/inherit.hpp | 278 +- .../preprocessed/bcc_pre590/iter_fold_if_impl.hpp | 266 +- .../preprocessed/bcc_pre590/iter_fold_impl.hpp | 360 +- .../preprocessed/bcc_pre590/lambda_no_ctps.hpp | 458 +-- .../mpl/aux_/preprocessed/bcc_pre590/less.hpp | 188 +- .../aux_/preprocessed/bcc_pre590/less_equal.hpp | 188 +- .../mpl/aux_/preprocessed/bcc_pre590/list.hpp | 646 ++-- .../mpl/aux_/preprocessed/bcc_pre590/list_c.hpp | 656 ++-- .../boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp | 646 ++-- .../mpl/aux_/preprocessed/bcc_pre590/minus.hpp | 292 +- .../mpl/aux_/preprocessed/bcc_pre590/modulus.hpp | 202 +- .../aux_/preprocessed/bcc_pre590/not_equal_to.hpp | 188 +- .../boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp | 138 +- .../aux_/preprocessed/bcc_pre590/placeholders.hpp | 210 +- .../mpl/aux_/preprocessed/bcc_pre590/plus.hpp | 292 +- .../mpl/aux_/preprocessed/bcc_pre590/quote.hpp | 22 +- .../preprocessed/bcc_pre590/reverse_fold_impl.hpp | 590 +-- .../bcc_pre590/reverse_iter_fold_impl.hpp | 590 +-- .../boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp | 646 ++-- .../mpl/aux_/preprocessed/bcc_pre590/set_c.hpp | 656 ++-- .../aux_/preprocessed/bcc_pre590/shift_left.hpp | 198 +- .../aux_/preprocessed/bcc_pre590/shift_right.hpp | 198 +- .../preprocessed/bcc_pre590/template_arity.hpp | 80 +- .../mpl/aux_/preprocessed/bcc_pre590/times.hpp | 292 +- .../aux_/preprocessed/bcc_pre590/unpack_args.hpp | 194 +- .../mpl/aux_/preprocessed/bcc_pre590/vector.hpp | 646 ++-- .../mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp | 618 ++-- .../mpl/aux_/preprocessed/dmc/advance_backward.hpp | 194 +- .../mpl/aux_/preprocessed/dmc/advance_forward.hpp | 194 +- .../src/boost/mpl/aux_/preprocessed/dmc/and.hpp | 138 +- .../src/boost/mpl/aux_/preprocessed/dmc/apply.hpp | 338 +- .../boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp | 104 +- .../boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp | 168 +- .../src/boost/mpl/aux_/preprocessed/dmc/arg.hpp | 246 +- .../boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp | 812 ++--- .../src/boost/mpl/aux_/preprocessed/dmc/bind.hpp | 1030 +++--- .../boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp | 106 +- .../src/boost/mpl/aux_/preprocessed/dmc/bitand.hpp | 294 +- .../src/boost/mpl/aux_/preprocessed/dmc/bitor.hpp | 294 +- .../src/boost/mpl/aux_/preprocessed/dmc/bitxor.hpp | 294 +- .../src/boost/mpl/aux_/preprocessed/dmc/deque.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/dmc/divides.hpp | 292 +- .../boost/mpl/aux_/preprocessed/dmc/equal_to.hpp | 188 +- .../boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp | 360 +- .../mpl/aux_/preprocessed/dmc/full_lambda.hpp | 1072 +++--- .../boost/mpl/aux_/preprocessed/dmc/greater.hpp | 188 +- .../mpl/aux_/preprocessed/dmc/greater_equal.hpp | 188 +- .../boost/mpl/aux_/preprocessed/dmc/inherit.hpp | 282 +- .../aux_/preprocessed/dmc/iter_fold_if_impl.hpp | 266 +- .../mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp | 360 +- .../mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp | 458 +-- .../src/boost/mpl/aux_/preprocessed/dmc/less.hpp | 188 +- .../boost/mpl/aux_/preprocessed/dmc/less_equal.hpp | 188 +- .../src/boost/mpl/aux_/preprocessed/dmc/list.hpp | 646 ++-- .../src/boost/mpl/aux_/preprocessed/dmc/list_c.hpp | 656 ++-- .../src/boost/mpl/aux_/preprocessed/dmc/map.hpp | 646 ++-- .../src/boost/mpl/aux_/preprocessed/dmc/minus.hpp | 292 +- .../boost/mpl/aux_/preprocessed/dmc/modulus.hpp | 202 +- .../mpl/aux_/preprocessed/dmc/not_equal_to.hpp | 188 +- contrib/src/boost/mpl/aux_/preprocessed/dmc/or.hpp | 138 +- .../mpl/aux_/preprocessed/dmc/placeholders.hpp | 210 +- .../src/boost/mpl/aux_/preprocessed/dmc/plus.hpp | 292 +- .../src/boost/mpl/aux_/preprocessed/dmc/quote.hpp | 246 +- .../aux_/preprocessed/dmc/reverse_fold_impl.hpp | 462 +-- .../preprocessed/dmc/reverse_iter_fold_impl.hpp | 462 +-- .../src/boost/mpl/aux_/preprocessed/dmc/set.hpp | 646 ++-- .../src/boost/mpl/aux_/preprocessed/dmc/set_c.hpp | 656 ++-- .../boost/mpl/aux_/preprocessed/dmc/shift_left.hpp | 198 +- .../mpl/aux_/preprocessed/dmc/shift_right.hpp | 198 +- .../mpl/aux_/preprocessed/dmc/template_arity.hpp | 22 +- .../src/boost/mpl/aux_/preprocessed/dmc/times.hpp | 292 +- .../mpl/aux_/preprocessed/dmc/unpack_args.hpp | 188 +- .../src/boost/mpl/aux_/preprocessed/dmc/vector.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/dmc/vector_c.hpp | 618 ++-- .../mpl/aux_/preprocessed/gcc/advance_backward.hpp | 194 +- .../mpl/aux_/preprocessed/gcc/advance_forward.hpp | 194 +- .../src/boost/mpl/aux_/preprocessed/gcc/and.hpp | 138 +- .../src/boost/mpl/aux_/preprocessed/gcc/apply.hpp | 338 +- .../boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp | 104 +- .../boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp | 168 +- .../src/boost/mpl/aux_/preprocessed/gcc/arg.hpp | 246 +- .../boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp | 880 ++--- .../src/boost/mpl/aux_/preprocessed/gcc/bind.hpp | 1122 +++--- .../boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp | 104 +- .../src/boost/mpl/aux_/preprocessed/gcc/bitand.hpp | 294 +- .../src/boost/mpl/aux_/preprocessed/gcc/bitor.hpp | 294 +- .../src/boost/mpl/aux_/preprocessed/gcc/bitxor.hpp | 294 +- .../src/boost/mpl/aux_/preprocessed/gcc/deque.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/gcc/divides.hpp | 292 +- .../boost/mpl/aux_/preprocessed/gcc/equal_to.hpp | 188 +- .../boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp | 360 +- .../mpl/aux_/preprocessed/gcc/full_lambda.hpp | 1116 +++--- .../boost/mpl/aux_/preprocessed/gcc/greater.hpp | 188 +- .../mpl/aux_/preprocessed/gcc/greater_equal.hpp | 188 +- .../boost/mpl/aux_/preprocessed/gcc/inherit.hpp | 282 +- .../aux_/preprocessed/gcc/iter_fold_if_impl.hpp | 266 +- .../mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp | 360 +- .../mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp | 458 +-- .../src/boost/mpl/aux_/preprocessed/gcc/less.hpp | 188 +- .../boost/mpl/aux_/preprocessed/gcc/less_equal.hpp | 188 +- .../src/boost/mpl/aux_/preprocessed/gcc/list.hpp | 646 ++-- .../src/boost/mpl/aux_/preprocessed/gcc/list_c.hpp | 656 ++-- .../src/boost/mpl/aux_/preprocessed/gcc/map.hpp | 646 ++-- .../src/boost/mpl/aux_/preprocessed/gcc/minus.hpp | 292 +- .../boost/mpl/aux_/preprocessed/gcc/modulus.hpp | 202 +- .../mpl/aux_/preprocessed/gcc/not_equal_to.hpp | 188 +- contrib/src/boost/mpl/aux_/preprocessed/gcc/or.hpp | 138 +- .../mpl/aux_/preprocessed/gcc/placeholders.hpp | 210 +- .../src/boost/mpl/aux_/preprocessed/gcc/plus.hpp | 292 +- .../src/boost/mpl/aux_/preprocessed/gcc/quote.hpp | 246 +- .../aux_/preprocessed/gcc/reverse_fold_impl.hpp | 462 +-- .../preprocessed/gcc/reverse_iter_fold_impl.hpp | 462 +-- .../src/boost/mpl/aux_/preprocessed/gcc/set.hpp | 646 ++-- .../src/boost/mpl/aux_/preprocessed/gcc/set_c.hpp | 656 ++-- .../boost/mpl/aux_/preprocessed/gcc/shift_left.hpp | 198 +- .../mpl/aux_/preprocessed/gcc/shift_right.hpp | 198 +- .../mpl/aux_/preprocessed/gcc/template_arity.hpp | 194 +- .../src/boost/mpl/aux_/preprocessed/gcc/times.hpp | 292 +- .../mpl/aux_/preprocessed/gcc/unpack_args.hpp | 188 +- .../src/boost/mpl/aux_/preprocessed/gcc/vector.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/gcc/vector_c.hpp | 618 ++-- .../aux_/preprocessed/msvc60/advance_backward.hpp | 264 +- .../aux_/preprocessed/msvc60/advance_forward.hpp | 264 +- .../src/boost/mpl/aux_/preprocessed/msvc60/and.hpp | 146 +- .../boost/mpl/aux_/preprocessed/msvc60/apply.hpp | 332 +- .../mpl/aux_/preprocessed/msvc60/apply_fwd.hpp | 92 +- .../mpl/aux_/preprocessed/msvc60/apply_wrap.hpp | 494 +-- .../src/boost/mpl/aux_/preprocessed/msvc60/arg.hpp | 246 +- .../mpl/aux_/preprocessed/msvc60/basic_bind.hpp | 656 ++-- .../boost/mpl/aux_/preprocessed/msvc60/bind.hpp | 864 ++--- .../mpl/aux_/preprocessed/msvc60/bind_fwd.hpp | 92 +- .../boost/mpl/aux_/preprocessed/msvc60/bitand.hpp | 298 +- .../boost/mpl/aux_/preprocessed/msvc60/bitor.hpp | 298 +- .../boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp | 298 +- .../boost/mpl/aux_/preprocessed/msvc60/deque.hpp | 1112 +++--- .../boost/mpl/aux_/preprocessed/msvc60/divides.hpp | 296 +- .../mpl/aux_/preprocessed/msvc60/equal_to.hpp | 204 +- .../mpl/aux_/preprocessed/msvc60/fold_impl.hpp | 586 +-- .../mpl/aux_/preprocessed/msvc60/full_lambda.hpp | 1108 +++--- .../boost/mpl/aux_/preprocessed/msvc60/greater.hpp | 204 +- .../mpl/aux_/preprocessed/msvc60/greater_equal.hpp | 204 +- .../boost/mpl/aux_/preprocessed/msvc60/inherit.hpp | 332 +- .../aux_/preprocessed/msvc60/iter_fold_if_impl.hpp | 266 +- .../aux_/preprocessed/msvc60/iter_fold_impl.hpp | 586 +-- .../aux_/preprocessed/msvc60/lambda_no_ctps.hpp | 458 +-- .../boost/mpl/aux_/preprocessed/msvc60/less.hpp | 204 +- .../mpl/aux_/preprocessed/msvc60/less_equal.hpp | 204 +- .../boost/mpl/aux_/preprocessed/msvc60/list.hpp | 1112 +++--- .../boost/mpl/aux_/preprocessed/msvc60/list_c.hpp | 1068 +++--- .../src/boost/mpl/aux_/preprocessed/msvc60/map.hpp | 1112 +++--- .../boost/mpl/aux_/preprocessed/msvc60/minus.hpp | 296 +- .../boost/mpl/aux_/preprocessed/msvc60/modulus.hpp | 230 +- .../mpl/aux_/preprocessed/msvc60/not_equal_to.hpp | 204 +- .../src/boost/mpl/aux_/preprocessed/msvc60/or.hpp | 146 +- .../mpl/aux_/preprocessed/msvc60/placeholders.hpp | 210 +- .../boost/mpl/aux_/preprocessed/msvc60/plus.hpp | 296 +- .../boost/mpl/aux_/preprocessed/msvc60/quote.hpp | 22 +- .../aux_/preprocessed/msvc60/reverse_fold_impl.hpp | 686 ++-- .../preprocessed/msvc60/reverse_iter_fold_impl.hpp | 686 ++-- .../src/boost/mpl/aux_/preprocessed/msvc60/set.hpp | 1112 +++--- .../boost/mpl/aux_/preprocessed/msvc60/set_c.hpp | 1068 +++--- .../mpl/aux_/preprocessed/msvc60/shift_left.hpp | 228 +- .../mpl/aux_/preprocessed/msvc60/shift_right.hpp | 228 +- .../aux_/preprocessed/msvc60/template_arity.hpp | 92 +- .../boost/mpl/aux_/preprocessed/msvc60/times.hpp | 296 +- .../mpl/aux_/preprocessed/msvc60/unpack_args.hpp | 218 +- .../boost/mpl/aux_/preprocessed/msvc60/vector.hpp | 1112 +++--- .../mpl/aux_/preprocessed/msvc60/vector_c.hpp | 1068 +++--- .../aux_/preprocessed/msvc70/advance_backward.hpp | 194 +- .../aux_/preprocessed/msvc70/advance_forward.hpp | 194 +- .../src/boost/mpl/aux_/preprocessed/msvc70/and.hpp | 142 +- .../boost/mpl/aux_/preprocessed/msvc70/apply.hpp | 320 +- .../mpl/aux_/preprocessed/msvc70/apply_fwd.hpp | 92 +- .../mpl/aux_/preprocessed/msvc70/apply_wrap.hpp | 276 +- .../src/boost/mpl/aux_/preprocessed/msvc70/arg.hpp | 246 +- .../mpl/aux_/preprocessed/msvc70/basic_bind.hpp | 656 ++-- .../boost/mpl/aux_/preprocessed/msvc70/bind.hpp | 864 ++--- .../mpl/aux_/preprocessed/msvc70/bind_fwd.hpp | 92 +- .../boost/mpl/aux_/preprocessed/msvc70/bitand.hpp | 302 +- .../boost/mpl/aux_/preprocessed/msvc70/bitor.hpp | 302 +- .../boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp | 302 +- .../boost/mpl/aux_/preprocessed/msvc70/deque.hpp | 1112 +++--- .../boost/mpl/aux_/preprocessed/msvc70/divides.hpp | 300 +- .../mpl/aux_/preprocessed/msvc70/equal_to.hpp | 204 +- .../mpl/aux_/preprocessed/msvc70/fold_impl.hpp | 490 +-- .../mpl/aux_/preprocessed/msvc70/full_lambda.hpp | 1108 +++--- .../boost/mpl/aux_/preprocessed/msvc70/greater.hpp | 204 +- .../mpl/aux_/preprocessed/msvc70/greater_equal.hpp | 204 +- .../boost/mpl/aux_/preprocessed/msvc70/inherit.hpp | 332 +- .../aux_/preprocessed/msvc70/iter_fold_if_impl.hpp | 266 +- .../aux_/preprocessed/msvc70/iter_fold_impl.hpp | 490 +-- .../aux_/preprocessed/msvc70/lambda_no_ctps.hpp | 458 +-- .../boost/mpl/aux_/preprocessed/msvc70/less.hpp | 204 +- .../mpl/aux_/preprocessed/msvc70/less_equal.hpp | 204 +- .../boost/mpl/aux_/preprocessed/msvc70/list.hpp | 1112 +++--- .../boost/mpl/aux_/preprocessed/msvc70/list_c.hpp | 1068 +++--- .../src/boost/mpl/aux_/preprocessed/msvc70/map.hpp | 1112 +++--- .../boost/mpl/aux_/preprocessed/msvc70/minus.hpp | 300 +- .../boost/mpl/aux_/preprocessed/msvc70/modulus.hpp | 230 +- .../mpl/aux_/preprocessed/msvc70/not_equal_to.hpp | 204 +- .../src/boost/mpl/aux_/preprocessed/msvc70/or.hpp | 142 +- .../mpl/aux_/preprocessed/msvc70/placeholders.hpp | 210 +- .../boost/mpl/aux_/preprocessed/msvc70/plus.hpp | 300 +- .../boost/mpl/aux_/preprocessed/msvc70/quote.hpp | 232 +- .../aux_/preprocessed/msvc70/reverse_fold_impl.hpp | 590 +-- .../preprocessed/msvc70/reverse_iter_fold_impl.hpp | 590 +-- .../src/boost/mpl/aux_/preprocessed/msvc70/set.hpp | 1112 +++--- .../boost/mpl/aux_/preprocessed/msvc70/set_c.hpp | 1068 +++--- .../mpl/aux_/preprocessed/msvc70/shift_left.hpp | 228 +- .../mpl/aux_/preprocessed/msvc70/shift_right.hpp | 228 +- .../aux_/preprocessed/msvc70/template_arity.hpp | 92 +- .../boost/mpl/aux_/preprocessed/msvc70/times.hpp | 300 +- .../mpl/aux_/preprocessed/msvc70/unpack_args.hpp | 218 +- .../boost/mpl/aux_/preprocessed/msvc70/vector.hpp | 1112 +++--- .../mpl/aux_/preprocessed/msvc70/vector_c.hpp | 1068 +++--- .../aux_/preprocessed/mwcw/advance_backward.hpp | 194 +- .../mpl/aux_/preprocessed/mwcw/advance_forward.hpp | 194 +- .../src/boost/mpl/aux_/preprocessed/mwcw/and.hpp | 138 +- .../src/boost/mpl/aux_/preprocessed/mwcw/apply.hpp | 338 +- .../boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp | 104 +- .../mpl/aux_/preprocessed/mwcw/apply_wrap.hpp | 912 ++--- .../src/boost/mpl/aux_/preprocessed/mwcw/arg.hpp | 246 +- .../mpl/aux_/preprocessed/mwcw/basic_bind.hpp | 880 ++--- .../src/boost/mpl/aux_/preprocessed/mwcw/bind.hpp | 1122 +++--- .../boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp | 104 +- .../boost/mpl/aux_/preprocessed/mwcw/bitand.hpp | 294 +- .../src/boost/mpl/aux_/preprocessed/mwcw/bitor.hpp | 294 +- .../boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp | 294 +- .../src/boost/mpl/aux_/preprocessed/mwcw/deque.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/mwcw/divides.hpp | 292 +- .../boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp | 188 +- .../boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp | 360 +- .../mpl/aux_/preprocessed/mwcw/full_lambda.hpp | 1108 +++--- .../boost/mpl/aux_/preprocessed/mwcw/greater.hpp | 188 +- .../mpl/aux_/preprocessed/mwcw/greater_equal.hpp | 188 +- .../boost/mpl/aux_/preprocessed/mwcw/inherit.hpp | 282 +- .../aux_/preprocessed/mwcw/iter_fold_if_impl.hpp | 266 +- .../mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp | 360 +- .../mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp | 458 +-- .../src/boost/mpl/aux_/preprocessed/mwcw/less.hpp | 188 +- .../mpl/aux_/preprocessed/mwcw/less_equal.hpp | 188 +- .../src/boost/mpl/aux_/preprocessed/mwcw/list.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/mwcw/list_c.hpp | 656 ++-- .../src/boost/mpl/aux_/preprocessed/mwcw/map.hpp | 646 ++-- .../src/boost/mpl/aux_/preprocessed/mwcw/minus.hpp | 292 +- .../boost/mpl/aux_/preprocessed/mwcw/modulus.hpp | 202 +- .../mpl/aux_/preprocessed/mwcw/not_equal_to.hpp | 188 +- .../src/boost/mpl/aux_/preprocessed/mwcw/or.hpp | 138 +- .../mpl/aux_/preprocessed/mwcw/placeholders.hpp | 210 +- .../src/boost/mpl/aux_/preprocessed/mwcw/plus.hpp | 292 +- .../src/boost/mpl/aux_/preprocessed/mwcw/quote.hpp | 246 +- .../aux_/preprocessed/mwcw/reverse_fold_impl.hpp | 462 +-- .../preprocessed/mwcw/reverse_iter_fold_impl.hpp | 462 +-- .../src/boost/mpl/aux_/preprocessed/mwcw/set.hpp | 646 ++-- .../src/boost/mpl/aux_/preprocessed/mwcw/set_c.hpp | 656 ++-- .../mpl/aux_/preprocessed/mwcw/shift_left.hpp | 198 +- .../mpl/aux_/preprocessed/mwcw/shift_right.hpp | 198 +- .../mpl/aux_/preprocessed/mwcw/template_arity.hpp | 22 +- .../src/boost/mpl/aux_/preprocessed/mwcw/times.hpp | 292 +- .../mpl/aux_/preprocessed/mwcw/unpack_args.hpp | 188 +- .../boost/mpl/aux_/preprocessed/mwcw/vector.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp | 618 ++-- .../aux_/preprocessed/no_ctps/advance_backward.hpp | 194 +- .../aux_/preprocessed/no_ctps/advance_forward.hpp | 194 +- .../boost/mpl/aux_/preprocessed/no_ctps/and.hpp | 146 +- .../boost/mpl/aux_/preprocessed/no_ctps/apply.hpp | 536 +-- .../mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp | 100 +- .../mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp | 156 +- .../boost/mpl/aux_/preprocessed/no_ctps/arg.hpp | 246 +- .../mpl/aux_/preprocessed/no_ctps/basic_bind.hpp | 972 ++--- .../boost/mpl/aux_/preprocessed/no_ctps/bind.hpp | 1180 +++--- .../mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp | 104 +- .../boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp | 268 +- .../boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp | 268 +- .../boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp | 268 +- .../boost/mpl/aux_/preprocessed/no_ctps/deque.hpp | 1112 +++--- .../mpl/aux_/preprocessed/no_ctps/divides.hpp | 266 +- .../mpl/aux_/preprocessed/no_ctps/equal_to.hpp | 188 +- .../mpl/aux_/preprocessed/no_ctps/fold_impl.hpp | 490 +-- .../mpl/aux_/preprocessed/no_ctps/full_lambda.hpp | 1108 +++--- .../mpl/aux_/preprocessed/no_ctps/greater.hpp | 188 +- .../aux_/preprocessed/no_ctps/greater_equal.hpp | 188 +- .../mpl/aux_/preprocessed/no_ctps/inherit.hpp | 332 +- .../preprocessed/no_ctps/iter_fold_if_impl.hpp | 266 +- .../aux_/preprocessed/no_ctps/iter_fold_impl.hpp | 490 +-- .../aux_/preprocessed/no_ctps/lambda_no_ctps.hpp | 458 +-- .../boost/mpl/aux_/preprocessed/no_ctps/less.hpp | 188 +- .../mpl/aux_/preprocessed/no_ctps/less_equal.hpp | 188 +- .../boost/mpl/aux_/preprocessed/no_ctps/list.hpp | 1112 +++--- .../boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp | 1068 +++--- .../boost/mpl/aux_/preprocessed/no_ctps/map.hpp | 1112 +++--- .../boost/mpl/aux_/preprocessed/no_ctps/minus.hpp | 266 +- .../mpl/aux_/preprocessed/no_ctps/modulus.hpp | 202 +- .../mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp | 188 +- .../src/boost/mpl/aux_/preprocessed/no_ctps/or.hpp | 146 +- .../mpl/aux_/preprocessed/no_ctps/placeholders.hpp | 210 +- .../boost/mpl/aux_/preprocessed/no_ctps/plus.hpp | 266 +- .../boost/mpl/aux_/preprocessed/no_ctps/quote.hpp | 232 +- .../preprocessed/no_ctps/reverse_fold_impl.hpp | 590 +-- .../no_ctps/reverse_iter_fold_impl.hpp | 590 +-- .../boost/mpl/aux_/preprocessed/no_ctps/set.hpp | 1112 +++--- .../boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp | 1068 +++--- .../mpl/aux_/preprocessed/no_ctps/shift_left.hpp | 198 +- .../mpl/aux_/preprocessed/no_ctps/shift_right.hpp | 198 +- .../aux_/preprocessed/no_ctps/template_arity.hpp | 80 +- .../boost/mpl/aux_/preprocessed/no_ctps/times.hpp | 266 +- .../mpl/aux_/preprocessed/no_ctps/unpack_args.hpp | 218 +- .../boost/mpl/aux_/preprocessed/no_ctps/vector.hpp | 1112 +++--- .../mpl/aux_/preprocessed/no_ctps/vector_c.hpp | 1068 +++--- .../aux_/preprocessed/no_ttp/advance_backward.hpp | 194 +- .../aux_/preprocessed/no_ttp/advance_forward.hpp | 194 +- .../src/boost/mpl/aux_/preprocessed/no_ttp/and.hpp | 138 +- .../boost/mpl/aux_/preprocessed/no_ttp/apply.hpp | 338 +- .../mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp | 104 +- .../mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp | 168 +- .../src/boost/mpl/aux_/preprocessed/no_ttp/arg.hpp | 246 +- .../mpl/aux_/preprocessed/no_ttp/basic_bind.hpp | 738 ++-- .../boost/mpl/aux_/preprocessed/no_ttp/bind.hpp | 932 ++--- .../mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp | 104 +- .../boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp | 314 +- .../boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp | 314 +- .../boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp | 314 +- .../boost/mpl/aux_/preprocessed/no_ttp/deque.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/no_ttp/divides.hpp | 312 +- .../mpl/aux_/preprocessed/no_ttp/equal_to.hpp | 196 +- .../mpl/aux_/preprocessed/no_ttp/fold_impl.hpp | 360 +- .../mpl/aux_/preprocessed/no_ttp/full_lambda.hpp | 1108 +++--- .../boost/mpl/aux_/preprocessed/no_ttp/greater.hpp | 196 +- .../mpl/aux_/preprocessed/no_ttp/greater_equal.hpp | 196 +- .../boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp | 282 +- .../aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp | 266 +- .../aux_/preprocessed/no_ttp/iter_fold_impl.hpp | 360 +- .../aux_/preprocessed/no_ttp/lambda_no_ctps.hpp | 458 +-- .../boost/mpl/aux_/preprocessed/no_ttp/less.hpp | 196 +- .../mpl/aux_/preprocessed/no_ttp/less_equal.hpp | 196 +- .../boost/mpl/aux_/preprocessed/no_ttp/list.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp | 656 ++-- .../src/boost/mpl/aux_/preprocessed/no_ttp/map.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/no_ttp/minus.hpp | 312 +- .../boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp | 222 +- .../mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp | 196 +- .../src/boost/mpl/aux_/preprocessed/no_ttp/or.hpp | 138 +- .../mpl/aux_/preprocessed/no_ttp/placeholders.hpp | 210 +- .../boost/mpl/aux_/preprocessed/no_ttp/plus.hpp | 312 +- .../boost/mpl/aux_/preprocessed/no_ttp/quote.hpp | 22 +- .../aux_/preprocessed/no_ttp/reverse_fold_impl.hpp | 462 +-- .../preprocessed/no_ttp/reverse_iter_fold_impl.hpp | 462 +-- .../src/boost/mpl/aux_/preprocessed/no_ttp/set.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp | 656 ++-- .../mpl/aux_/preprocessed/no_ttp/shift_left.hpp | 220 +- .../mpl/aux_/preprocessed/no_ttp/shift_right.hpp | 220 +- .../aux_/preprocessed/no_ttp/template_arity.hpp | 80 +- .../boost/mpl/aux_/preprocessed/no_ttp/times.hpp | 312 +- .../mpl/aux_/preprocessed/no_ttp/unpack_args.hpp | 188 +- .../boost/mpl/aux_/preprocessed/no_ttp/vector.hpp | 646 ++-- .../mpl/aux_/preprocessed/no_ttp/vector_c.hpp | 618 ++-- .../aux_/preprocessed/plain/advance_backward.hpp | 194 +- .../aux_/preprocessed/plain/advance_forward.hpp | 194 +- .../src/boost/mpl/aux_/preprocessed/plain/and.hpp | 128 +- .../boost/mpl/aux_/preprocessed/plain/apply.hpp | 278 +- .../mpl/aux_/preprocessed/plain/apply_fwd.hpp | 104 +- .../mpl/aux_/preprocessed/plain/apply_wrap.hpp | 168 +- .../src/boost/mpl/aux_/preprocessed/plain/arg.hpp | 246 +- .../mpl/aux_/preprocessed/plain/basic_bind.hpp | 880 ++--- .../src/boost/mpl/aux_/preprocessed/plain/bind.hpp | 1122 +++--- .../boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp | 104 +- .../boost/mpl/aux_/preprocessed/plain/bitand.hpp | 284 +- .../boost/mpl/aux_/preprocessed/plain/bitor.hpp | 284 +- .../boost/mpl/aux_/preprocessed/plain/bitxor.hpp | 284 +- .../boost/mpl/aux_/preprocessed/plain/deque.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/plain/divides.hpp | 282 +- .../boost/mpl/aux_/preprocessed/plain/equal_to.hpp | 184 +- .../mpl/aux_/preprocessed/plain/fold_impl.hpp | 360 +- .../mpl/aux_/preprocessed/plain/full_lambda.hpp | 1108 +++--- .../boost/mpl/aux_/preprocessed/plain/greater.hpp | 184 +- .../mpl/aux_/preprocessed/plain/greater_equal.hpp | 184 +- .../boost/mpl/aux_/preprocessed/plain/inherit.hpp | 250 +- .../aux_/preprocessed/plain/iter_fold_if_impl.hpp | 266 +- .../mpl/aux_/preprocessed/plain/iter_fold_impl.hpp | 360 +- .../mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp | 456 +-- .../src/boost/mpl/aux_/preprocessed/plain/less.hpp | 184 +- .../mpl/aux_/preprocessed/plain/less_equal.hpp | 184 +- .../src/boost/mpl/aux_/preprocessed/plain/list.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/plain/list_c.hpp | 656 ++-- .../src/boost/mpl/aux_/preprocessed/plain/map.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/plain/minus.hpp | 282 +- .../boost/mpl/aux_/preprocessed/plain/modulus.hpp | 198 +- .../mpl/aux_/preprocessed/plain/not_equal_to.hpp | 184 +- .../src/boost/mpl/aux_/preprocessed/plain/or.hpp | 128 +- .../mpl/aux_/preprocessed/plain/placeholders.hpp | 210 +- .../src/boost/mpl/aux_/preprocessed/plain/plus.hpp | 282 +- .../boost/mpl/aux_/preprocessed/plain/quote.hpp | 246 +- .../aux_/preprocessed/plain/reverse_fold_impl.hpp | 462 +-- .../preprocessed/plain/reverse_iter_fold_impl.hpp | 462 +-- .../src/boost/mpl/aux_/preprocessed/plain/set.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/plain/set_c.hpp | 656 ++-- .../mpl/aux_/preprocessed/plain/shift_left.hpp | 194 +- .../mpl/aux_/preprocessed/plain/shift_right.hpp | 194 +- .../mpl/aux_/preprocessed/plain/template_arity.hpp | 22 +- .../boost/mpl/aux_/preprocessed/plain/times.hpp | 282 +- .../mpl/aux_/preprocessed/plain/unpack_args.hpp | 188 +- .../boost/mpl/aux_/preprocessed/plain/vector.hpp | 646 ++-- .../boost/mpl/aux_/preprocessed/plain/vector_c.hpp | 618 ++-- contrib/src/boost/mpl/aux_/preprocessor/add.hpp | 130 +- .../mpl/aux_/preprocessor/def_params_tail.hpp | 210 +- .../boost/mpl/aux_/preprocessor/default_params.hpp | 134 +- contrib/src/boost/mpl/aux_/preprocessor/enum.hpp | 124 +- .../src/boost/mpl/aux_/preprocessor/ext_params.hpp | 156 +- .../boost/mpl/aux_/preprocessor/filter_params.hpp | 56 +- contrib/src/boost/mpl/aux_/preprocessor/params.hpp | 130 +- .../mpl/aux_/preprocessor/partial_spec_params.hpp | 64 +- contrib/src/boost/mpl/aux_/preprocessor/range.hpp | 60 +- contrib/src/boost/mpl/aux_/preprocessor/repeat.hpp | 102 +- contrib/src/boost/mpl/aux_/preprocessor/sub.hpp | 130 +- contrib/src/boost/mpl/aux_/preprocessor/tuple.hpp | 58 +- contrib/src/boost/mpl/aux_/static_cast.hpp | 54 +- contrib/src/boost/mpl/aux_/template_arity.hpp | 378 +- contrib/src/boost/mpl/aux_/template_arity_fwd.hpp | 46 +- contrib/src/boost/mpl/aux_/type_wrapper.hpp | 94 +- contrib/src/boost/mpl/aux_/value_wknd.hpp | 178 +- contrib/src/boost/mpl/aux_/yes_no.hpp | 116 +- contrib/src/boost/mpl/bind.hpp | 1102 +++--- contrib/src/boost/mpl/bind_fwd.hpp | 198 +- contrib/src/boost/mpl/bool.hpp | 78 +- contrib/src/boost/mpl/bool_fwd.hpp | 66 +- contrib/src/boost/mpl/eval_if.hpp | 142 +- contrib/src/boost/mpl/has_xxx.hpp | 1294 +++---- contrib/src/boost/mpl/identity.hpp | 90 +- contrib/src/boost/mpl/if.hpp | 270 +- contrib/src/boost/mpl/int.hpp | 44 +- contrib/src/boost/mpl/int_fwd.hpp | 54 +- contrib/src/boost/mpl/integral_c_tag.hpp | 52 +- contrib/src/boost/mpl/is_placeholder.hpp | 134 +- contrib/src/boost/mpl/lambda.hpp | 58 +- contrib/src/boost/mpl/lambda_fwd.hpp | 114 +- contrib/src/boost/mpl/limits/arity.hpp | 42 +- contrib/src/boost/mpl/logical.hpp | 42 +- contrib/src/boost/mpl/next.hpp | 38 +- contrib/src/boost/mpl/next_prior.hpp | 98 +- contrib/src/boost/mpl/not.hpp | 102 +- contrib/src/boost/mpl/or.hpp | 122 +- contrib/src/boost/mpl/placeholders.hpp | 200 +- contrib/src/boost/mpl/protect.hpp | 110 +- contrib/src/boost/mpl/quote.hpp | 302 +- contrib/src/boost/mpl/void.hpp | 152 +- contrib/src/boost/mpl/void_fwd.hpp | 52 +- contrib/src/boost/next_prior.hpp | 330 +- contrib/src/boost/noncopyable.hpp | 34 +- contrib/src/boost/pending/integer_log2.hpp | 18 +- contrib/src/boost/pending/lowest_bit.hpp | 78 +- contrib/src/boost/predef.h | 48 +- contrib/src/boost/predef/architecture.h | 64 +- contrib/src/boost/predef/architecture/alpha.h | 118 +- contrib/src/boost/predef/architecture/arm.h | 140 +- contrib/src/boost/predef/architecture/blackfin.h | 92 +- contrib/src/boost/predef/architecture/convex.h | 130 +- contrib/src/boost/predef/architecture/ia64.h | 98 +- contrib/src/boost/predef/architecture/m68k.h | 164 +- contrib/src/boost/predef/architecture/mips.h | 146 +- contrib/src/boost/predef/architecture/parisc.h | 128 +- contrib/src/boost/predef/architecture/ppc.h | 144 +- contrib/src/boost/predef/architecture/pyramid.h | 84 +- contrib/src/boost/predef/architecture/rs6k.h | 112 +- contrib/src/boost/predef/architecture/sparc.h | 108 +- contrib/src/boost/predef/architecture/superh.h | 134 +- contrib/src/boost/predef/architecture/sys370.h | 86 +- contrib/src/boost/predef/architecture/sys390.h | 86 +- contrib/src/boost/predef/architecture/x86.h | 76 +- contrib/src/boost/predef/architecture/x86/32.h | 174 +- contrib/src/boost/predef/architecture/x86/64.h | 100 +- contrib/src/boost/predef/architecture/z.h | 84 +- contrib/src/boost/predef/compiler.h | 86 +- contrib/src/boost/predef/compiler/borland.h | 126 +- contrib/src/boost/predef/compiler/clang.h | 112 +- contrib/src/boost/predef/compiler/comeau.h | 122 +- contrib/src/boost/predef/compiler/compaq.h | 132 +- contrib/src/boost/predef/compiler/diab.h | 112 +- contrib/src/boost/predef/compiler/digitalmars.h | 112 +- contrib/src/boost/predef/compiler/dignus.h | 112 +- contrib/src/boost/predef/compiler/edg.h | 112 +- contrib/src/boost/predef/compiler/ekopath.h | 114 +- contrib/src/boost/predef/compiler/gcc.h | 136 +- contrib/src/boost/predef/compiler/gcc_xml.h | 106 +- contrib/src/boost/predef/compiler/greenhills.h | 132 +- contrib/src/boost/predef/compiler/hp_acc.h | 122 +- contrib/src/boost/predef/compiler/iar.h | 112 +- contrib/src/boost/predef/compiler/ibm.h | 144 +- contrib/src/boost/predef/compiler/intel.h | 137 +- contrib/src/boost/predef/compiler/kai.h | 112 +- contrib/src/boost/predef/compiler/llvm.h | 114 +- contrib/src/boost/predef/compiler/metaware.h | 106 +- contrib/src/boost/predef/compiler/metrowerks.h | 154 +- contrib/src/boost/predef/compiler/microtec.h | 106 +- contrib/src/boost/predef/compiler/mpw.h | 126 +- contrib/src/boost/predef/compiler/palm.h | 112 +- contrib/src/boost/predef/compiler/pgi.h | 120 +- contrib/src/boost/predef/compiler/sgi_mipspro.h | 132 +- contrib/src/boost/predef/compiler/sunpro.h | 152 +- contrib/src/boost/predef/compiler/tendra.h | 106 +- contrib/src/boost/predef/compiler/visualc.h | 196 +- contrib/src/boost/predef/compiler/watcom.h | 112 +- contrib/src/boost/predef/detail/_cassert.h | 34 +- contrib/src/boost/predef/detail/_exception.h | 30 +- contrib/src/boost/predef/detail/comp_detected.h | 20 +- contrib/src/boost/predef/detail/os_detected.h | 20 +- .../src/boost/predef/detail/platform_detected.h | 20 +- contrib/src/boost/predef/detail/test.h | 34 +- contrib/src/boost/predef/hardware.h | 32 +- contrib/src/boost/predef/hardware/simd.h | 238 +- contrib/src/boost/predef/hardware/simd/arm.h | 114 +- .../src/boost/predef/hardware/simd/arm/versions.h | 64 +- contrib/src/boost/predef/hardware/simd/ppc.h | 138 +- .../src/boost/predef/hardware/simd/ppc/versions.h | 102 +- contrib/src/boost/predef/hardware/simd/x86.h | 246 +- .../src/boost/predef/hardware/simd/x86/versions.h | 258 +- contrib/src/boost/predef/hardware/simd/x86_amd.h | 174 +- .../boost/predef/hardware/simd/x86_amd/versions.h | 102 +- contrib/src/boost/predef/language.h | 34 +- contrib/src/boost/predef/language/objc.h | 84 +- contrib/src/boost/predef/language/stdc.h | 106 +- contrib/src/boost/predef/language/stdcpp.h | 242 +- contrib/src/boost/predef/library.h | 32 +- contrib/src/boost/predef/library/c.h | 40 +- contrib/src/boost/predef/library/c/_prefix.h | 26 +- contrib/src/boost/predef/library/c/gnu.h | 122 +- contrib/src/boost/predef/library/c/uc.h | 94 +- contrib/src/boost/predef/library/c/vms.h | 94 +- contrib/src/boost/predef/library/c/zos.h | 112 +- contrib/src/boost/predef/library/std.h | 50 +- contrib/src/boost/predef/library/std/_prefix.h | 46 +- contrib/src/boost/predef/library/std/cxx.h | 92 +- contrib/src/boost/predef/library/std/dinkumware.h | 104 +- contrib/src/boost/predef/library/std/libcomo.h | 94 +- contrib/src/boost/predef/library/std/modena.h | 90 +- contrib/src/boost/predef/library/std/msl.h | 106 +- contrib/src/boost/predef/library/std/roguewave.h | 112 +- contrib/src/boost/predef/library/std/sgi.h | 102 +- contrib/src/boost/predef/library/std/stdcpp3.h | 106 +- contrib/src/boost/predef/library/std/stlport.h | 118 +- contrib/src/boost/predef/library/std/vacpp.h | 88 +- contrib/src/boost/predef/make.h | 178 +- contrib/src/boost/predef/os.h | 66 +- contrib/src/boost/predef/os/aix.h | 132 +- contrib/src/boost/predef/os/amigaos.h | 92 +- contrib/src/boost/predef/os/android.h | 90 +- contrib/src/boost/predef/os/beos.h | 90 +- contrib/src/boost/predef/os/bsd.h | 206 +- contrib/src/boost/predef/os/bsd/bsdi.h | 96 +- contrib/src/boost/predef/os/bsd/dragonfly.h | 100 +- contrib/src/boost/predef/os/bsd/free.h | 120 +- contrib/src/boost/predef/os/bsd/net.h | 168 +- contrib/src/boost/predef/os/bsd/open.h | 342 +- contrib/src/boost/predef/os/cygwin.h | 90 +- contrib/src/boost/predef/os/haiku.h | 92 +- contrib/src/boost/predef/os/hpux.h | 94 +- contrib/src/boost/predef/os/ios.h | 102 +- contrib/src/boost/predef/os/irix.h | 92 +- contrib/src/boost/predef/os/linux.h | 92 +- contrib/src/boost/predef/os/macos.h | 130 +- contrib/src/boost/predef/os/os400.h | 90 +- contrib/src/boost/predef/os/qnxnto.h | 118 +- contrib/src/boost/predef/os/solaris.h | 92 +- contrib/src/boost/predef/os/unix.h | 152 +- contrib/src/boost/predef/os/vms.h | 104 +- contrib/src/boost/predef/os/windows.h | 102 +- contrib/src/boost/predef/other.h | 32 +- contrib/src/boost/predef/other/endian.h | 408 +-- contrib/src/boost/predef/platform.h | 42 +- contrib/src/boost/predef/platform/mingw.h | 138 +- .../src/boost/predef/platform/windows_desktop.h | 90 +- contrib/src/boost/predef/platform/windows_phone.h | 86 +- .../src/boost/predef/platform/windows_runtime.h | 90 +- contrib/src/boost/predef/platform/windows_store.h | 86 +- contrib/src/boost/predef/version.h | 30 +- contrib/src/boost/predef/version_number.h | 125 +- contrib/src/boost/preprocessor/arithmetic/add.hpp | 102 +- contrib/src/boost/preprocessor/arithmetic/dec.hpp | 578 +-- .../preprocessor/arithmetic/detail/div_base.hpp | 122 +- contrib/src/boost/preprocessor/arithmetic/inc.hpp | 576 +-- contrib/src/boost/preprocessor/arithmetic/mod.hpp | 78 +- contrib/src/boost/preprocessor/arithmetic/sub.hpp | 100 +- contrib/src/boost/preprocessor/array/data.hpp | 56 +- contrib/src/boost/preprocessor/array/elem.hpp | 58 +- contrib/src/boost/preprocessor/array/size.hpp | 56 +- contrib/src/boost/preprocessor/cat.hpp | 70 +- contrib/src/boost/preprocessor/comma_if.hpp | 34 +- .../boost/preprocessor/comparison/less_equal.hpp | 78 +- .../boost/preprocessor/comparison/not_equal.hpp | 1628 ++++----- contrib/src/boost/preprocessor/config/config.hpp | 208 +- .../src/boost/preprocessor/control/deduce_d.hpp | 44 +- .../preprocessor/control/detail/dmc/while.hpp | 1072 +++--- .../preprocessor/control/detail/edg/while.hpp | 1068 +++--- .../preprocessor/control/detail/msvc/while.hpp | 554 +-- .../boost/preprocessor/control/detail/while.hpp | 1072 +++--- contrib/src/boost/preprocessor/control/expr_if.hpp | 60 +- .../src/boost/preprocessor/control/expr_iif.hpp | 62 +- contrib/src/boost/preprocessor/control/if.hpp | 60 +- contrib/src/boost/preprocessor/control/iif.hpp | 68 +- contrib/src/boost/preprocessor/control/while.hpp | 624 ++-- contrib/src/boost/preprocessor/debug/error.hpp | 66 +- contrib/src/boost/preprocessor/dec.hpp | 34 +- contrib/src/boost/preprocessor/detail/auto_rec.hpp | 586 +-- contrib/src/boost/preprocessor/detail/check.hpp | 96 +- .../src/boost/preprocessor/detail/dmc/auto_rec.hpp | 572 +-- .../src/boost/preprocessor/detail/is_binary.hpp | 60 +- contrib/src/boost/preprocessor/detail/split.hpp | 70 +- contrib/src/boost/preprocessor/empty.hpp | 34 +- contrib/src/boost/preprocessor/enum.hpp | 34 +- contrib/src/boost/preprocessor/enum_params.hpp | 34 +- .../src/boost/preprocessor/enum_shifted_params.hpp | 34 +- contrib/src/boost/preprocessor/expr_if.hpp | 34 +- .../preprocessor/facilities/detail/is_empty.hpp | 110 +- .../src/boost/preprocessor/facilities/empty.hpp | 46 +- .../src/boost/preprocessor/facilities/expand.hpp | 56 +- .../src/boost/preprocessor/facilities/identity.hpp | 54 +- .../boost/preprocessor/facilities/intercept.hpp | 554 +-- contrib/src/boost/preprocessor/facilities/is_1.hpp | 46 +- .../src/boost/preprocessor/facilities/is_empty.hpp | 112 +- .../preprocessor/facilities/is_empty_variadic.hpp | 114 +- .../src/boost/preprocessor/facilities/overload.hpp | 50 +- contrib/src/boost/preprocessor/identity.hpp | 34 +- contrib/src/boost/preprocessor/inc.hpp | 34 +- contrib/src/boost/preprocessor/iterate.hpp | 34 +- .../iteration/detail/bounds/lower1.hpp | 198 +- .../iteration/detail/bounds/lower2.hpp | 198 +- .../iteration/detail/bounds/lower3.hpp | 198 +- .../iteration/detail/bounds/lower4.hpp | 198 +- .../iteration/detail/bounds/lower5.hpp | 198 +- .../iteration/detail/bounds/upper1.hpp | 198 +- .../iteration/detail/bounds/upper2.hpp | 198 +- .../iteration/detail/bounds/upper3.hpp | 198 +- .../iteration/detail/bounds/upper4.hpp | 198 +- .../iteration/detail/bounds/upper5.hpp | 198 +- .../boost/preprocessor/iteration/detail/finish.hpp | 198 +- .../iteration/detail/iter/forward1.hpp | 2684 +++++++------- .../iteration/detail/iter/forward2.hpp | 2676 +++++++------- .../iteration/detail/iter/forward3.hpp | 2676 +++++++------- .../iteration/detail/iter/forward4.hpp | 2676 +++++++------- .../iteration/detail/iter/forward5.hpp | 2676 +++++++------- .../iteration/detail/iter/reverse1.hpp | 2592 +++++++------- .../iteration/detail/iter/reverse2.hpp | 2592 +++++++------- .../iteration/detail/iter/reverse3.hpp | 2592 +++++++------- .../iteration/detail/iter/reverse4.hpp | 2592 +++++++------- .../iteration/detail/iter/reverse5.hpp | 2592 +++++++------- .../boost/preprocessor/iteration/detail/local.hpp | 1624 ++++----- .../boost/preprocessor/iteration/detail/rlocal.hpp | 1564 ++++---- .../boost/preprocessor/iteration/detail/self.hpp | 42 +- .../boost/preprocessor/iteration/detail/start.hpp | 198 +- .../src/boost/preprocessor/iteration/iterate.hpp | 164 +- contrib/src/boost/preprocessor/iteration/local.hpp | 52 +- contrib/src/boost/preprocessor/iteration/self.hpp | 38 +- contrib/src/boost/preprocessor/list/adt.hpp | 146 +- .../preprocessor/list/detail/dmc/fold_left.hpp | 558 +-- .../preprocessor/list/detail/edg/fold_left.hpp | 1072 +++--- .../preprocessor/list/detail/edg/fold_right.hpp | 1588 ++++----- .../boost/preprocessor/list/detail/fold_left.hpp | 558 +-- .../boost/preprocessor/list/detail/fold_right.hpp | 554 +-- contrib/src/boost/preprocessor/list/fold_left.hpp | 606 ++-- contrib/src/boost/preprocessor/list/fold_right.hpp | 80 +- contrib/src/boost/preprocessor/list/for_each_i.hpp | 130 +- contrib/src/boost/preprocessor/list/reverse.hpp | 80 +- contrib/src/boost/preprocessor/logical/and.hpp | 60 +- contrib/src/boost/preprocessor/logical/bitand.hpp | 76 +- contrib/src/boost/preprocessor/logical/bool.hpp | 576 +-- contrib/src/boost/preprocessor/logical/compl.hpp | 72 +- contrib/src/boost/preprocessor/logical/not.hpp | 60 +- .../src/boost/preprocessor/punctuation/comma.hpp | 42 +- .../boost/preprocessor/punctuation/comma_if.hpp | 62 +- .../punctuation/detail/is_begin_parens.hpp | 96 +- .../preprocessor/punctuation/is_begin_parens.hpp | 102 +- contrib/src/boost/preprocessor/repeat.hpp | 34 +- .../preprocessor/repetition/detail/dmc/for.hpp | 1072 +++--- .../preprocessor/repetition/detail/edg/for.hpp | 1068 +++--- .../boost/preprocessor/repetition/detail/for.hpp | 1072 +++--- .../preprocessor/repetition/detail/msvc/for.hpp | 554 +-- contrib/src/boost/preprocessor/repetition/enum.hpp | 132 +- .../preprocessor/repetition/enum_binary_params.hpp | 108 +- .../boost/preprocessor/repetition/enum_params.hpp | 82 +- .../repetition/enum_shifted_params.hpp | 88 +- .../repetition/enum_trailing_params.hpp | 76 +- contrib/src/boost/preprocessor/repetition/for.hpp | 648 ++-- .../src/boost/preprocessor/repetition/repeat.hpp | 1650 ++++----- .../preprocessor/repetition/repeat_from_to.hpp | 174 +- contrib/src/boost/preprocessor/seq/cat.hpp | 98 +- .../src/boost/preprocessor/seq/detail/is_empty.hpp | 98 +- .../src/boost/preprocessor/seq/detail/split.hpp | 568 +-- contrib/src/boost/preprocessor/seq/elem.hpp | 608 ++-- contrib/src/boost/preprocessor/seq/enum.hpp | 576 +-- contrib/src/boost/preprocessor/seq/first_n.hpp | 60 +- contrib/src/boost/preprocessor/seq/fold_left.hpp | 2140 +++++------ contrib/src/boost/preprocessor/seq/for_each_i.hpp | 218 +- contrib/src/boost/preprocessor/seq/rest_n.hpp | 92 +- contrib/src/boost/preprocessor/seq/seq.hpp | 88 +- contrib/src/boost/preprocessor/seq/size.hpp | 1096 +++--- contrib/src/boost/preprocessor/seq/subseq.hpp | 56 +- contrib/src/boost/preprocessor/seq/transform.hpp | 96 +- .../src/boost/preprocessor/slot/detail/counter.hpp | 538 +-- contrib/src/boost/preprocessor/slot/detail/def.hpp | 98 +- .../src/boost/preprocessor/slot/detail/shared.hpp | 494 +-- .../src/boost/preprocessor/slot/detail/slot1.hpp | 534 +-- .../src/boost/preprocessor/slot/detail/slot2.hpp | 534 +-- .../src/boost/preprocessor/slot/detail/slot3.hpp | 534 +-- .../src/boost/preprocessor/slot/detail/slot4.hpp | 534 +-- .../src/boost/preprocessor/slot/detail/slot5.hpp | 534 +-- contrib/src/boost/preprocessor/slot/slot.hpp | 64 +- contrib/src/boost/preprocessor/stringize.hpp | 66 +- .../preprocessor/tuple/detail/is_single_return.hpp | 56 +- contrib/src/boost/preprocessor/tuple/eat.hpp | 230 +- contrib/src/boost/preprocessor/tuple/elem.hpp | 402 +-- contrib/src/boost/preprocessor/tuple/rem.hpp | 298 +- contrib/src/boost/preprocessor/tuple/size.hpp | 56 +- contrib/src/boost/preprocessor/tuple/to_list.hpp | 236 +- contrib/src/boost/preprocessor/variadic/elem.hpp | 188 +- contrib/src/boost/preprocessor/variadic/size.hpp | 60 +- contrib/src/boost/random/detail/config.hpp | 36 +- contrib/src/boost/random/detail/const_mod.hpp | 432 +-- .../src/boost/random/detail/disable_warnings.hpp | 58 +- .../src/boost/random/detail/enable_warnings.hpp | 44 +- contrib/src/boost/random/detail/generator_bits.hpp | 72 +- .../src/boost/random/detail/generator_seed_seq.hpp | 80 +- contrib/src/boost/random/detail/integer_log2.hpp | 168 +- .../src/boost/random/detail/large_arithmetic.hpp | 244 +- contrib/src/boost/random/detail/operators.hpp | 168 +- contrib/src/boost/random/detail/polynomial.hpp | 768 ++-- contrib/src/boost/random/detail/ptr_helper.hpp | 134 +- contrib/src/boost/random/detail/seed.hpp | 230 +- contrib/src/boost/random/detail/seed_impl.hpp | 796 ++--- .../boost/random/detail/signed_unsigned_tools.hpp | 178 +- .../src/boost/random/detail/uniform_int_float.hpp | 152 +- contrib/src/boost/random/mersenne_twister.hpp | 1364 +++---- contrib/src/boost/random/traits.hpp | 214 +- contrib/src/boost/random/uniform_int.hpp | 198 +- .../src/boost/random/uniform_int_distribution.hpp | 838 ++--- contrib/src/boost/random/variate_generator.hpp | 244 +- contrib/src/boost/range/algorithm/equal.hpp | 400 +-- contrib/src/boost/range/as_literal.hpp | 254 +- contrib/src/boost/range/begin.hpp | 270 +- contrib/src/boost/range/concepts.hpp | 772 ++-- contrib/src/boost/range/config.hpp | 112 +- contrib/src/boost/range/const_iterator.hpp | 152 +- contrib/src/boost/range/detail/as_literal.hpp | 66 +- contrib/src/boost/range/detail/begin.hpp | 166 +- contrib/src/boost/range/detail/common.hpp | 236 +- contrib/src/boost/range/detail/detail_str.hpp | 752 ++-- contrib/src/boost/range/detail/end.hpp | 172 +- .../boost/range/detail/extract_optional_type.hpp | 96 +- contrib/src/boost/range/detail/has_member_size.hpp | 132 +- .../src/boost/range/detail/implementation_help.hpp | 228 +- contrib/src/boost/range/detail/misc_concept.hpp | 66 +- .../range/detail/msvc_has_iterator_workaround.hpp | 264 +- contrib/src/boost/range/detail/remove_extent.hpp | 314 +- contrib/src/boost/range/detail/safe_bool.hpp | 144 +- contrib/src/boost/range/detail/sfinae.hpp | 154 +- contrib/src/boost/range/detail/size_type.hpp | 110 +- contrib/src/boost/range/detail/str_types.hpp | 76 +- contrib/src/boost/range/detail/value_type.hpp | 144 +- contrib/src/boost/range/difference_type.hpp | 94 +- contrib/src/boost/range/distance.hpp | 68 +- contrib/src/boost/range/empty.hpp | 68 +- contrib/src/boost/range/end.hpp | 256 +- contrib/src/boost/range/functions.hpp | 54 +- contrib/src/boost/range/has_range_iterator.hpp | 166 +- contrib/src/boost/range/iterator.hpp | 148 +- contrib/src/boost/range/iterator_range.hpp | 32 +- contrib/src/boost/range/iterator_range_core.hpp | 1766 ++++----- contrib/src/boost/range/iterator_range_io.hpp | 186 +- contrib/src/boost/range/mutable_iterator.hpp | 158 +- contrib/src/boost/range/range_fwd.hpp | 126 +- contrib/src/boost/range/rbegin.hpp | 130 +- contrib/src/boost/range/rend.hpp | 130 +- contrib/src/boost/range/reverse_iterator.hpp | 84 +- contrib/src/boost/range/size.hpp | 152 +- contrib/src/boost/range/size_type.hpp | 185 +- contrib/src/boost/range/value_type.hpp | 60 +- contrib/src/boost/ref.hpp | 34 +- contrib/src/boost/shared_ptr.hpp | 38 +- contrib/src/boost/smart_ptr/bad_weak_ptr.hpp | 127 +- .../boost/smart_ptr/detail/lightweight_mutex.hpp | 84 +- contrib/src/boost/smart_ptr/detail/lwm_nop.hpp | 74 +- .../src/boost/smart_ptr/detail/lwm_pthreads.hpp | 174 +- .../src/boost/smart_ptr/detail/lwm_win32_cs.hpp | 238 +- .../src/boost/smart_ptr/detail/operator_bool.hpp | 128 +- .../src/boost/smart_ptr/detail/quick_allocator.hpp | 398 +-- .../src/boost/smart_ptr/detail/shared_count.hpp | 1364 +++---- .../src/boost/smart_ptr/detail/sp_convertible.hpp | 184 +- .../src/boost/smart_ptr/detail/sp_counted_base.hpp | 189 +- .../smart_ptr/detail/sp_counted_base_acc_ia64.hpp | 302 +- .../boost/smart_ptr/detail/sp_counted_base_aix.hpp | 286 +- .../smart_ptr/detail/sp_counted_base_clang.hpp | 289 +- .../smart_ptr/detail/sp_counted_base_cw_ppc.hpp | 342 +- .../smart_ptr/detail/sp_counted_base_gcc_ia64.hpp | 316 +- .../smart_ptr/detail/sp_counted_base_gcc_mips.hpp | 364 +- .../smart_ptr/detail/sp_counted_base_gcc_ppc.hpp | 364 +- .../smart_ptr/detail/sp_counted_base_gcc_sparc.hpp | 334 +- .../smart_ptr/detail/sp_counted_base_gcc_x86.hpp | 348 +- .../boost/smart_ptr/detail/sp_counted_base_nt.hpp | 216 +- .../boost/smart_ptr/detail/sp_counted_base_pt.hpp | 274 +- .../smart_ptr/detail/sp_counted_base_snc_ps3.hpp | 324 +- .../smart_ptr/detail/sp_counted_base_spin.hpp | 264 +- .../detail/sp_counted_base_std_atomic.hpp | 274 +- .../smart_ptr/detail/sp_counted_base_sync.hpp | 312 +- .../smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp | 302 +- .../boost/smart_ptr/detail/sp_counted_base_w32.hpp | 262 +- .../src/boost/smart_ptr/detail/sp_counted_impl.hpp | 534 +-- .../smart_ptr/detail/sp_disable_deprecated.hpp | 80 +- contrib/src/boost/smart_ptr/detail/sp_has_sync.hpp | 138 +- .../src/boost/smart_ptr/detail/sp_interlocked.hpp | 326 +- .../src/boost/smart_ptr/detail/sp_nullptr_t.hpp | 90 +- contrib/src/boost/smart_ptr/detail/spinlock.hpp | 133 +- .../boost/smart_ptr/detail/spinlock_gcc_arm.hpp | 242 +- contrib/src/boost/smart_ptr/detail/spinlock_nt.hpp | 178 +- .../src/boost/smart_ptr/detail/spinlock_pool.hpp | 182 +- contrib/src/boost/smart_ptr/detail/spinlock_pt.hpp | 158 +- .../boost/smart_ptr/detail/spinlock_std_atomic.hpp | 166 +- .../src/boost/smart_ptr/detail/spinlock_sync.hpp | 174 +- .../src/boost/smart_ptr/detail/spinlock_w32.hpp | 226 +- contrib/src/boost/smart_ptr/detail/yield_k.hpp | 354 +- contrib/src/boost/smart_ptr/shared_ptr.hpp | 2216 ++++++------ contrib/src/boost/static_assert.hpp | 360 +- contrib/src/boost/throw_exception.hpp | 204 +- contrib/src/boost/type_traits/add_const.hpp | 92 +- .../src/boost/type_traits/add_lvalue_reference.hpp | 54 +- contrib/src/boost/type_traits/add_pointer.hpp | 122 +- contrib/src/boost/type_traits/add_reference.hpp | 118 +- .../src/boost/type_traits/add_rvalue_reference.hpp | 128 +- contrib/src/boost/type_traits/add_volatile.hpp | 80 +- contrib/src/boost/type_traits/alignment_of.hpp | 238 +- contrib/src/boost/type_traits/composite_traits.hpp | 58 +- contrib/src/boost/type_traits/conditional.hpp | 40 +- .../src/boost/type_traits/conversion_traits.hpp | 34 +- contrib/src/boost/type_traits/declval.hpp | 88 +- contrib/src/boost/type_traits/detail/config.hpp | 144 +- .../type_traits/detail/has_binary_operator.hpp | 444 +-- .../type_traits/detail/is_function_ptr_helper.hpp | 352 +- .../type_traits/detail/is_function_ptr_tester.hpp | 898 ++--- .../type_traits/detail/is_mem_fun_pointer_impl.hpp | 1446 ++++---- .../detail/is_mem_fun_pointer_tester.hpp | 3600 +++++++++---------- .../src/boost/type_traits/detail/yes_no_type.hpp | 52 +- contrib/src/boost/type_traits/function_traits.hpp | 348 +- contrib/src/boost/type_traits/has_minus.hpp | 120 +- contrib/src/boost/type_traits/has_minus_assign.hpp | 130 +- contrib/src/boost/type_traits/has_plus.hpp | 108 +- contrib/src/boost/type_traits/has_plus_assign.hpp | 132 +- contrib/src/boost/type_traits/has_trivial_copy.hpp | 125 +- .../boost/type_traits/has_trivial_destructor.hpp | 96 +- .../src/boost/type_traits/integral_constant.hpp | 212 +- .../src/boost/type_traits/integral_promotion.hpp | 362 +- contrib/src/boost/type_traits/intrinsics.hpp | 760 ++-- contrib/src/boost/type_traits/is_abstract.hpp | 299 +- contrib/src/boost/type_traits/is_arithmetic.hpp | 44 +- contrib/src/boost/type_traits/is_array.hpp | 86 +- .../src/boost/type_traits/is_base_and_derived.hpp | 488 +-- contrib/src/boost/type_traits/is_base_of.hpp | 78 +- contrib/src/boost/type_traits/is_class.hpp | 228 +- contrib/src/boost/type_traits/is_const.hpp | 93 +- contrib/src/boost/type_traits/is_constructible.hpp | 160 +- contrib/src/boost/type_traits/is_convertible.hpp | 976 ++--- .../boost/type_traits/is_copy_constructible.hpp | 374 +- .../boost/type_traits/is_default_constructible.hpp | 167 +- contrib/src/boost/type_traits/is_destructible.hpp | 121 +- contrib/src/boost/type_traits/is_enum.hpp | 332 +- .../src/boost/type_traits/is_floating_point.hpp | 60 +- contrib/src/boost/type_traits/is_function.hpp | 204 +- contrib/src/boost/type_traits/is_fundamental.hpp | 52 +- contrib/src/boost/type_traits/is_integral.hpp | 178 +- .../src/boost/type_traits/is_lvalue_reference.hpp | 100 +- .../type_traits/is_member_function_pointer.hpp | 240 +- .../src/boost/type_traits/is_member_pointer.hpp | 90 +- contrib/src/boost/type_traits/is_pod.hpp | 117 +- contrib/src/boost/type_traits/is_pointer.hpp | 94 +- contrib/src/boost/type_traits/is_polymorphic.hpp | 244 +- contrib/src/boost/type_traits/is_reference.hpp | 60 +- .../src/boost/type_traits/is_rvalue_reference.hpp | 50 +- contrib/src/boost/type_traits/is_same.hpp | 82 +- contrib/src/boost/type_traits/is_scalar.hpp | 54 +- contrib/src/boost/type_traits/is_signed.hpp | 326 +- contrib/src/boost/type_traits/is_union.hpp | 62 +- contrib/src/boost/type_traits/is_unsigned.hpp | 326 +- contrib/src/boost/type_traits/is_void.hpp | 52 +- contrib/src/boost/type_traits/is_volatile.hpp | 91 +- contrib/src/boost/type_traits/make_signed.hpp | 262 +- contrib/src/boost/type_traits/make_unsigned.hpp | 260 +- contrib/src/boost/type_traits/remove_const.hpp | 66 +- contrib/src/boost/type_traits/remove_cv.hpp | 80 +- contrib/src/boost/type_traits/remove_pointer.hpp | 154 +- contrib/src/boost/type_traits/remove_reference.hpp | 108 +- .../src/boost/type_traits/type_with_alignment.hpp | 522 +-- contrib/src/boost/utility.hpp | 42 +- contrib/src/boost/utility/addressof.hpp | 34 +- contrib/src/boost/utility/base_from_member.hpp | 343 +- contrib/src/boost/utility/binary.hpp | 1416 ++++---- contrib/src/boost/utility/declval.hpp | 26 +- .../src/boost/utility/detail/result_of_iterate.hpp | 442 +-- contrib/src/boost/utility/enable_if.hpp | 34 +- contrib/src/boost/utility/identity_type.hpp | 92 +- contrib/src/boost/utility/result_of.hpp | 420 +-- contrib/src/boost/uuid/detail/config.hpp | 148 +- contrib/src/boost/uuid/detail/uuid_generic.hpp | 102 +- contrib/src/boost/uuid/detail/uuid_x86.hpp | 270 +- contrib/src/boost/uuid/random_generator.hpp | 238 +- contrib/src/boost/uuid/seed_rng.hpp | 638 ++-- contrib/src/boost/uuid/sha1.hpp | 462 +-- contrib/src/boost/uuid/uuid.hpp | 424 +-- contrib/src/boost/uuid/uuid_io.hpp | 396 +-- contrib/src/boost/version.hpp | 64 +- src/uscxml/debug/Benchmark.cpp | 55 + src/uscxml/debug/Benchmark.h | 48 + src/uscxml/interpreter/InterpreterImpl.cpp | 3 +- src/uscxml/interpreter/LargeMicroStep.cpp | 1136 ++++++ src/uscxml/interpreter/LargeMicroStep.h | 183 + 1357 files changed, 231237 insertions(+), 213692 deletions(-) create mode 100644 contrib/src/boost/container/allocator_traits.hpp create mode 100644 contrib/src/boost/container/container_fwd.hpp create mode 100644 contrib/src/boost/container/detail/advanced_insert_int.hpp create mode 100644 contrib/src/boost/container/detail/algorithm.hpp create mode 100644 contrib/src/boost/container/detail/alloc_helpers.hpp create mode 100644 contrib/src/boost/container/detail/allocation_type.hpp create mode 100644 contrib/src/boost/container/detail/config_begin.hpp create mode 100644 contrib/src/boost/container/detail/config_end.hpp create mode 100644 contrib/src/boost/container/detail/copy_move_algo.hpp create mode 100644 contrib/src/boost/container/detail/destroyers.hpp create mode 100644 contrib/src/boost/container/detail/flat_tree.hpp create mode 100644 contrib/src/boost/container/detail/iterator.hpp create mode 100644 contrib/src/boost/container/detail/iterator_to_raw_pointer.hpp create mode 100644 contrib/src/boost/container/detail/iterators.hpp create mode 100644 contrib/src/boost/container/detail/min_max.hpp create mode 100644 contrib/src/boost/container/detail/mpl.hpp create mode 100644 contrib/src/boost/container/detail/next_capacity.hpp create mode 100644 contrib/src/boost/container/detail/pair.hpp create mode 100644 contrib/src/boost/container/detail/placement_new.hpp create mode 100644 contrib/src/boost/container/detail/std_fwd.hpp create mode 100644 contrib/src/boost/container/detail/to_raw_pointer.hpp create mode 100644 contrib/src/boost/container/detail/type_traits.hpp create mode 100644 contrib/src/boost/container/detail/value_init.hpp create mode 100644 contrib/src/boost/container/detail/variadic_templates_tools.hpp create mode 100644 contrib/src/boost/container/detail/version_type.hpp create mode 100644 contrib/src/boost/container/detail/workaround.hpp create mode 100644 contrib/src/boost/container/flat_set.hpp create mode 100644 contrib/src/boost/container/new_allocator.hpp create mode 100644 contrib/src/boost/container/throw_exception.hpp create mode 100644 contrib/src/boost/container/vector.hpp create mode 100644 contrib/src/boost/detail/lightweight_mutex.hpp create mode 100644 contrib/src/boost/detail/winapi/get_current_process.hpp create mode 100644 contrib/src/boost/detail/winapi/get_current_thread.hpp create mode 100644 contrib/src/boost/detail/winapi/process.hpp create mode 100644 contrib/src/boost/detail/winapi/thread.hpp create mode 100644 contrib/src/boost/intrusive/detail/algorithm.hpp create mode 100644 contrib/src/boost/intrusive/detail/config_begin.hpp create mode 100644 contrib/src/boost/intrusive/detail/config_end.hpp create mode 100644 contrib/src/boost/intrusive/detail/has_member_function_callable_with.hpp create mode 100644 contrib/src/boost/intrusive/detail/iterator.hpp create mode 100644 contrib/src/boost/intrusive/detail/minimal_less_equal_header.hpp create mode 100644 contrib/src/boost/intrusive/detail/minimal_pair_header.hpp create mode 100644 contrib/src/boost/intrusive/detail/mpl.hpp create mode 100644 contrib/src/boost/intrusive/detail/pointer_element.hpp create mode 100644 contrib/src/boost/intrusive/detail/reverse_iterator.hpp create mode 100644 contrib/src/boost/intrusive/detail/std_fwd.hpp create mode 100644 contrib/src/boost/intrusive/detail/to_raw_pointer.hpp create mode 100644 contrib/src/boost/intrusive/detail/workaround.hpp create mode 100644 contrib/src/boost/intrusive/pointer_rebind.hpp create mode 100644 contrib/src/boost/intrusive/pointer_traits.hpp create mode 100644 contrib/src/boost/move/adl_move_swap.hpp create mode 100644 contrib/src/boost/move/default_delete.hpp create mode 100644 contrib/src/boost/move/detail/fwd_macros.hpp create mode 100644 contrib/src/boost/move/detail/move_helpers.hpp create mode 100644 contrib/src/boost/move/detail/unique_ptr_meta_utils.hpp create mode 100644 contrib/src/boost/move/make_unique.hpp create mode 100644 contrib/src/boost/move/unique_ptr.hpp create mode 100644 src/uscxml/debug/Benchmark.cpp create mode 100644 src/uscxml/debug/Benchmark.h create mode 100644 src/uscxml/interpreter/LargeMicroStep.cpp create mode 100644 src/uscxml/interpreter/LargeMicroStep.h diff --git a/contrib/src/boost/algorithm/string.hpp b/contrib/src/boost/algorithm/string.hpp index 496400d..0771517 100644 --- a/contrib/src/boost/algorithm/string.hpp +++ b/contrib/src/boost/algorithm/string.hpp @@ -1,31 +1,31 @@ -// Boost string_algo library string_algo.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2004. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_ALGO_HPP -#define BOOST_STRING_ALGO_HPP - -/*! \file - Cumulative include for string_algo library -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#endif // BOOST_STRING_ALGO_HPP +// Boost string_algo library string_algo.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2004. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_ALGO_HPP +#define BOOST_STRING_ALGO_HPP + +/*! \file + Cumulative include for string_algo library +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#endif // BOOST_STRING_ALGO_HPP diff --git a/contrib/src/boost/algorithm/string/case_conv.hpp b/contrib/src/boost/algorithm/string/case_conv.hpp index 40543d0..683340b 100644 --- a/contrib/src/boost/algorithm/string/case_conv.hpp +++ b/contrib/src/boost/algorithm/string/case_conv.hpp @@ -1,176 +1,176 @@ -// Boost string_algo library case_conv.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2003. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_CASE_CONV_HPP -#define BOOST_STRING_CASE_CONV_HPP - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - -/*! \file - Defines sequence case-conversion algorithms. - Algorithms convert each element in the input sequence to the - desired case using provided locales. -*/ - -namespace boost { - namespace algorithm { - -// to_lower -----------------------------------------------// - - //! Convert to lower case - /*! - Each element of the input sequence is converted to lower - case. The result is a copy of the input converted to lower case. - It is returned as a sequence or copied to the output iterator. - - \param Output An output iterator to which the result will be copied - \param Input An input range - \param Loc A locale used for conversion - \return - An output iterator pointing just after the last inserted character or - a copy of the input - - \note The second variant of this function provides the strong exception-safety guarantee - - */ - template - inline OutputIteratorT - to_lower_copy( - OutputIteratorT Output, - const RangeT& Input, - const std::locale& Loc=std::locale()) - { - return ::boost::algorithm::detail::transform_range_copy( - Output, - ::boost::as_literal(Input), - ::boost::algorithm::detail::to_lowerF< - typename range_value::type >(Loc)); - } - - //! Convert to lower case - /*! - \overload - */ - template - inline SequenceT to_lower_copy( - const SequenceT& Input, - const std::locale& Loc=std::locale()) - { - return ::boost::algorithm::detail::transform_range_copy( - Input, - ::boost::algorithm::detail::to_lowerF< - typename range_value::type >(Loc)); - } - - //! Convert to lower case - /*! - Each element of the input sequence is converted to lower - case. The input sequence is modified in-place. - - \param Input A range - \param Loc a locale used for conversion - */ - template - inline void to_lower( - WritableRangeT& Input, - const std::locale& Loc=std::locale()) - { - ::boost::algorithm::detail::transform_range( - ::boost::as_literal(Input), - ::boost::algorithm::detail::to_lowerF< - typename range_value::type >(Loc)); - } - -// to_upper -----------------------------------------------// - - //! Convert to upper case - /*! - Each element of the input sequence is converted to upper - case. The result is a copy of the input converted to upper case. - It is returned as a sequence or copied to the output iterator - - \param Output An output iterator to which the result will be copied - \param Input An input range - \param Loc A locale used for conversion - \return - An output iterator pointing just after the last inserted character or - a copy of the input - - \note The second variant of this function provides the strong exception-safety guarantee - */ - template - inline OutputIteratorT - to_upper_copy( - OutputIteratorT Output, - const RangeT& Input, - const std::locale& Loc=std::locale()) - { - return ::boost::algorithm::detail::transform_range_copy( - Output, - ::boost::as_literal(Input), - ::boost::algorithm::detail::to_upperF< - typename range_value::type >(Loc)); - } - - //! Convert to upper case - /*! - \overload - */ - template - inline SequenceT to_upper_copy( - const SequenceT& Input, - const std::locale& Loc=std::locale()) - { - return ::boost::algorithm::detail::transform_range_copy( - Input, - ::boost::algorithm::detail::to_upperF< - typename range_value::type >(Loc)); - } - - //! Convert to upper case - /*! - Each element of the input sequence is converted to upper - case. The input sequence is modified in-place. - - \param Input An input range - \param Loc a locale used for conversion - */ - template - inline void to_upper( - WritableRangeT& Input, - const std::locale& Loc=std::locale()) - { - ::boost::algorithm::detail::transform_range( - ::boost::as_literal(Input), - ::boost::algorithm::detail::to_upperF< - typename range_value::type >(Loc)); - } - - } // namespace algorithm - - // pull names to the boost namespace - using algorithm::to_lower; - using algorithm::to_lower_copy; - using algorithm::to_upper; - using algorithm::to_upper_copy; - -} // namespace boost - -#endif // BOOST_STRING_CASE_CONV_HPP +// Boost string_algo library case_conv.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_CASE_CONV_HPP +#define BOOST_STRING_CASE_CONV_HPP + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +/*! \file + Defines sequence case-conversion algorithms. + Algorithms convert each element in the input sequence to the + desired case using provided locales. +*/ + +namespace boost { + namespace algorithm { + +// to_lower -----------------------------------------------// + + //! Convert to lower case + /*! + Each element of the input sequence is converted to lower + case. The result is a copy of the input converted to lower case. + It is returned as a sequence or copied to the output iterator. + + \param Output An output iterator to which the result will be copied + \param Input An input range + \param Loc A locale used for conversion + \return + An output iterator pointing just after the last inserted character or + a copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + + */ + template + inline OutputIteratorT + to_lower_copy( + OutputIteratorT Output, + const RangeT& Input, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::detail::transform_range_copy( + Output, + ::boost::as_literal(Input), + ::boost::algorithm::detail::to_lowerF< + typename range_value::type >(Loc)); + } + + //! Convert to lower case + /*! + \overload + */ + template + inline SequenceT to_lower_copy( + const SequenceT& Input, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::detail::transform_range_copy( + Input, + ::boost::algorithm::detail::to_lowerF< + typename range_value::type >(Loc)); + } + + //! Convert to lower case + /*! + Each element of the input sequence is converted to lower + case. The input sequence is modified in-place. + + \param Input A range + \param Loc a locale used for conversion + */ + template + inline void to_lower( + WritableRangeT& Input, + const std::locale& Loc=std::locale()) + { + ::boost::algorithm::detail::transform_range( + ::boost::as_literal(Input), + ::boost::algorithm::detail::to_lowerF< + typename range_value::type >(Loc)); + } + +// to_upper -----------------------------------------------// + + //! Convert to upper case + /*! + Each element of the input sequence is converted to upper + case. The result is a copy of the input converted to upper case. + It is returned as a sequence or copied to the output iterator + + \param Output An output iterator to which the result will be copied + \param Input An input range + \param Loc A locale used for conversion + \return + An output iterator pointing just after the last inserted character or + a copy of the input + + \note The second variant of this function provides the strong exception-safety guarantee + */ + template + inline OutputIteratorT + to_upper_copy( + OutputIteratorT Output, + const RangeT& Input, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::detail::transform_range_copy( + Output, + ::boost::as_literal(Input), + ::boost::algorithm::detail::to_upperF< + typename range_value::type >(Loc)); + } + + //! Convert to upper case + /*! + \overload + */ + template + inline SequenceT to_upper_copy( + const SequenceT& Input, + const std::locale& Loc=std::locale()) + { + return ::boost::algorithm::detail::transform_range_copy( + Input, + ::boost::algorithm::detail::to_upperF< + typename range_value::type >(Loc)); + } + + //! Convert to upper case + /*! + Each element of the input sequence is converted to upper + case. The input sequence is modified in-place. + + \param Input An input range + \param Loc a locale used for conversion + */ + template + inline void to_upper( + WritableRangeT& Input, + const std::locale& Loc=std::locale()) + { + ::boost::algorithm::detail::transform_range( + ::boost::as_literal(Input), + ::boost::algorithm::detail::to_upperF< + typename range_value::type >(Loc)); + } + + } // namespace algorithm + + // pull names to the boost namespace + using algorithm::to_lower; + using algorithm::to_lower_copy; + using algorithm::to_upper; + using algorithm::to_upper_copy; + +} // namespace boost + +#endif // BOOST_STRING_CASE_CONV_HPP diff --git a/contrib/src/boost/algorithm/string/classification.hpp b/contrib/src/boost/algorithm/string/classification.hpp index e868b88..ca43602 100644 --- a/contrib/src/boost/algorithm/string/classification.hpp +++ b/contrib/src/boost/algorithm/string/classification.hpp @@ -1,312 +1,312 @@ -// Boost string_algo library classification.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2003. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_CLASSIFICATION_HPP -#define BOOST_STRING_CLASSIFICATION_HPP - -#include -#include -#include -#include -#include -#include - - -/*! \file - Classification predicates are included in the library to give - some more convenience when using algorithms like \c trim() and \c all(). - They wrap functionality of STL classification functions ( e.g. \c std::isspace() ) - into generic functors. -*/ - -namespace boost { - namespace algorithm { - -// classification functor generator -------------------------------------// - - //! is_classified predicate - /*! - Construct the \c is_classified predicate. This predicate holds if the input is - of specified \c std::ctype category. - - \param Type A \c std::ctype category - \param Loc A locale used for classification - \return An instance of the \c is_classified predicate - */ - inline detail::is_classifiedF - is_classified(std::ctype_base::mask Type, const std::locale& Loc=std::locale()) - { - return detail::is_classifiedF(Type, Loc); - } - - //! is_space predicate - /*! - Construct the \c is_classified predicate for the \c ctype_base::space category. - - \param Loc A locale used for classification - \return An instance of the \c is_classified predicate - */ - inline detail::is_classifiedF - is_space(const std::locale& Loc=std::locale()) - { - return detail::is_classifiedF(std::ctype_base::space, Loc); - } - - //! is_alnum predicate - /*! - Construct the \c is_classified predicate for the \c ctype_base::alnum category. - - \param Loc A locale used for classification - \return An instance of the \c is_classified predicate - */ - inline detail::is_classifiedF - is_alnum(const std::locale& Loc=std::locale()) - { - return detail::is_classifiedF(std::ctype_base::alnum, Loc); - } - - //! is_alpha predicate - /*! - Construct the \c is_classified predicate for the \c ctype_base::alpha category. - - \param Loc A locale used for classification - \return An instance of the \c is_classified predicate - */ - inline detail::is_classifiedF - is_alpha(const std::locale& Loc=std::locale()) - { - return detail::is_classifiedF(std::ctype_base::alpha, Loc); - } - - //! is_cntrl predicate - /*! - Construct the \c is_classified predicate for the \c ctype_base::cntrl category. - - \param Loc A locale used for classification - \return An instance of the \c is_classified predicate - */ - inline detail::is_classifiedF - is_cntrl(const std::locale& Loc=std::locale()) - { - return detail::is_classifiedF(std::ctype_base::cntrl, Loc); - } - - //! is_digit predicate - /*! - Construct the \c is_classified predicate for the \c ctype_base::digit category. - - \param Loc A locale used for classification - \return An instance of the \c is_classified predicate - */ - inline detail::is_classifiedF - is_digit(const std::locale& Loc=std::locale()) - { - return detail::is_classifiedF(std::ctype_base::digit, Loc); - } - - //! is_graph predicate - /*! - Construct the \c is_classified predicate for the \c ctype_base::graph category. - - \param Loc A locale used for classification - \return An instance of the \c is_classified predicate - */ - inline detail::is_classifiedF - is_graph(const std::locale& Loc=std::locale()) - { - return detail::is_classifiedF(std::ctype_base::graph, Loc); - } - - //! is_lower predicate - /*! - Construct the \c is_classified predicate for the \c ctype_base::lower category. - - \param Loc A locale used for classification - \return An instance of \c is_classified predicate - */ - inline detail::is_classifiedF - is_lower(const std::locale& Loc=std::locale()) - { - return detail::is_classifiedF(std::ctype_base::lower, Loc); - } - - //! is_print predicate - /*! - Construct the \c is_classified predicate for the \c ctype_base::print category. - - \param Loc A locale used for classification - \return An instance of the \c is_classified predicate - */ - inline detail::is_classifiedF - is_print(const std::locale& Loc=std::locale()) - { - return detail::is_classifiedF(std::ctype_base::print, Loc); - } - - //! is_punct predicate - /*! - Construct the \c is_classified predicate for the \c ctype_base::punct category. - - \param Loc A locale used for classification - \return An instance of the \c is_classified predicate - */ - inline detail::is_classifiedF - is_punct(const std::locale& Loc=std::locale()) - { - return detail::is_classifiedF(std::ctype_base::punct, Loc); - } - - //! is_upper predicate - /*! - Construct the \c is_classified predicate for the \c ctype_base::upper category. - - \param Loc A locale used for classification - \return An instance of the \c is_classified predicate - */ - inline detail::is_classifiedF - is_upper(const std::locale& Loc=std::locale()) - { - return detail::is_classifiedF(std::ctype_base::upper, Loc); - } - - //! is_xdigit predicate - /*! - Construct the \c is_classified predicate for the \c ctype_base::xdigit category. - - \param Loc A locale used for classification - \return An instance of the \c is_classified predicate - */ - inline detail::is_classifiedF - is_xdigit(const std::locale& Loc=std::locale()) - { - return detail::is_classifiedF(std::ctype_base::xdigit, Loc); - } - - //! is_any_of predicate - /*! - Construct the \c is_any_of predicate. The predicate holds if the input - is included in the specified set of characters. - - \param Set A set of characters to be recognized - \return An instance of the \c is_any_of predicate - */ - template - inline detail::is_any_ofF< - BOOST_STRING_TYPENAME range_value::type> - is_any_of( const RangeT& Set ) - { - iterator_range::type> lit_set(boost::as_literal(Set)); - return detail::is_any_ofF::type>(lit_set); - } - - //! is_from_range predicate - /*! - Construct the \c is_from_range predicate. The predicate holds if the input - is included in the specified range. (i.e. From <= Ch <= To ) - - \param From The start of the range - \param To The end of the range - \return An instance of the \c is_from_range predicate - */ - template - inline detail::is_from_rangeF is_from_range(CharT From, CharT To) - { - return detail::is_from_rangeF(From,To); - } - - // predicate combinators ---------------------------------------------------// - - //! predicate 'and' composition predicate - /*! - Construct the \c class_and predicate. This predicate can be used - to logically combine two classification predicates. \c class_and holds, - if both predicates return true. - - \param Pred1 The first predicate - \param Pred2 The second predicate - \return An instance of the \c class_and predicate - */ - template - inline detail::pred_andF - operator&&( - const predicate_facade& Pred1, - const predicate_facade& Pred2 ) - { - // Doing the static_cast with the pointer instead of the reference - // is a workaround for some compilers which have problems with - // static_cast's of template references, i.e. CW8. /grafik/ - return detail::pred_andF( - *static_cast(&Pred1), - *static_cast(&Pred2) ); - } - - //! predicate 'or' composition predicate - /*! - Construct the \c class_or predicate. This predicate can be used - to logically combine two classification predicates. \c class_or holds, - if one of the predicates return true. - - \param Pred1 The first predicate - \param Pred2 The second predicate - \return An instance of the \c class_or predicate - */ - template - inline detail::pred_orF - operator||( - const predicate_facade& Pred1, - const predicate_facade& Pred2 ) - { - // Doing the static_cast with the pointer instead of the reference - // is a workaround for some compilers which have problems with - // static_cast's of template references, i.e. CW8. /grafik/ - return detail::pred_orF( - *static_cast(&Pred1), - *static_cast(&Pred2)); - } - - //! predicate negation operator - /*! - Construct the \c class_not predicate. This predicate represents a negation. - \c class_or holds if of the predicates return false. - - \param Pred The predicate to be negated - \return An instance of the \c class_not predicate - */ - template - inline detail::pred_notF - operator!( const predicate_facade& Pred ) - { - // Doing the static_cast with the pointer instead of the reference - // is a workaround for some compilers which have problems with - // static_cast's of template references, i.e. CW8. /grafik/ - return detail::pred_notF(*static_cast(&Pred)); - } - - } // namespace algorithm - - // pull names to the boost namespace - using algorithm::is_classified; - using algorithm::is_space; - using algorithm::is_alnum; - using algorithm::is_alpha; - using algorithm::is_cntrl; - using algorithm::is_digit; - using algorithm::is_graph; - using algorithm::is_lower; - using algorithm::is_upper; - using algorithm::is_print; - using algorithm::is_punct; - using algorithm::is_xdigit; - using algorithm::is_any_of; - using algorithm::is_from_range; - -} // namespace boost - -#endif // BOOST_STRING_PREDICATE_HPP +// Boost string_algo library classification.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_CLASSIFICATION_HPP +#define BOOST_STRING_CLASSIFICATION_HPP + +#include +#include +#include +#include +#include +#include + + +/*! \file + Classification predicates are included in the library to give + some more convenience when using algorithms like \c trim() and \c all(). + They wrap functionality of STL classification functions ( e.g. \c std::isspace() ) + into generic functors. +*/ + +namespace boost { + namespace algorithm { + +// classification functor generator -------------------------------------// + + //! is_classified predicate + /*! + Construct the \c is_classified predicate. This predicate holds if the input is + of specified \c std::ctype category. + + \param Type A \c std::ctype category + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_classified(std::ctype_base::mask Type, const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(Type, Loc); + } + + //! is_space predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::space category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_space(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::space, Loc); + } + + //! is_alnum predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::alnum category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_alnum(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::alnum, Loc); + } + + //! is_alpha predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::alpha category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_alpha(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::alpha, Loc); + } + + //! is_cntrl predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::cntrl category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_cntrl(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::cntrl, Loc); + } + + //! is_digit predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::digit category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_digit(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::digit, Loc); + } + + //! is_graph predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::graph category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_graph(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::graph, Loc); + } + + //! is_lower predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::lower category. + + \param Loc A locale used for classification + \return An instance of \c is_classified predicate + */ + inline detail::is_classifiedF + is_lower(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::lower, Loc); + } + + //! is_print predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::print category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_print(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::print, Loc); + } + + //! is_punct predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::punct category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_punct(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::punct, Loc); + } + + //! is_upper predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::upper category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_upper(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::upper, Loc); + } + + //! is_xdigit predicate + /*! + Construct the \c is_classified predicate for the \c ctype_base::xdigit category. + + \param Loc A locale used for classification + \return An instance of the \c is_classified predicate + */ + inline detail::is_classifiedF + is_xdigit(const std::locale& Loc=std::locale()) + { + return detail::is_classifiedF(std::ctype_base::xdigit, Loc); + } + + //! is_any_of predicate + /*! + Construct the \c is_any_of predicate. The predicate holds if the input + is included in the specified set of characters. + + \param Set A set of characters to be recognized + \return An instance of the \c is_any_of predicate + */ + template + inline detail::is_any_ofF< + BOOST_STRING_TYPENAME range_value::type> + is_any_of( const RangeT& Set ) + { + iterator_range::type> lit_set(boost::as_literal(Set)); + return detail::is_any_ofF::type>(lit_set); + } + + //! is_from_range predicate + /*! + Construct the \c is_from_range predicate. The predicate holds if the input + is included in the specified range. (i.e. From <= Ch <= To ) + + \param From The start of the range + \param To The end of the range + \return An instance of the \c is_from_range predicate + */ + template + inline detail::is_from_rangeF is_from_range(CharT From, CharT To) + { + return detail::is_from_rangeF(From,To); + } + + // predicate combinators ---------------------------------------------------// + + //! predicate 'and' composition predicate + /*! + Construct the \c class_and predicate. This predicate can be used + to logically combine two classification predicates. \c class_and holds, + if both predicates return true. + + \param Pred1 The first predicate + \param Pred2 The second predicate + \return An instance of the \c class_and predicate + */ + template + inline detail::pred_andF + operator&&( + const predicate_facade& Pred1, + const predicate_facade& Pred2 ) + { + // Doing the static_cast with the pointer instead of the reference + // is a workaround for some compilers which have problems with + // static_cast's of template references, i.e. CW8. /grafik/ + return detail::pred_andF( + *static_cast(&Pred1), + *static_cast(&Pred2) ); + } + + //! predicate 'or' composition predicate + /*! + Construct the \c class_or predicate. This predicate can be used + to logically combine two classification predicates. \c class_or holds, + if one of the predicates return true. + + \param Pred1 The first predicate + \param Pred2 The second predicate + \return An instance of the \c class_or predicate + */ + template + inline detail::pred_orF + operator||( + const predicate_facade& Pred1, + const predicate_facade& Pred2 ) + { + // Doing the static_cast with the pointer instead of the reference + // is a workaround for some compilers which have problems with + // static_cast's of template references, i.e. CW8. /grafik/ + return detail::pred_orF( + *static_cast(&Pred1), + *static_cast(&Pred2)); + } + + //! predicate negation operator + /*! + Construct the \c class_not predicate. This predicate represents a negation. + \c class_or holds if of the predicates return false. + + \param Pred The predicate to be negated + \return An instance of the \c class_not predicate + */ + template + inline detail::pred_notF + operator!( const predicate_facade& Pred ) + { + // Doing the static_cast with the pointer instead of the reference + // is a workaround for some compilers which have problems with + // static_cast's of template references, i.e. CW8. /grafik/ + return detail::pred_notF(*static_cast(&Pred)); + } + + } // namespace algorithm + + // pull names to the boost namespace + using algorithm::is_classified; + using algorithm::is_space; + using algorithm::is_alnum; + using algorithm::is_alpha; + using algorithm::is_cntrl; + using algorithm::is_digit; + using algorithm::is_graph; + using algorithm::is_lower; + using algorithm::is_upper; + using algorithm::is_print; + using algorithm::is_punct; + using algorithm::is_xdigit; + using algorithm::is_any_of; + using algorithm::is_from_range; + +} // namespace boost + +#endif // BOOST_STRING_PREDICATE_HPP diff --git a/contrib/src/boost/algorithm/string/compare.hpp b/contrib/src/boost/algorithm/string/compare.hpp index f610b36..734303a 100644 --- a/contrib/src/boost/algorithm/string/compare.hpp +++ b/contrib/src/boost/algorithm/string/compare.hpp @@ -1,199 +1,199 @@ -// Boost string_algo library compare.hpp header file -------------------------// - -// Copyright Pavol Droba 2002-2006. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_COMPARE_HPP -#define BOOST_STRING_COMPARE_HPP - -#include -#include - -/*! \file - Defines element comparison predicates. Many algorithms in this library can - take an additional argument with a predicate used to compare elements. - This makes it possible, for instance, to have case insensitive versions - of the algorithms. -*/ - -namespace boost { - namespace algorithm { - - // is_equal functor -----------------------------------------------// - - //! is_equal functor - /*! - Standard STL equal_to only handle comparison between arguments - of the same type. This is a less restrictive version which wraps operator ==. - */ - struct is_equal - { - //! Function operator - /*! - Compare two operands for equality - */ - template< typename T1, typename T2 > - bool operator()( const T1& Arg1, const T2& Arg2 ) const - { - return Arg1==Arg2; - } - }; - - //! case insensitive version of is_equal - /*! - Case insensitive comparison predicate. Comparison is done using - specified locales. - */ - struct is_iequal - { - //! Constructor - /*! - \param Loc locales used for comparison - */ - is_iequal( const std::locale& Loc=std::locale() ) : - m_Loc( Loc ) {} - - //! Function operator - /*! - Compare two operands. Case is ignored. - */ - template< typename T1, typename T2 > - bool operator()( const T1& Arg1, const T2& Arg2 ) const - { - #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) - return std::toupper(Arg1)==std::toupper(Arg2); - #else - return std::toupper(Arg1,m_Loc)==std::toupper(Arg2,m_Loc); - #endif - } - - private: - std::locale m_Loc; - }; - - // is_less functor -----------------------------------------------// - - //! is_less functor - /*! - Convenient version of standard std::less. Operation is templated, therefore it is - not required to specify the exact types upon the construction - */ - struct is_less - { - //! Functor operation - /*! - Compare two operands using > operator - */ - template< typename T1, typename T2 > - bool operator()( const T1& Arg1, const T2& Arg2 ) const - { - return Arg1 - bool operator()( const T1& Arg1, const T2& Arg2 ) const - { - #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) - return std::toupper(Arg1)(Arg1,m_Loc)(Arg2,m_Loc); - #endif - } - - private: - std::locale m_Loc; - }; - - // is_not_greater functor -----------------------------------------------// - - //! is_not_greater functor - /*! - Convenient version of standard std::not_greater_to. Operation is templated, therefore it is - not required to specify the exact types upon the construction - */ - struct is_not_greater - { - //! Functor operation - /*! - Compare two operands using > operator - */ - template< typename T1, typename T2 > - bool operator()( const T1& Arg1, const T2& Arg2 ) const - { - return Arg1<=Arg2; - } - }; - - - //! case insensitive version of is_not_greater - /*! - Case insensitive comparison predicate. Comparison is done using - specified locales. - */ - struct is_not_igreater - { - //! Constructor - /*! - \param Loc locales used for comparison - */ - is_not_igreater( const std::locale& Loc=std::locale() ) : - m_Loc( Loc ) {} - - //! Function operator - /*! - Compare two operands. Case is ignored. - */ - template< typename T1, typename T2 > - bool operator()( const T1& Arg1, const T2& Arg2 ) const - { - #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) - return std::toupper(Arg1)<=std::toupper(Arg2); - #else - return std::toupper(Arg1,m_Loc)<=std::toupper(Arg2,m_Loc); - #endif - } - - private: - std::locale m_Loc; - }; - - - } // namespace algorithm - - // pull names to the boost namespace - using algorithm::is_equal; - using algorithm::is_iequal; - using algorithm::is_less; - using algorithm::is_iless; - using algorithm::is_not_greater; - using algorithm::is_not_igreater; - -} // namespace boost - - -#endif // BOOST_STRING_COMPARE_HPP +// Boost string_algo library compare.hpp header file -------------------------// + +// Copyright Pavol Droba 2002-2006. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_COMPARE_HPP +#define BOOST_STRING_COMPARE_HPP + +#include +#include + +/*! \file + Defines element comparison predicates. Many algorithms in this library can + take an additional argument with a predicate used to compare elements. + This makes it possible, for instance, to have case insensitive versions + of the algorithms. +*/ + +namespace boost { + namespace algorithm { + + // is_equal functor -----------------------------------------------// + + //! is_equal functor + /*! + Standard STL equal_to only handle comparison between arguments + of the same type. This is a less restrictive version which wraps operator ==. + */ + struct is_equal + { + //! Function operator + /*! + Compare two operands for equality + */ + template< typename T1, typename T2 > + bool operator()( const T1& Arg1, const T2& Arg2 ) const + { + return Arg1==Arg2; + } + }; + + //! case insensitive version of is_equal + /*! + Case insensitive comparison predicate. Comparison is done using + specified locales. + */ + struct is_iequal + { + //! Constructor + /*! + \param Loc locales used for comparison + */ + is_iequal( const std::locale& Loc=std::locale() ) : + m_Loc( Loc ) {} + + //! Function operator + /*! + Compare two operands. Case is ignored. + */ + template< typename T1, typename T2 > + bool operator()( const T1& Arg1, const T2& Arg2 ) const + { + #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) + return std::toupper(Arg1)==std::toupper(Arg2); + #else + return std::toupper(Arg1,m_Loc)==std::toupper(Arg2,m_Loc); + #endif + } + + private: + std::locale m_Loc; + }; + + // is_less functor -----------------------------------------------// + + //! is_less functor + /*! + Convenient version of standard std::less. Operation is templated, therefore it is + not required to specify the exact types upon the construction + */ + struct is_less + { + //! Functor operation + /*! + Compare two operands using > operator + */ + template< typename T1, typename T2 > + bool operator()( const T1& Arg1, const T2& Arg2 ) const + { + return Arg1 + bool operator()( const T1& Arg1, const T2& Arg2 ) const + { + #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) + return std::toupper(Arg1)(Arg1,m_Loc)(Arg2,m_Loc); + #endif + } + + private: + std::locale m_Loc; + }; + + // is_not_greater functor -----------------------------------------------// + + //! is_not_greater functor + /*! + Convenient version of standard std::not_greater_to. Operation is templated, therefore it is + not required to specify the exact types upon the construction + */ + struct is_not_greater + { + //! Functor operation + /*! + Compare two operands using > operator + */ + template< typename T1, typename T2 > + bool operator()( const T1& Arg1, const T2& Arg2 ) const + { + return Arg1<=Arg2; + } + }; + + + //! case insensitive version of is_not_greater + /*! + Case insensitive comparison predicate. Comparison is done using + specified locales. + */ + struct is_not_igreater + { + //! Constructor + /*! + \param Loc locales used for comparison + */ + is_not_igreater( const std::locale& Loc=std::locale() ) : + m_Loc( Loc ) {} + + //! Function operator + /*! + Compare two operands. Case is ignored. + */ + template< typename T1, typename T2 > + bool operator()( const T1& Arg1, const T2& Arg2 ) const + { + #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) + return std::toupper(Arg1)<=std::toupper(Arg2); + #else + return std::toupper(Arg1,m_Loc)<=std::toupper(Arg2,m_Loc); + #endif + } + + private: + std::locale m_Loc; + }; + + + } // namespace algorithm + + // pull names to the boost namespace + using algorithm::is_equal; + using algorithm::is_iequal; + using algorithm::is_less; + using algorithm::is_iless; + using algorithm::is_not_greater; + using algorithm::is_not_igreater; + +} // namespace boost + + +#endif // BOOST_STRING_COMPARE_HPP diff --git a/contrib/src/boost/algorithm/string/concept.hpp b/contrib/src/boost/algorithm/string/concept.hpp index efc8d0f..17e8349 100644 --- a/contrib/src/boost/algorithm/string/concept.hpp +++ b/contrib/src/boost/algorithm/string/concept.hpp @@ -1,83 +1,83 @@ -// Boost string_algo library concept.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2003. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_CONCEPT_HPP -#define BOOST_STRING_CONCEPT_HPP - -#include -#include -#include -#include - -/*! \file - Defines concepts used in string_algo library -*/ - -namespace boost { - namespace algorithm { - - //! Finder concept - /*! - Defines the Finder concept. Finder is a functor which selects - an arbitrary part of a string. Search is performed on - the range specified by starting and ending iterators. - - Result of the find operation must be convertible to iterator_range. - */ - template - struct FinderConcept - { - private: - typedef iterator_range range; - public: - void constraints() - { - // Operation - r=(*pF)(i,i); - } - private: - range r; - IteratorT i; - FinderT* pF; - }; // Finder_concept - - - //! Formatter concept - /*! - Defines the Formatter concept. Formatter is a functor, which - takes a result from a finder operation and transforms it - in a specific way. - - Result must be a container supported by container_traits, - or a reference to it. - */ - template - struct FormatterConcept - { - public: - void constraints() - { - // Operation - ::boost::begin((*pFo)( (*pF)(i,i) )); - ::boost::end((*pFo)( (*pF)(i,i) )); - } - private: - IteratorT i; - FinderT* pF; - FormatterT *pFo; - }; // FormatterConcept; - - } // namespace algorithm -} // namespace boost - - - - -#endif // BOOST_STRING_CONCEPT_HPP +// Boost string_algo library concept.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_CONCEPT_HPP +#define BOOST_STRING_CONCEPT_HPP + +#include +#include +#include +#include + +/*! \file + Defines concepts used in string_algo library +*/ + +namespace boost { + namespace algorithm { + + //! Finder concept + /*! + Defines the Finder concept. Finder is a functor which selects + an arbitrary part of a string. Search is performed on + the range specified by starting and ending iterators. + + Result of the find operation must be convertible to iterator_range. + */ + template + struct FinderConcept + { + private: + typedef iterator_range range; + public: + void constraints() + { + // Operation + r=(*pF)(i,i); + } + private: + range r; + IteratorT i; + FinderT* pF; + }; // Finder_concept + + + //! Formatter concept + /*! + Defines the Formatter concept. Formatter is a functor, which + takes a result from a finder operation and transforms it + in a specific way. + + Result must be a container supported by container_traits, + or a reference to it. + */ + template + struct FormatterConcept + { + public: + void constraints() + { + // Operation + ::boost::begin((*pFo)( (*pF)(i,i) )); + ::boost::end((*pFo)( (*pF)(i,i) )); + } + private: + IteratorT i; + FinderT* pF; + FormatterT *pFo; + }; // FormatterConcept; + + } // namespace algorithm +} // namespace boost + + + + +#endif // BOOST_STRING_CONCEPT_HPP diff --git a/contrib/src/boost/algorithm/string/config.hpp b/contrib/src/boost/algorithm/string/config.hpp index d10c6f5..559750a 100644 --- a/contrib/src/boost/algorithm/string/config.hpp +++ b/contrib/src/boost/algorithm/string/config.hpp @@ -1,28 +1,28 @@ -// Boost string_algo library config.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2003. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_CONFIG_HPP -#define BOOST_STRING_CONFIG_HPP - -#include -#include - -#ifdef BOOST_STRING_DEDUCED_TYPENAME -# error "macro already defined!" -#endif - -#define BOOST_STRING_TYPENAME BOOST_DEDUCED_TYPENAME - -// Metrowerks workaround -#if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) // 8.x -#pragma parse_func_templ off -#endif - -#endif // BOOST_STRING_CONFIG_HPP +// Boost string_algo library config.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_CONFIG_HPP +#define BOOST_STRING_CONFIG_HPP + +#include +#include + +#ifdef BOOST_STRING_DEDUCED_TYPENAME +# error "macro already defined!" +#endif + +#define BOOST_STRING_TYPENAME BOOST_DEDUCED_TYPENAME + +// Metrowerks workaround +#if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) // 8.x +#pragma parse_func_templ off +#endif + +#endif // BOOST_STRING_CONFIG_HPP diff --git a/contrib/src/boost/algorithm/string/constants.hpp b/contrib/src/boost/algorithm/string/constants.hpp index 9022d43..6ed70ef 100644 --- a/contrib/src/boost/algorithm/string/constants.hpp +++ b/contrib/src/boost/algorithm/string/constants.hpp @@ -1,36 +1,36 @@ -// Boost string_algo library constants.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2003. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_CONSTANTS_HPP -#define BOOST_STRING_CONSTANTS_HPP - -namespace boost { - namespace algorithm { - - //! Token compression mode - /*! - Specifies token compression mode for the token_finder. - */ - enum token_compress_mode_type - { - token_compress_on, //!< Compress adjacent tokens - token_compress_off //!< Do not compress adjacent tokens - }; - - } // namespace algorithm - - // pull the names to the boost namespace - using algorithm::token_compress_on; - using algorithm::token_compress_off; - -} // namespace boost - -#endif // BOOST_STRING_CONSTANTS_HPP - +// Boost string_algo library constants.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_CONSTANTS_HPP +#define BOOST_STRING_CONSTANTS_HPP + +namespace boost { + namespace algorithm { + + //! Token compression mode + /*! + Specifies token compression mode for the token_finder. + */ + enum token_compress_mode_type + { + token_compress_on, //!< Compress adjacent tokens + token_compress_off //!< Do not compress adjacent tokens + }; + + } // namespace algorithm + + // pull the names to the boost namespace + using algorithm::token_compress_on; + using algorithm::token_compress_off; + +} // namespace boost + +#endif // BOOST_STRING_CONSTANTS_HPP + diff --git a/contrib/src/boost/algorithm/string/detail/case_conv.hpp b/contrib/src/boost/algorithm/string/detail/case_conv.hpp index bc0891d..42621c7 100644 --- a/contrib/src/boost/algorithm/string/detail/case_conv.hpp +++ b/contrib/src/boost/algorithm/string/detail/case_conv.hpp @@ -1,123 +1,123 @@ -// Boost string_algo library string_funct.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2003. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_CASE_CONV_DETAIL_HPP -#define BOOST_STRING_CASE_CONV_DETAIL_HPP - -#include -#include -#include - -#include - -namespace boost { - namespace algorithm { - namespace detail { - -// case conversion functors -----------------------------------------------// - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - - // a tolower functor - template - struct to_lowerF : public std::unary_function - { - // Constructor - to_lowerF( const std::locale& Loc ) : m_Loc( &Loc ) {} - - // Operation - CharT operator ()( CharT Ch ) const - { - #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) - return std::tolower( static_cast::type> ( Ch )); - #else - return std::tolower( Ch, *m_Loc ); - #endif - } - private: - const std::locale* m_Loc; - }; - - // a toupper functor - template - struct to_upperF : public std::unary_function - { - // Constructor - to_upperF( const std::locale& Loc ) : m_Loc( &Loc ) {} - - // Operation - CharT operator ()( CharT Ch ) const - { - #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) - return std::toupper( static_cast::type> ( Ch )); - #else - return std::toupper( Ch, *m_Loc ); - #endif - } - private: - const std::locale* m_Loc; - }; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - -// algorithm implementation ------------------------------------------------------------------------- - - // Transform a range - template - OutputIteratorT transform_range_copy( - OutputIteratorT Output, - const RangeT& Input, - FunctorT Functor) - { - return std::transform( - ::boost::begin(Input), - ::boost::end(Input), - Output, - Functor); - } - - // Transform a range (in-place) - template - void transform_range( - const RangeT& Input, - FunctorT Functor) - { - std::transform( - ::boost::begin(Input), - ::boost::end(Input), - ::boost::begin(Input), - Functor); - } - - template - inline SequenceT transform_range_copy( - const RangeT& Input, - FunctorT Functor) - { - return SequenceT( - ::boost::make_transform_iterator( - ::boost::begin(Input), - Functor), - ::boost::make_transform_iterator( - ::boost::end(Input), - Functor)); - } - - } // namespace detail - } // namespace algorithm -} // namespace boost - - -#endif // BOOST_STRING_CASE_CONV_DETAIL_HPP +// Boost string_algo library string_funct.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_CASE_CONV_DETAIL_HPP +#define BOOST_STRING_CASE_CONV_DETAIL_HPP + +#include +#include +#include + +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// case conversion functors -----------------------------------------------// + +#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) +#pragma warning(push) +#pragma warning(disable:4512) //assignment operator could not be generated +#endif + + // a tolower functor + template + struct to_lowerF : public std::unary_function + { + // Constructor + to_lowerF( const std::locale& Loc ) : m_Loc( &Loc ) {} + + // Operation + CharT operator ()( CharT Ch ) const + { + #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) + return std::tolower( static_cast::type> ( Ch )); + #else + return std::tolower( Ch, *m_Loc ); + #endif + } + private: + const std::locale* m_Loc; + }; + + // a toupper functor + template + struct to_upperF : public std::unary_function + { + // Constructor + to_upperF( const std::locale& Loc ) : m_Loc( &Loc ) {} + + // Operation + CharT operator ()( CharT Ch ) const + { + #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) + return std::toupper( static_cast::type> ( Ch )); + #else + return std::toupper( Ch, *m_Loc ); + #endif + } + private: + const std::locale* m_Loc; + }; + +#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) +#pragma warning(pop) +#endif + +// algorithm implementation ------------------------------------------------------------------------- + + // Transform a range + template + OutputIteratorT transform_range_copy( + OutputIteratorT Output, + const RangeT& Input, + FunctorT Functor) + { + return std::transform( + ::boost::begin(Input), + ::boost::end(Input), + Output, + Functor); + } + + // Transform a range (in-place) + template + void transform_range( + const RangeT& Input, + FunctorT Functor) + { + std::transform( + ::boost::begin(Input), + ::boost::end(Input), + ::boost::begin(Input), + Functor); + } + + template + inline SequenceT transform_range_copy( + const RangeT& Input, + FunctorT Functor) + { + return SequenceT( + ::boost::make_transform_iterator( + ::boost::begin(Input), + Functor), + ::boost::make_transform_iterator( + ::boost::end(Input), + Functor)); + } + + } // namespace detail + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_CASE_CONV_DETAIL_HPP diff --git a/contrib/src/boost/algorithm/string/detail/classification.hpp b/contrib/src/boost/algorithm/string/detail/classification.hpp index 7fe9d58..704d9d2 100644 --- a/contrib/src/boost/algorithm/string/detail/classification.hpp +++ b/contrib/src/boost/algorithm/string/detail/classification.hpp @@ -1,353 +1,353 @@ -// Boost string_algo library classification.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2003. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_CLASSIFICATION_DETAIL_HPP -#define BOOST_STRING_CLASSIFICATION_DETAIL_HPP - -#include -#include -#include -#include - -#include -#include - -#include -#include - -namespace boost { - namespace algorithm { - namespace detail { - -// classification functors -----------------------------------------------// - - // is_classified functor - struct is_classifiedF : - public predicate_facade - { - // Boost.ResultOf support - typedef bool result_type; - - // Constructor from a locale - is_classifiedF(std::ctype_base::mask Type, std::locale const & Loc = std::locale()) : - m_Type(Type), m_Locale(Loc) {} - // Operation - template - bool operator()( CharT Ch ) const - { - return std::use_facet< std::ctype >(m_Locale).is( m_Type, Ch ); - } - - #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x582) && !defined(_USE_OLD_RW_STL) - template<> - bool operator()( char const Ch ) const - { - return std::use_facet< std::ctype >(m_Locale).is( m_Type, Ch ); - } - #endif - - private: - std::ctype_base::mask m_Type; - std::locale m_Locale; - }; - - - // is_any_of functor - /* - returns true if the value is from the specified set - */ - template - struct is_any_ofF : - public predicate_facade > - { - private: - // set cannot operate on const value-type - typedef typename ::boost::remove_const::type set_value_type; - - public: - // Boost.ResultOf support - typedef bool result_type; - - // Constructor - template - is_any_ofF( const RangeT& Range ) : m_Size(0) - { - // Prepare storage - m_Storage.m_dynSet=0; - - std::size_t Size=::boost::distance(Range); - m_Size=Size; - set_value_type* Storage=0; - - if(use_fixed_storage(m_Size)) - { - // Use fixed storage - Storage=&m_Storage.m_fixSet[0]; - } - else - { - // Use dynamic storage - m_Storage.m_dynSet=new set_value_type[m_Size]; - Storage=m_Storage.m_dynSet; - } - - // Use fixed storage - ::std::copy(::boost::begin(Range), ::boost::end(Range), Storage); - ::std::sort(Storage, Storage+m_Size); - } - - // Copy constructor - is_any_ofF(const is_any_ofF& Other) : m_Size(Other.m_Size) - { - // Prepare storage - m_Storage.m_dynSet=0; - const set_value_type* SrcStorage=0; - set_value_type* DestStorage=0; - - if(use_fixed_storage(m_Size)) - { - // Use fixed storage - DestStorage=&m_Storage.m_fixSet[0]; - SrcStorage=&Other.m_Storage.m_fixSet[0]; - } - else - { - // Use dynamic storage - m_Storage.m_dynSet=new set_value_type[m_Size]; - DestStorage=m_Storage.m_dynSet; - SrcStorage=Other.m_Storage.m_dynSet; - } - - // Use fixed storage - ::std::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size); - } - - // Destructor - ~is_any_ofF() - { - if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0) - { - delete [] m_Storage.m_dynSet; - } - } - - // Assignment - is_any_ofF& operator=(const is_any_ofF& Other) - { - // Handle self assignment - if(this==&Other) return *this; - - // Prepare storage - const set_value_type* SrcStorage; - set_value_type* DestStorage; - - if(use_fixed_storage(Other.m_Size)) - { - // Use fixed storage - DestStorage=&m_Storage.m_fixSet[0]; - SrcStorage=&Other.m_Storage.m_fixSet[0]; - - // Delete old storage if was present - if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0) - { - delete [] m_Storage.m_dynSet; - } - - // Set new size - m_Size=Other.m_Size; - } - else - { - // Other uses dynamic storage - SrcStorage=Other.m_Storage.m_dynSet; - - // Check what kind of storage are we using right now - if(use_fixed_storage(m_Size)) - { - // Using fixed storage, allocate new - set_value_type* pTemp=new set_value_type[Other.m_Size]; - DestStorage=pTemp; - m_Storage.m_dynSet=pTemp; - m_Size=Other.m_Size; - } - else - { - // Using dynamic storage, check if can reuse - if(m_Storage.m_dynSet!=0 && m_Size>=Other.m_Size && m_Size - bool operator()( Char2T Ch ) const - { - const set_value_type* Storage= - (use_fixed_storage(m_Size)) - ? &m_Storage.m_fixSet[0] - : m_Storage.m_dynSet; - - return ::std::binary_search(Storage, Storage+m_Size, Ch); - } - private: - // check if the size is eligible for fixed storage - static bool use_fixed_storage(std::size_t size) - { - return size<=sizeof(set_value_type*)*2; - } - - - private: - // storage - // The actual used storage is selected on the type - union - { - set_value_type* m_dynSet; - set_value_type m_fixSet[sizeof(set_value_type*)*2]; - } - m_Storage; - - // storage size - ::std::size_t m_Size; - }; - - // is_from_range functor - /* - returns true if the value is from the specified range. - (i.e. x>=From && x>=To) - */ - template - struct is_from_rangeF : - public predicate_facade< is_from_rangeF > - { - // Boost.ResultOf support - typedef bool result_type; - - // Constructor - is_from_rangeF( CharT From, CharT To ) : m_From(From), m_To(To) {} - - // Operation - template - bool operator()( Char2T Ch ) const - { - return ( m_From <= Ch ) && ( Ch <= m_To ); - } - - private: - CharT m_From; - CharT m_To; - }; - - // class_and composition predicate - template - struct pred_andF : - public predicate_facade< pred_andF > - { - public: - - // Boost.ResultOf support - typedef bool result_type; - - // Constructor - pred_andF( Pred1T Pred1, Pred2T Pred2 ) : - m_Pred1(Pred1), m_Pred2(Pred2) {} - - // Operation - template - bool operator()( CharT Ch ) const - { - return m_Pred1(Ch) && m_Pred2(Ch); - } - - private: - Pred1T m_Pred1; - Pred2T m_Pred2; - }; - - // class_or composition predicate - template - struct pred_orF : - public predicate_facade< pred_orF > - { - public: - // Boost.ResultOf support - typedef bool result_type; - - // Constructor - pred_orF( Pred1T Pred1, Pred2T Pred2 ) : - m_Pred1(Pred1), m_Pred2(Pred2) {} - - // Operation - template - bool operator()( CharT Ch ) const - { - return m_Pred1(Ch) || m_Pred2(Ch); - } - - private: - Pred1T m_Pred1; - Pred2T m_Pred2; - }; - - // class_not composition predicate - template< typename PredT > - struct pred_notF : - public predicate_facade< pred_notF > - { - public: - // Boost.ResultOf support - typedef bool result_type; - - // Constructor - pred_notF( PredT Pred ) : m_Pred(Pred) {} - - // Operation - template - bool operator()( CharT Ch ) const - { - return !m_Pred(Ch); - } - - private: - PredT m_Pred; - }; - - } // namespace detail - } // namespace algorithm -} // namespace boost - - -#endif // BOOST_STRING_CLASSIFICATION_DETAIL_HPP +// Boost string_algo library classification.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_CLASSIFICATION_DETAIL_HPP +#define BOOST_STRING_CLASSIFICATION_DETAIL_HPP + +#include +#include +#include +#include + +#include +#include + +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// classification functors -----------------------------------------------// + + // is_classified functor + struct is_classifiedF : + public predicate_facade + { + // Boost.ResultOf support + typedef bool result_type; + + // Constructor from a locale + is_classifiedF(std::ctype_base::mask Type, std::locale const & Loc = std::locale()) : + m_Type(Type), m_Locale(Loc) {} + // Operation + template + bool operator()( CharT Ch ) const + { + return std::use_facet< std::ctype >(m_Locale).is( m_Type, Ch ); + } + + #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x582) && !defined(_USE_OLD_RW_STL) + template<> + bool operator()( char const Ch ) const + { + return std::use_facet< std::ctype >(m_Locale).is( m_Type, Ch ); + } + #endif + + private: + std::ctype_base::mask m_Type; + std::locale m_Locale; + }; + + + // is_any_of functor + /* + returns true if the value is from the specified set + */ + template + struct is_any_ofF : + public predicate_facade > + { + private: + // set cannot operate on const value-type + typedef typename ::boost::remove_const::type set_value_type; + + public: + // Boost.ResultOf support + typedef bool result_type; + + // Constructor + template + is_any_ofF( const RangeT& Range ) : m_Size(0) + { + // Prepare storage + m_Storage.m_dynSet=0; + + std::size_t Size=::boost::distance(Range); + m_Size=Size; + set_value_type* Storage=0; + + if(use_fixed_storage(m_Size)) + { + // Use fixed storage + Storage=&m_Storage.m_fixSet[0]; + } + else + { + // Use dynamic storage + m_Storage.m_dynSet=new set_value_type[m_Size]; + Storage=m_Storage.m_dynSet; + } + + // Use fixed storage + ::std::copy(::boost::begin(Range), ::boost::end(Range), Storage); + ::std::sort(Storage, Storage+m_Size); + } + + // Copy constructor + is_any_ofF(const is_any_ofF& Other) : m_Size(Other.m_Size) + { + // Prepare storage + m_Storage.m_dynSet=0; + const set_value_type* SrcStorage=0; + set_value_type* DestStorage=0; + + if(use_fixed_storage(m_Size)) + { + // Use fixed storage + DestStorage=&m_Storage.m_fixSet[0]; + SrcStorage=&Other.m_Storage.m_fixSet[0]; + } + else + { + // Use dynamic storage + m_Storage.m_dynSet=new set_value_type[m_Size]; + DestStorage=m_Storage.m_dynSet; + SrcStorage=Other.m_Storage.m_dynSet; + } + + // Use fixed storage + ::std::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size); + } + + // Destructor + ~is_any_ofF() + { + if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0) + { + delete [] m_Storage.m_dynSet; + } + } + + // Assignment + is_any_ofF& operator=(const is_any_ofF& Other) + { + // Handle self assignment + if(this==&Other) return *this; + + // Prepare storage + const set_value_type* SrcStorage; + set_value_type* DestStorage; + + if(use_fixed_storage(Other.m_Size)) + { + // Use fixed storage + DestStorage=&m_Storage.m_fixSet[0]; + SrcStorage=&Other.m_Storage.m_fixSet[0]; + + // Delete old storage if was present + if(!use_fixed_storage(m_Size) && m_Storage.m_dynSet!=0) + { + delete [] m_Storage.m_dynSet; + } + + // Set new size + m_Size=Other.m_Size; + } + else + { + // Other uses dynamic storage + SrcStorage=Other.m_Storage.m_dynSet; + + // Check what kind of storage are we using right now + if(use_fixed_storage(m_Size)) + { + // Using fixed storage, allocate new + set_value_type* pTemp=new set_value_type[Other.m_Size]; + DestStorage=pTemp; + m_Storage.m_dynSet=pTemp; + m_Size=Other.m_Size; + } + else + { + // Using dynamic storage, check if can reuse + if(m_Storage.m_dynSet!=0 && m_Size>=Other.m_Size && m_Size + bool operator()( Char2T Ch ) const + { + const set_value_type* Storage= + (use_fixed_storage(m_Size)) + ? &m_Storage.m_fixSet[0] + : m_Storage.m_dynSet; + + return ::std::binary_search(Storage, Storage+m_Size, Ch); + } + private: + // check if the size is eligible for fixed storage + static bool use_fixed_storage(std::size_t size) + { + return size<=sizeof(set_value_type*)*2; + } + + + private: + // storage + // The actual used storage is selected on the type + union + { + set_value_type* m_dynSet; + set_value_type m_fixSet[sizeof(set_value_type*)*2]; + } + m_Storage; + + // storage size + ::std::size_t m_Size; + }; + + // is_from_range functor + /* + returns true if the value is from the specified range. + (i.e. x>=From && x>=To) + */ + template + struct is_from_rangeF : + public predicate_facade< is_from_rangeF > + { + // Boost.ResultOf support + typedef bool result_type; + + // Constructor + is_from_rangeF( CharT From, CharT To ) : m_From(From), m_To(To) {} + + // Operation + template + bool operator()( Char2T Ch ) const + { + return ( m_From <= Ch ) && ( Ch <= m_To ); + } + + private: + CharT m_From; + CharT m_To; + }; + + // class_and composition predicate + template + struct pred_andF : + public predicate_facade< pred_andF > + { + public: + + // Boost.ResultOf support + typedef bool result_type; + + // Constructor + pred_andF( Pred1T Pred1, Pred2T Pred2 ) : + m_Pred1(Pred1), m_Pred2(Pred2) {} + + // Operation + template + bool operator()( CharT Ch ) const + { + return m_Pred1(Ch) && m_Pred2(Ch); + } + + private: + Pred1T m_Pred1; + Pred2T m_Pred2; + }; + + // class_or composition predicate + template + struct pred_orF : + public predicate_facade< pred_orF > + { + public: + // Boost.ResultOf support + typedef bool result_type; + + // Constructor + pred_orF( Pred1T Pred1, Pred2T Pred2 ) : + m_Pred1(Pred1), m_Pred2(Pred2) {} + + // Operation + template + bool operator()( CharT Ch ) const + { + return m_Pred1(Ch) || m_Pred2(Ch); + } + + private: + Pred1T m_Pred1; + Pred2T m_Pred2; + }; + + // class_not composition predicate + template< typename PredT > + struct pred_notF : + public predicate_facade< pred_notF > + { + public: + // Boost.ResultOf support + typedef bool result_type; + + // Constructor + pred_notF( PredT Pred ) : m_Pred(Pred) {} + + // Operation + template + bool operator()( CharT Ch ) const + { + return !m_Pred(Ch); + } + + private: + PredT m_Pred; + }; + + } // namespace detail + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_CLASSIFICATION_DETAIL_HPP diff --git a/contrib/src/boost/algorithm/string/detail/find_format.hpp b/contrib/src/boost/algorithm/string/detail/find_format.hpp index b9b495d..b398750 100644 --- a/contrib/src/boost/algorithm/string/detail/find_format.hpp +++ b/contrib/src/boost/algorithm/string/detail/find_format.hpp @@ -1,204 +1,204 @@ -// Boost string_algo library find_format.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2003. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_FIND_FORMAT_DETAIL_HPP -#define BOOST_STRING_FIND_FORMAT_DETAIL_HPP - -#include -#include -#include -#include -#include -#include - -namespace boost { - namespace algorithm { - namespace detail { - -// find_format_copy (iterator variant) implementation -------------------------------// - - template< - typename OutputIteratorT, - typename InputT, - typename FormatterT, - typename FindResultT, - typename FormatResultT > - inline OutputIteratorT find_format_copy_impl2( - OutputIteratorT Output, - const InputT& Input, - FormatterT Formatter, - const FindResultT& FindResult, - const FormatResultT& FormatResult ) - { - typedef find_format_store< - BOOST_STRING_TYPENAME - range_const_iterator::type, - FormatterT, - FormatResultT > store_type; - - // Create store for the find result - store_type M( FindResult, FormatResult, Formatter ); - - if ( !M ) - { - // Match not found - return original sequence - Output = std::copy( ::boost::begin(Input), ::boost::end(Input), Output ); - return Output; - } - - // Copy the beginning of the sequence - Output = std::copy( ::boost::begin(Input), ::boost::begin(M), Output ); - // Format find result - // Copy formatted result - Output = std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output ); - // Copy the rest of the sequence - Output = std::copy( M.end(), ::boost::end(Input), Output ); - - return Output; - } - - template< - typename OutputIteratorT, - typename InputT, - typename FormatterT, - typename FindResultT > - inline OutputIteratorT find_format_copy_impl( - OutputIteratorT Output, - const InputT& Input, - FormatterT Formatter, - const FindResultT& FindResult ) - { - if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { - return ::boost::algorithm::detail::find_format_copy_impl2( - Output, - Input, - Formatter, - FindResult, - Formatter(FindResult) ); - } else { - return std::copy( ::boost::begin(Input), ::boost::end(Input), Output ); - } - } - - -// find_format_copy implementation --------------------------------------------------// - - template< - typename InputT, - typename FormatterT, - typename FindResultT, - typename FormatResultT > - inline InputT find_format_copy_impl2( - const InputT& Input, - FormatterT Formatter, - const FindResultT& FindResult, - const FormatResultT& FormatResult) - { - typedef find_format_store< - BOOST_STRING_TYPENAME - range_const_iterator::type, - FormatterT, - FormatResultT > store_type; - - // Create store for the find result - store_type M( FindResult, FormatResult, Formatter ); - - if ( !M ) - { - // Match not found - return original sequence - return InputT( Input ); - } - - InputT Output; - // Copy the beginning of the sequence - boost::algorithm::detail::insert( Output, ::boost::end(Output), ::boost::begin(Input), M.begin() ); - // Copy formatted result - boost::algorithm::detail::insert( Output, ::boost::end(Output), M.format_result() ); - // Copy the rest of the sequence - boost::algorithm::detail::insert( Output, ::boost::end(Output), M.end(), ::boost::end(Input) ); - - return Output; - } - - template< - typename InputT, - typename FormatterT, - typename FindResultT > - inline InputT find_format_copy_impl( - const InputT& Input, - FormatterT Formatter, - const FindResultT& FindResult) - { - if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { - return ::boost::algorithm::detail::find_format_copy_impl2( - Input, - Formatter, - FindResult, - Formatter(FindResult) ); - } else { - return Input; - } - } - - // replace implementation ----------------------------------------------------// - - template< - typename InputT, - typename FormatterT, - typename FindResultT, - typename FormatResultT > - inline void find_format_impl2( - InputT& Input, - FormatterT Formatter, - const FindResultT& FindResult, - const FormatResultT& FormatResult) - { - typedef find_format_store< - BOOST_STRING_TYPENAME - range_iterator::type, - FormatterT, - FormatResultT > store_type; - - // Create store for the find result - store_type M( FindResult, FormatResult, Formatter ); - - if ( !M ) - { - // Search not found - return original sequence - return; - } - - // Replace match - ::boost::algorithm::detail::replace( Input, M.begin(), M.end(), M.format_result() ); - } - - template< - typename InputT, - typename FormatterT, - typename FindResultT > - inline void find_format_impl( - InputT& Input, - FormatterT Formatter, - const FindResultT& FindResult) - { - if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { - ::boost::algorithm::detail::find_format_impl2( - Input, - Formatter, - FindResult, - Formatter(FindResult) ); - } - } - - } // namespace detail - } // namespace algorithm -} // namespace boost - -#endif // BOOST_STRING_FIND_FORMAT_DETAIL_HPP +// Boost string_algo library find_format.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FIND_FORMAT_DETAIL_HPP +#define BOOST_STRING_FIND_FORMAT_DETAIL_HPP + +#include +#include +#include +#include +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// find_format_copy (iterator variant) implementation -------------------------------// + + template< + typename OutputIteratorT, + typename InputT, + typename FormatterT, + typename FindResultT, + typename FormatResultT > + inline OutputIteratorT find_format_copy_impl2( + OutputIteratorT Output, + const InputT& Input, + FormatterT Formatter, + const FindResultT& FindResult, + const FormatResultT& FormatResult ) + { + typedef find_format_store< + BOOST_STRING_TYPENAME + range_const_iterator::type, + FormatterT, + FormatResultT > store_type; + + // Create store for the find result + store_type M( FindResult, FormatResult, Formatter ); + + if ( !M ) + { + // Match not found - return original sequence + Output = std::copy( ::boost::begin(Input), ::boost::end(Input), Output ); + return Output; + } + + // Copy the beginning of the sequence + Output = std::copy( ::boost::begin(Input), ::boost::begin(M), Output ); + // Format find result + // Copy formatted result + Output = std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output ); + // Copy the rest of the sequence + Output = std::copy( M.end(), ::boost::end(Input), Output ); + + return Output; + } + + template< + typename OutputIteratorT, + typename InputT, + typename FormatterT, + typename FindResultT > + inline OutputIteratorT find_format_copy_impl( + OutputIteratorT Output, + const InputT& Input, + FormatterT Formatter, + const FindResultT& FindResult ) + { + if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { + return ::boost::algorithm::detail::find_format_copy_impl2( + Output, + Input, + Formatter, + FindResult, + Formatter(FindResult) ); + } else { + return std::copy( ::boost::begin(Input), ::boost::end(Input), Output ); + } + } + + +// find_format_copy implementation --------------------------------------------------// + + template< + typename InputT, + typename FormatterT, + typename FindResultT, + typename FormatResultT > + inline InputT find_format_copy_impl2( + const InputT& Input, + FormatterT Formatter, + const FindResultT& FindResult, + const FormatResultT& FormatResult) + { + typedef find_format_store< + BOOST_STRING_TYPENAME + range_const_iterator::type, + FormatterT, + FormatResultT > store_type; + + // Create store for the find result + store_type M( FindResult, FormatResult, Formatter ); + + if ( !M ) + { + // Match not found - return original sequence + return InputT( Input ); + } + + InputT Output; + // Copy the beginning of the sequence + boost::algorithm::detail::insert( Output, ::boost::end(Output), ::boost::begin(Input), M.begin() ); + // Copy formatted result + boost::algorithm::detail::insert( Output, ::boost::end(Output), M.format_result() ); + // Copy the rest of the sequence + boost::algorithm::detail::insert( Output, ::boost::end(Output), M.end(), ::boost::end(Input) ); + + return Output; + } + + template< + typename InputT, + typename FormatterT, + typename FindResultT > + inline InputT find_format_copy_impl( + const InputT& Input, + FormatterT Formatter, + const FindResultT& FindResult) + { + if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { + return ::boost::algorithm::detail::find_format_copy_impl2( + Input, + Formatter, + FindResult, + Formatter(FindResult) ); + } else { + return Input; + } + } + + // replace implementation ----------------------------------------------------// + + template< + typename InputT, + typename FormatterT, + typename FindResultT, + typename FormatResultT > + inline void find_format_impl2( + InputT& Input, + FormatterT Formatter, + const FindResultT& FindResult, + const FormatResultT& FormatResult) + { + typedef find_format_store< + BOOST_STRING_TYPENAME + range_iterator::type, + FormatterT, + FormatResultT > store_type; + + // Create store for the find result + store_type M( FindResult, FormatResult, Formatter ); + + if ( !M ) + { + // Search not found - return original sequence + return; + } + + // Replace match + ::boost::algorithm::detail::replace( Input, M.begin(), M.end(), M.format_result() ); + } + + template< + typename InputT, + typename FormatterT, + typename FindResultT > + inline void find_format_impl( + InputT& Input, + FormatterT Formatter, + const FindResultT& FindResult) + { + if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { + ::boost::algorithm::detail::find_format_impl2( + Input, + Formatter, + FindResult, + Formatter(FindResult) ); + } + } + + } // namespace detail + } // namespace algorithm +} // namespace boost + +#endif // BOOST_STRING_FIND_FORMAT_DETAIL_HPP diff --git a/contrib/src/boost/algorithm/string/detail/find_format_all.hpp b/contrib/src/boost/algorithm/string/detail/find_format_all.hpp index ae1e5da..52930c8 100644 --- a/contrib/src/boost/algorithm/string/detail/find_format_all.hpp +++ b/contrib/src/boost/algorithm/string/detail/find_format_all.hpp @@ -1,273 +1,273 @@ -// Boost string_algo library find_format_all.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2003. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP -#define BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP - -#include -#include -#include -#include -#include -#include - -namespace boost { - namespace algorithm { - namespace detail { - -// find_format_all_copy (iterator variant) implementation ---------------------------// - - template< - typename OutputIteratorT, - typename InputT, - typename FinderT, - typename FormatterT, - typename FindResultT, - typename FormatResultT > - inline OutputIteratorT find_format_all_copy_impl2( - OutputIteratorT Output, - const InputT& Input, - FinderT Finder, - FormatterT Formatter, - const FindResultT& FindResult, - const FormatResultT& FormatResult ) - { - typedef BOOST_STRING_TYPENAME - range_const_iterator::type input_iterator_type; - - typedef find_format_store< - input_iterator_type, - FormatterT, - FormatResultT > store_type; - - // Create store for the find result - store_type M( FindResult, FormatResult, Formatter ); - - // Initialize last match - input_iterator_type LastMatch=::boost::begin(Input); - - // Iterate through all matches - while( M ) - { - // Copy the beginning of the sequence - Output = std::copy( LastMatch, M.begin(), Output ); - // Copy formatted result - Output = std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output ); - - // Proceed to the next match - LastMatch=M.end(); - M=Finder( LastMatch, ::boost::end(Input) ); - } - - // Copy the rest of the sequence - Output = std::copy( LastMatch, ::boost::end(Input), Output ); - - return Output; - } - - template< - typename OutputIteratorT, - typename InputT, - typename FinderT, - typename FormatterT, - typename FindResultT > - inline OutputIteratorT find_format_all_copy_impl( - OutputIteratorT Output, - const InputT& Input, - FinderT Finder, - FormatterT Formatter, - const FindResultT& FindResult ) - { - if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { - return ::boost::algorithm::detail::find_format_all_copy_impl2( - Output, - Input, - Finder, - Formatter, - FindResult, - Formatter(FindResult) ); - } else { - return std::copy( ::boost::begin(Input), ::boost::end(Input), Output ); - } - } - - // find_format_all_copy implementation ----------------------------------------------// - - template< - typename InputT, - typename FinderT, - typename FormatterT, - typename FindResultT, - typename FormatResultT > - inline InputT find_format_all_copy_impl2( - const InputT& Input, - FinderT Finder, - FormatterT Formatter, - const FindResultT& FindResult, - const FormatResultT& FormatResult) - { - typedef BOOST_STRING_TYPENAME - range_const_iterator::type input_iterator_type; - - typedef find_format_store< - input_iterator_type, - FormatterT, - FormatResultT > store_type; - - // Create store for the find result - store_type M( FindResult, FormatResult, Formatter ); - - // Initialize last match - input_iterator_type LastMatch=::boost::begin(Input); - - // Output temporary - InputT Output; - - // Iterate through all matches - while( M ) - { - // Copy the beginning of the sequence - boost::algorithm::detail::insert( Output, ::boost::end(Output), LastMatch, M.begin() ); - // Copy formatted result - boost::algorithm::detail::insert( Output, ::boost::end(Output), M.format_result() ); - - // Proceed to the next match - LastMatch=M.end(); - M=Finder( LastMatch, ::boost::end(Input) ); - } - - // Copy the rest of the sequence - ::boost::algorithm::detail::insert( Output, ::boost::end(Output), LastMatch, ::boost::end(Input) ); - - return Output; - } - - template< - typename InputT, - typename FinderT, - typename FormatterT, - typename FindResultT > - inline InputT find_format_all_copy_impl( - const InputT& Input, - FinderT Finder, - FormatterT Formatter, - const FindResultT& FindResult) - { - if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { - return ::boost::algorithm::detail::find_format_all_copy_impl2( - Input, - Finder, - Formatter, - FindResult, - Formatter(FindResult) ); - } else { - return Input; - } - } - - // find_format_all implementation ------------------------------------------------// - - template< - typename InputT, - typename FinderT, - typename FormatterT, - typename FindResultT, - typename FormatResultT > - inline void find_format_all_impl2( - InputT& Input, - FinderT Finder, - FormatterT Formatter, - FindResultT FindResult, - FormatResultT FormatResult) - { - typedef BOOST_STRING_TYPENAME - range_iterator::type input_iterator_type; - typedef find_format_store< - input_iterator_type, - FormatterT, - FormatResultT > store_type; - - // Create store for the find result - store_type M( FindResult, FormatResult, Formatter ); - - // Instantiate replacement storage - std::deque< - BOOST_STRING_TYPENAME range_value::type> Storage; - - // Initialize replacement iterators - input_iterator_type InsertIt=::boost::begin(Input); - input_iterator_type SearchIt=::boost::begin(Input); - - while( M ) - { - // process the segment - InsertIt=process_segment( - Storage, - Input, - InsertIt, - SearchIt, - M.begin() ); - - // Adjust search iterator - SearchIt=M.end(); - - // Copy formatted replace to the storage - ::boost::algorithm::detail::copy_to_storage( Storage, M.format_result() ); - - // Find range for a next match - M=Finder( SearchIt, ::boost::end(Input) ); - } - - // process the last segment - InsertIt=::boost::algorithm::detail::process_segment( - Storage, - Input, - InsertIt, - SearchIt, - ::boost::end(Input) ); - - if ( Storage.empty() ) - { - // Truncate input - ::boost::algorithm::detail::erase( Input, InsertIt, ::boost::end(Input) ); - } - else - { - // Copy remaining data to the end of input - ::boost::algorithm::detail::insert( Input, ::boost::end(Input), Storage.begin(), Storage.end() ); - } - } - - template< - typename InputT, - typename FinderT, - typename FormatterT, - typename FindResultT > - inline void find_format_all_impl( - InputT& Input, - FinderT Finder, - FormatterT Formatter, - FindResultT FindResult) - { - if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { - ::boost::algorithm::detail::find_format_all_impl2( - Input, - Finder, - Formatter, - FindResult, - Formatter(FindResult) ); - } - } - - } // namespace detail - } // namespace algorithm -} // namespace boost - -#endif // BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP +// Boost string_algo library find_format_all.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP +#define BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP + +#include +#include +#include +#include +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// find_format_all_copy (iterator variant) implementation ---------------------------// + + template< + typename OutputIteratorT, + typename InputT, + typename FinderT, + typename FormatterT, + typename FindResultT, + typename FormatResultT > + inline OutputIteratorT find_format_all_copy_impl2( + OutputIteratorT Output, + const InputT& Input, + FinderT Finder, + FormatterT Formatter, + const FindResultT& FindResult, + const FormatResultT& FormatResult ) + { + typedef BOOST_STRING_TYPENAME + range_const_iterator::type input_iterator_type; + + typedef find_format_store< + input_iterator_type, + FormatterT, + FormatResultT > store_type; + + // Create store for the find result + store_type M( FindResult, FormatResult, Formatter ); + + // Initialize last match + input_iterator_type LastMatch=::boost::begin(Input); + + // Iterate through all matches + while( M ) + { + // Copy the beginning of the sequence + Output = std::copy( LastMatch, M.begin(), Output ); + // Copy formatted result + Output = std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output ); + + // Proceed to the next match + LastMatch=M.end(); + M=Finder( LastMatch, ::boost::end(Input) ); + } + + // Copy the rest of the sequence + Output = std::copy( LastMatch, ::boost::end(Input), Output ); + + return Output; + } + + template< + typename OutputIteratorT, + typename InputT, + typename FinderT, + typename FormatterT, + typename FindResultT > + inline OutputIteratorT find_format_all_copy_impl( + OutputIteratorT Output, + const InputT& Input, + FinderT Finder, + FormatterT Formatter, + const FindResultT& FindResult ) + { + if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { + return ::boost::algorithm::detail::find_format_all_copy_impl2( + Output, + Input, + Finder, + Formatter, + FindResult, + Formatter(FindResult) ); + } else { + return std::copy( ::boost::begin(Input), ::boost::end(Input), Output ); + } + } + + // find_format_all_copy implementation ----------------------------------------------// + + template< + typename InputT, + typename FinderT, + typename FormatterT, + typename FindResultT, + typename FormatResultT > + inline InputT find_format_all_copy_impl2( + const InputT& Input, + FinderT Finder, + FormatterT Formatter, + const FindResultT& FindResult, + const FormatResultT& FormatResult) + { + typedef BOOST_STRING_TYPENAME + range_const_iterator::type input_iterator_type; + + typedef find_format_store< + input_iterator_type, + FormatterT, + FormatResultT > store_type; + + // Create store for the find result + store_type M( FindResult, FormatResult, Formatter ); + + // Initialize last match + input_iterator_type LastMatch=::boost::begin(Input); + + // Output temporary + InputT Output; + + // Iterate through all matches + while( M ) + { + // Copy the beginning of the sequence + boost::algorithm::detail::insert( Output, ::boost::end(Output), LastMatch, M.begin() ); + // Copy formatted result + boost::algorithm::detail::insert( Output, ::boost::end(Output), M.format_result() ); + + // Proceed to the next match + LastMatch=M.end(); + M=Finder( LastMatch, ::boost::end(Input) ); + } + + // Copy the rest of the sequence + ::boost::algorithm::detail::insert( Output, ::boost::end(Output), LastMatch, ::boost::end(Input) ); + + return Output; + } + + template< + typename InputT, + typename FinderT, + typename FormatterT, + typename FindResultT > + inline InputT find_format_all_copy_impl( + const InputT& Input, + FinderT Finder, + FormatterT Formatter, + const FindResultT& FindResult) + { + if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { + return ::boost::algorithm::detail::find_format_all_copy_impl2( + Input, + Finder, + Formatter, + FindResult, + Formatter(FindResult) ); + } else { + return Input; + } + } + + // find_format_all implementation ------------------------------------------------// + + template< + typename InputT, + typename FinderT, + typename FormatterT, + typename FindResultT, + typename FormatResultT > + inline void find_format_all_impl2( + InputT& Input, + FinderT Finder, + FormatterT Formatter, + FindResultT FindResult, + FormatResultT FormatResult) + { + typedef BOOST_STRING_TYPENAME + range_iterator::type input_iterator_type; + typedef find_format_store< + input_iterator_type, + FormatterT, + FormatResultT > store_type; + + // Create store for the find result + store_type M( FindResult, FormatResult, Formatter ); + + // Instantiate replacement storage + std::deque< + BOOST_STRING_TYPENAME range_value::type> Storage; + + // Initialize replacement iterators + input_iterator_type InsertIt=::boost::begin(Input); + input_iterator_type SearchIt=::boost::begin(Input); + + while( M ) + { + // process the segment + InsertIt=process_segment( + Storage, + Input, + InsertIt, + SearchIt, + M.begin() ); + + // Adjust search iterator + SearchIt=M.end(); + + // Copy formatted replace to the storage + ::boost::algorithm::detail::copy_to_storage( Storage, M.format_result() ); + + // Find range for a next match + M=Finder( SearchIt, ::boost::end(Input) ); + } + + // process the last segment + InsertIt=::boost::algorithm::detail::process_segment( + Storage, + Input, + InsertIt, + SearchIt, + ::boost::end(Input) ); + + if ( Storage.empty() ) + { + // Truncate input + ::boost::algorithm::detail::erase( Input, InsertIt, ::boost::end(Input) ); + } + else + { + // Copy remaining data to the end of input + ::boost::algorithm::detail::insert( Input, ::boost::end(Input), Storage.begin(), Storage.end() ); + } + } + + template< + typename InputT, + typename FinderT, + typename FormatterT, + typename FindResultT > + inline void find_format_all_impl( + InputT& Input, + FinderT Finder, + FormatterT Formatter, + FindResultT FindResult) + { + if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) { + ::boost::algorithm::detail::find_format_all_impl2( + Input, + Finder, + Formatter, + FindResult, + Formatter(FindResult) ); + } + } + + } // namespace detail + } // namespace algorithm +} // namespace boost + +#endif // BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP diff --git a/contrib/src/boost/algorithm/string/detail/find_format_store.hpp b/contrib/src/boost/algorithm/string/detail/find_format_store.hpp index 89d2ba4..b9f4a88 100644 --- a/contrib/src/boost/algorithm/string/detail/find_format_store.hpp +++ b/contrib/src/boost/algorithm/string/detail/find_format_store.hpp @@ -1,89 +1,89 @@ -// Boost string_algo library find_format_store.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2003. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP -#define BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP - -#include -#include - -namespace boost { - namespace algorithm { - namespace detail { - -// temporary format and find result storage --------------------------------// - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - template< - typename ForwardIteratorT, - typename FormatterT, - typename FormatResultT > - class find_format_store : - public iterator_range - { - public: - // typedefs - typedef iterator_range base_type; - typedef FormatterT formatter_type; - typedef FormatResultT format_result_type; - - public: - // Construction - find_format_store( - const base_type& FindResult, - const format_result_type& FormatResult, - const formatter_type& Formatter ) : - base_type(FindResult), - m_FormatResult(FormatResult), - m_Formatter(Formatter) {} - - // Assignment - template< typename FindResultT > - find_format_store& operator=( FindResultT FindResult ) - { - iterator_range::operator=(FindResult); - if( !this->empty() ) { - m_FormatResult=m_Formatter(FindResult); - } - - return *this; - } - - // Retrieve format result - const format_result_type& format_result() - { - return m_FormatResult; - } - - private: - format_result_type m_FormatResult; - const formatter_type& m_Formatter; - }; - - template - bool check_find_result(InputT&, FindResultT& FindResult) - { - typedef BOOST_STRING_TYPENAME - range_const_iterator::type input_iterator_type; - iterator_range ResultRange(FindResult); - return !ResultRange.empty(); - } - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - } // namespace detail - } // namespace algorithm -} // namespace boost - -#endif // BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP +// Boost string_algo library find_format_store.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP +#define BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP + +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// temporary format and find result storage --------------------------------// + +#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) +#pragma warning(push) +#pragma warning(disable:4512) //assignment operator could not be generated +#endif + template< + typename ForwardIteratorT, + typename FormatterT, + typename FormatResultT > + class find_format_store : + public iterator_range + { + public: + // typedefs + typedef iterator_range base_type; + typedef FormatterT formatter_type; + typedef FormatResultT format_result_type; + + public: + // Construction + find_format_store( + const base_type& FindResult, + const format_result_type& FormatResult, + const formatter_type& Formatter ) : + base_type(FindResult), + m_FormatResult(FormatResult), + m_Formatter(Formatter) {} + + // Assignment + template< typename FindResultT > + find_format_store& operator=( FindResultT FindResult ) + { + iterator_range::operator=(FindResult); + if( !this->empty() ) { + m_FormatResult=m_Formatter(FindResult); + } + + return *this; + } + + // Retrieve format result + const format_result_type& format_result() + { + return m_FormatResult; + } + + private: + format_result_type m_FormatResult; + const formatter_type& m_Formatter; + }; + + template + bool check_find_result(InputT&, FindResultT& FindResult) + { + typedef BOOST_STRING_TYPENAME + range_const_iterator::type input_iterator_type; + iterator_range ResultRange(FindResult); + return !ResultRange.empty(); + } + +#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) +#pragma warning(pop) +#endif + } // namespace detail + } // namespace algorithm +} // namespace boost + +#endif // BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP diff --git a/contrib/src/boost/algorithm/string/detail/find_iterator.hpp b/contrib/src/boost/algorithm/string/detail/find_iterator.hpp index 505f290..9b78a0f 100644 --- a/contrib/src/boost/algorithm/string/detail/find_iterator.hpp +++ b/contrib/src/boost/algorithm/string/detail/find_iterator.hpp @@ -1,87 +1,87 @@ -// Boost string_algo library find_iterator.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2003. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_FIND_ITERATOR_DETAIL_HPP -#define BOOST_STRING_FIND_ITERATOR_DETAIL_HPP - -#include -#include -#include -#include -#include - -namespace boost { - namespace algorithm { - namespace detail { - -// find_iterator base -----------------------------------------------// - - // Find iterator base - template - class find_iterator_base - { - protected: - // typedefs - typedef IteratorT input_iterator_type; - typedef iterator_range match_type; - typedef function2< - match_type, - input_iterator_type, - input_iterator_type> finder_type; - - protected: - // Protected construction/destruction - - // Default constructor - find_iterator_base() {}; - // Copy construction - find_iterator_base( const find_iterator_base& Other ) : - m_Finder(Other.m_Finder) {} - - // Constructor - template - find_iterator_base( FinderT Finder, int ) : - m_Finder(Finder) {} - - // Destructor - ~find_iterator_base() {} - - // Find operation - match_type do_find( - input_iterator_type Begin, - input_iterator_type End ) const - { - if (!m_Finder.empty()) - { - return m_Finder(Begin,End); - } - else - { - return match_type(End,End); - } - } - - // Check - bool is_null() const - { - return m_Finder.empty(); - } - - private: - // Finder - finder_type m_Finder; - }; - - } // namespace detail - } // namespace algorithm -} // namespace boost - - -#endif // BOOST_STRING_FIND_ITERATOR_DETAIL_HPP +// Boost string_algo library find_iterator.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FIND_ITERATOR_DETAIL_HPP +#define BOOST_STRING_FIND_ITERATOR_DETAIL_HPP + +#include +#include +#include +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// find_iterator base -----------------------------------------------// + + // Find iterator base + template + class find_iterator_base + { + protected: + // typedefs + typedef IteratorT input_iterator_type; + typedef iterator_range match_type; + typedef function2< + match_type, + input_iterator_type, + input_iterator_type> finder_type; + + protected: + // Protected construction/destruction + + // Default constructor + find_iterator_base() {}; + // Copy construction + find_iterator_base( const find_iterator_base& Other ) : + m_Finder(Other.m_Finder) {} + + // Constructor + template + find_iterator_base( FinderT Finder, int ) : + m_Finder(Finder) {} + + // Destructor + ~find_iterator_base() {} + + // Find operation + match_type do_find( + input_iterator_type Begin, + input_iterator_type End ) const + { + if (!m_Finder.empty()) + { + return m_Finder(Begin,End); + } + else + { + return match_type(End,End); + } + } + + // Check + bool is_null() const + { + return m_Finder.empty(); + } + + private: + // Finder + finder_type m_Finder; + }; + + } // namespace detail + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_FIND_ITERATOR_DETAIL_HPP diff --git a/contrib/src/boost/algorithm/string/detail/finder.hpp b/contrib/src/boost/algorithm/string/detail/finder.hpp index 5bf36a9..a2a9582 100644 --- a/contrib/src/boost/algorithm/string/detail/finder.hpp +++ b/contrib/src/boost/algorithm/string/detail/finder.hpp @@ -1,639 +1,639 @@ -// Boost string_algo library finder.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2006. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_FINDER_DETAIL_HPP -#define BOOST_STRING_FINDER_DETAIL_HPP - -#include -#include -#include - -#include -#include -#include -#include -#include - -namespace boost { - namespace algorithm { - namespace detail { - - -// find first functor -----------------------------------------------// - - // find a subsequence in the sequence ( functor ) - /* - Returns a pair marking the subsequence in the sequence. - If the find fails, functor returns - */ - template - struct first_finderF - { - typedef SearchIteratorT search_iterator_type; - - // Construction - template< typename SearchT > - first_finderF( const SearchT& Search, PredicateT Comp ) : - m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {} - first_finderF( - search_iterator_type SearchBegin, - search_iterator_type SearchEnd, - PredicateT Comp ) : - m_Search(SearchBegin, SearchEnd), m_Comp(Comp) {} - - // Operation - template< typename ForwardIteratorT > - iterator_range - operator()( - ForwardIteratorT Begin, - ForwardIteratorT End ) const - { - typedef iterator_range result_type; - typedef ForwardIteratorT input_iterator_type; - - // Outer loop - for(input_iterator_type OuterIt=Begin; - OuterIt!=End; - ++OuterIt) - { - // Sanity check - if( boost::empty(m_Search) ) - return result_type( End, End ); - - input_iterator_type InnerIt=OuterIt; - search_iterator_type SubstrIt=m_Search.begin(); - for(; - InnerIt!=End && SubstrIt!=m_Search.end(); - ++InnerIt,++SubstrIt) - { - if( !( m_Comp(*InnerIt,*SubstrIt) ) ) - break; - } - - // Substring matching succeeded - if ( SubstrIt==m_Search.end() ) - return result_type( OuterIt, InnerIt ); - } - - return result_type( End, End ); - } - - private: - iterator_range m_Search; - PredicateT m_Comp; - }; - -// find last functor -----------------------------------------------// - - // find the last match a subsequence in the sequence ( functor ) - /* - Returns a pair marking the subsequence in the sequence. - If the find fails, returns - */ - template - struct last_finderF - { - typedef SearchIteratorT search_iterator_type; - typedef first_finderF< - search_iterator_type, - PredicateT> first_finder_type; - - // Construction - template< typename SearchT > - last_finderF( const SearchT& Search, PredicateT Comp ) : - m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {} - last_finderF( - search_iterator_type SearchBegin, - search_iterator_type SearchEnd, - PredicateT Comp ) : - m_Search(SearchBegin, SearchEnd), m_Comp(Comp) {} - - // Operation - template< typename ForwardIteratorT > - iterator_range - operator()( - ForwardIteratorT Begin, - ForwardIteratorT End ) const - { - typedef iterator_range result_type; - - if( boost::empty(m_Search) ) - return result_type( End, End ); - - typedef BOOST_STRING_TYPENAME boost::detail:: - iterator_traits::iterator_category category; - - return findit( Begin, End, category() ); - } - - private: - // forward iterator - template< typename ForwardIteratorT > - iterator_range - findit( - ForwardIteratorT Begin, - ForwardIteratorT End, - std::forward_iterator_tag ) const - { - typedef iterator_range result_type; - - first_finder_type first_finder( - m_Search.begin(), m_Search.end(), m_Comp ); - - result_type M=first_finder( Begin, End ); - result_type Last=M; - - while( M ) - { - Last=M; - M=first_finder( ::boost::end(M), End ); - } - - return Last; - } - - // bidirectional iterator - template< typename ForwardIteratorT > - iterator_range - findit( - ForwardIteratorT Begin, - ForwardIteratorT End, - std::bidirectional_iterator_tag ) const - { - typedef iterator_range result_type; - typedef ForwardIteratorT input_iterator_type; - - // Outer loop - for(input_iterator_type OuterIt=End; - OuterIt!=Begin; ) - { - input_iterator_type OuterIt2=--OuterIt; - - input_iterator_type InnerIt=OuterIt2; - search_iterator_type SubstrIt=m_Search.begin(); - for(; - InnerIt!=End && SubstrIt!=m_Search.end(); - ++InnerIt,++SubstrIt) - { - if( !( m_Comp(*InnerIt,*SubstrIt) ) ) - break; - } - - // Substring matching succeeded - if( SubstrIt==m_Search.end() ) - return result_type( OuterIt2, InnerIt ); - } - - return result_type( End, End ); - } - - private: - iterator_range m_Search; - PredicateT m_Comp; - }; - -// find n-th functor -----------------------------------------------// - - // find the n-th match of a subsequence in the sequence ( functor ) - /* - Returns a pair marking the subsequence in the sequence. - If the find fails, returns - */ - template - struct nth_finderF - { - typedef SearchIteratorT search_iterator_type; - typedef first_finderF< - search_iterator_type, - PredicateT> first_finder_type; - typedef last_finderF< - search_iterator_type, - PredicateT> last_finder_type; - - // Construction - template< typename SearchT > - nth_finderF( - const SearchT& Search, - int Nth, - PredicateT Comp) : - m_Search(::boost::begin(Search), ::boost::end(Search)), - m_Nth(Nth), - m_Comp(Comp) {} - nth_finderF( - search_iterator_type SearchBegin, - search_iterator_type SearchEnd, - int Nth, - PredicateT Comp) : - m_Search(SearchBegin, SearchEnd), - m_Nth(Nth), - m_Comp(Comp) {} - - // Operation - template< typename ForwardIteratorT > - iterator_range - operator()( - ForwardIteratorT Begin, - ForwardIteratorT End ) const - { - if(m_Nth>=0) - { - return find_forward(Begin, End, m_Nth); - } - else - { - return find_backward(Begin, End, -m_Nth); - } - - } - - private: - // Implementation helpers - template< typename ForwardIteratorT > - iterator_range - find_forward( - ForwardIteratorT Begin, - ForwardIteratorT End, - unsigned int N) const - { - typedef iterator_range result_type; - - // Sanity check - if( boost::empty(m_Search) ) - return result_type( End, End ); - - // Instantiate find functor - first_finder_type first_finder( - m_Search.begin(), m_Search.end(), m_Comp ); - - result_type M( Begin, Begin ); - - for( unsigned int n=0; n<=N; ++n ) - { - // find next match - M=first_finder( ::boost::end(M), End ); - - if ( !M ) - { - // Subsequence not found, return - return M; - } - } - - return M; - } - - template< typename ForwardIteratorT > - iterator_range - find_backward( - ForwardIteratorT Begin, - ForwardIteratorT End, - unsigned int N) const - { - typedef iterator_range result_type; - - // Sanity check - if( boost::empty(m_Search) ) - return result_type( End, End ); - - // Instantiate find functor - last_finder_type last_finder( - m_Search.begin(), m_Search.end(), m_Comp ); - - result_type M( End, End ); - - for( unsigned int n=1; n<=N; ++n ) - { - // find next match - M=last_finder( Begin, ::boost::begin(M) ); - - if ( !M ) - { - // Subsequence not found, return - return M; - } - } - - return M; - } - - - private: - iterator_range m_Search; - int m_Nth; - PredicateT m_Comp; - }; - -// find head/tail implementation helpers ---------------------------// - - template - iterator_range - find_head_impl( - ForwardIteratorT Begin, - ForwardIteratorT End, - unsigned int N, - std::forward_iterator_tag ) - { - typedef ForwardIteratorT input_iterator_type; - typedef iterator_range result_type; - - input_iterator_type It=Begin; - for( - unsigned int Index=0; - Index - iterator_range - find_head_impl( - ForwardIteratorT Begin, - ForwardIteratorT End, - unsigned int N, - std::random_access_iterator_tag ) - { - typedef iterator_range result_type; - - if ( (End<=Begin) || ( static_cast(End-Begin) < N ) ) - return result_type( Begin, End ); - - return result_type(Begin,Begin+N); - } - - // Find head implementation - template - iterator_range - find_head_impl( - ForwardIteratorT Begin, - ForwardIteratorT End, - unsigned int N ) - { - typedef BOOST_STRING_TYPENAME boost::detail:: - iterator_traits::iterator_category category; - - return ::boost::algorithm::detail::find_head_impl( Begin, End, N, category() ); - } - - template< typename ForwardIteratorT > - iterator_range - find_tail_impl( - ForwardIteratorT Begin, - ForwardIteratorT End, - unsigned int N, - std::forward_iterator_tag ) - { - typedef ForwardIteratorT input_iterator_type; - typedef iterator_range result_type; - - unsigned int Index=0; - input_iterator_type It=Begin; - input_iterator_type It2=Begin; - - // Advance It2 by N increments - for( Index=0; Index - iterator_range - find_tail_impl( - ForwardIteratorT Begin, - ForwardIteratorT End, - unsigned int N, - std::bidirectional_iterator_tag ) - { - typedef ForwardIteratorT input_iterator_type; - typedef iterator_range result_type; - - input_iterator_type It=End; - for( - unsigned int Index=0; - Index - iterator_range - find_tail_impl( - ForwardIteratorT Begin, - ForwardIteratorT End, - unsigned int N, - std::random_access_iterator_tag ) - { - typedef iterator_range result_type; - - if ( (End<=Begin) || ( static_cast(End-Begin) < N ) ) - return result_type( Begin, End ); - - return result_type( End-N, End ); - } - - // Operation - template< typename ForwardIteratorT > - iterator_range - find_tail_impl( - ForwardIteratorT Begin, - ForwardIteratorT End, - unsigned int N ) - { - typedef BOOST_STRING_TYPENAME boost::detail:: - iterator_traits::iterator_category category; - - return ::boost::algorithm::detail::find_tail_impl( Begin, End, N, category() ); - } - - - -// find head functor -----------------------------------------------// - - - // find a head in the sequence ( functor ) - /* - This functor find a head of the specified range. For - a specified N, the head is a subsequence of N starting - elements of the range. - */ - struct head_finderF - { - // Construction - head_finderF( int N ) : m_N(N) {} - - // Operation - template< typename ForwardIteratorT > - iterator_range - operator()( - ForwardIteratorT Begin, - ForwardIteratorT End ) const - { - if(m_N>=0) - { - return ::boost::algorithm::detail::find_head_impl( Begin, End, m_N ); - } - else - { - iterator_range Res= - ::boost::algorithm::detail::find_tail_impl( Begin, End, -m_N ); - - return ::boost::make_iterator_range(Begin, Res.begin()); - } - } - - private: - int m_N; - }; - -// find tail functor -----------------------------------------------// - - - // find a tail in the sequence ( functor ) - /* - This functor find a tail of the specified range. For - a specified N, the head is a subsequence of N starting - elements of the range. - */ - struct tail_finderF - { - // Construction - tail_finderF( int N ) : m_N(N) {} - - // Operation - template< typename ForwardIteratorT > - iterator_range - operator()( - ForwardIteratorT Begin, - ForwardIteratorT End ) const - { - if(m_N>=0) - { - return ::boost::algorithm::detail::find_tail_impl( Begin, End, m_N ); - } - else - { - iterator_range Res= - ::boost::algorithm::detail::find_head_impl( Begin, End, -m_N ); - - return ::boost::make_iterator_range(Res.end(), End); - } - } - - private: - int m_N; - }; - -// find token functor -----------------------------------------------// - - // find a token in a sequence ( functor ) - /* - This find functor finds a token specified be a predicate - in a sequence. It is equivalent of std::find algorithm, - with an exception that it return range instead of a single - iterator. - - If bCompress is set to true, adjacent matching tokens are - concatenated into one match. - */ - template< typename PredicateT > - struct token_finderF - { - // Construction - token_finderF( - PredicateT Pred, - token_compress_mode_type eCompress=token_compress_off ) : - m_Pred(Pred), m_eCompress(eCompress) {} - - // Operation - template< typename ForwardIteratorT > - iterator_range - operator()( - ForwardIteratorT Begin, - ForwardIteratorT End ) const - { - typedef iterator_range result_type; - - ForwardIteratorT It=std::find_if( Begin, End, m_Pred ); - - if( It==End ) - { - return result_type( End, End ); - } - else - { - ForwardIteratorT It2=It; - - if( m_eCompress==token_compress_on ) - { - // Find first non-matching character - while( It2!=End && m_Pred(*It2) ) ++It2; - } - else - { - // Advance by one position - ++It2; - } - - return result_type( It, It2 ); - } - } - - private: - PredicateT m_Pred; - token_compress_mode_type m_eCompress; - }; - -// find range functor -----------------------------------------------// - - // find a range in the sequence ( functor ) - /* - This functor actually does not perform any find operation. - It always returns given iterator range as a result. - */ - template - struct range_finderF - { - typedef ForwardIterator1T input_iterator_type; - typedef iterator_range result_type; - - // Construction - range_finderF( - input_iterator_type Begin, - input_iterator_type End ) : m_Range(Begin, End) {} - - range_finderF(const iterator_range& Range) : - m_Range(Range) {} - - // Operation - template< typename ForwardIterator2T > - iterator_range - operator()( - ForwardIterator2T, - ForwardIterator2T ) const - { -#if BOOST_WORKAROUND( __MWERKS__, <= 0x3003 ) - return iterator_range(this->m_Range); -#else - return m_Range; -#endif - } - - private: - iterator_range m_Range; - }; - - - } // namespace detail - } // namespace algorithm -} // namespace boost - -#endif // BOOST_STRING_FINDER_DETAIL_HPP +// Boost string_algo library finder.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2006. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FINDER_DETAIL_HPP +#define BOOST_STRING_FINDER_DETAIL_HPP + +#include +#include +#include + +#include +#include +#include +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + + +// find first functor -----------------------------------------------// + + // find a subsequence in the sequence ( functor ) + /* + Returns a pair marking the subsequence in the sequence. + If the find fails, functor returns + */ + template + struct first_finderF + { + typedef SearchIteratorT search_iterator_type; + + // Construction + template< typename SearchT > + first_finderF( const SearchT& Search, PredicateT Comp ) : + m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {} + first_finderF( + search_iterator_type SearchBegin, + search_iterator_type SearchEnd, + PredicateT Comp ) : + m_Search(SearchBegin, SearchEnd), m_Comp(Comp) {} + + // Operation + template< typename ForwardIteratorT > + iterator_range + operator()( + ForwardIteratorT Begin, + ForwardIteratorT End ) const + { + typedef iterator_range result_type; + typedef ForwardIteratorT input_iterator_type; + + // Outer loop + for(input_iterator_type OuterIt=Begin; + OuterIt!=End; + ++OuterIt) + { + // Sanity check + if( boost::empty(m_Search) ) + return result_type( End, End ); + + input_iterator_type InnerIt=OuterIt; + search_iterator_type SubstrIt=m_Search.begin(); + for(; + InnerIt!=End && SubstrIt!=m_Search.end(); + ++InnerIt,++SubstrIt) + { + if( !( m_Comp(*InnerIt,*SubstrIt) ) ) + break; + } + + // Substring matching succeeded + if ( SubstrIt==m_Search.end() ) + return result_type( OuterIt, InnerIt ); + } + + return result_type( End, End ); + } + + private: + iterator_range m_Search; + PredicateT m_Comp; + }; + +// find last functor -----------------------------------------------// + + // find the last match a subsequence in the sequence ( functor ) + /* + Returns a pair marking the subsequence in the sequence. + If the find fails, returns + */ + template + struct last_finderF + { + typedef SearchIteratorT search_iterator_type; + typedef first_finderF< + search_iterator_type, + PredicateT> first_finder_type; + + // Construction + template< typename SearchT > + last_finderF( const SearchT& Search, PredicateT Comp ) : + m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {} + last_finderF( + search_iterator_type SearchBegin, + search_iterator_type SearchEnd, + PredicateT Comp ) : + m_Search(SearchBegin, SearchEnd), m_Comp(Comp) {} + + // Operation + template< typename ForwardIteratorT > + iterator_range + operator()( + ForwardIteratorT Begin, + ForwardIteratorT End ) const + { + typedef iterator_range result_type; + + if( boost::empty(m_Search) ) + return result_type( End, End ); + + typedef BOOST_STRING_TYPENAME boost::detail:: + iterator_traits::iterator_category category; + + return findit( Begin, End, category() ); + } + + private: + // forward iterator + template< typename ForwardIteratorT > + iterator_range + findit( + ForwardIteratorT Begin, + ForwardIteratorT End, + std::forward_iterator_tag ) const + { + typedef iterator_range result_type; + + first_finder_type first_finder( + m_Search.begin(), m_Search.end(), m_Comp ); + + result_type M=first_finder( Begin, End ); + result_type Last=M; + + while( M ) + { + Last=M; + M=first_finder( ::boost::end(M), End ); + } + + return Last; + } + + // bidirectional iterator + template< typename ForwardIteratorT > + iterator_range + findit( + ForwardIteratorT Begin, + ForwardIteratorT End, + std::bidirectional_iterator_tag ) const + { + typedef iterator_range result_type; + typedef ForwardIteratorT input_iterator_type; + + // Outer loop + for(input_iterator_type OuterIt=End; + OuterIt!=Begin; ) + { + input_iterator_type OuterIt2=--OuterIt; + + input_iterator_type InnerIt=OuterIt2; + search_iterator_type SubstrIt=m_Search.begin(); + for(; + InnerIt!=End && SubstrIt!=m_Search.end(); + ++InnerIt,++SubstrIt) + { + if( !( m_Comp(*InnerIt,*SubstrIt) ) ) + break; + } + + // Substring matching succeeded + if( SubstrIt==m_Search.end() ) + return result_type( OuterIt2, InnerIt ); + } + + return result_type( End, End ); + } + + private: + iterator_range m_Search; + PredicateT m_Comp; + }; + +// find n-th functor -----------------------------------------------// + + // find the n-th match of a subsequence in the sequence ( functor ) + /* + Returns a pair marking the subsequence in the sequence. + If the find fails, returns + */ + template + struct nth_finderF + { + typedef SearchIteratorT search_iterator_type; + typedef first_finderF< + search_iterator_type, + PredicateT> first_finder_type; + typedef last_finderF< + search_iterator_type, + PredicateT> last_finder_type; + + // Construction + template< typename SearchT > + nth_finderF( + const SearchT& Search, + int Nth, + PredicateT Comp) : + m_Search(::boost::begin(Search), ::boost::end(Search)), + m_Nth(Nth), + m_Comp(Comp) {} + nth_finderF( + search_iterator_type SearchBegin, + search_iterator_type SearchEnd, + int Nth, + PredicateT Comp) : + m_Search(SearchBegin, SearchEnd), + m_Nth(Nth), + m_Comp(Comp) {} + + // Operation + template< typename ForwardIteratorT > + iterator_range + operator()( + ForwardIteratorT Begin, + ForwardIteratorT End ) const + { + if(m_Nth>=0) + { + return find_forward(Begin, End, m_Nth); + } + else + { + return find_backward(Begin, End, -m_Nth); + } + + } + + private: + // Implementation helpers + template< typename ForwardIteratorT > + iterator_range + find_forward( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N) const + { + typedef iterator_range result_type; + + // Sanity check + if( boost::empty(m_Search) ) + return result_type( End, End ); + + // Instantiate find functor + first_finder_type first_finder( + m_Search.begin(), m_Search.end(), m_Comp ); + + result_type M( Begin, Begin ); + + for( unsigned int n=0; n<=N; ++n ) + { + // find next match + M=first_finder( ::boost::end(M), End ); + + if ( !M ) + { + // Subsequence not found, return + return M; + } + } + + return M; + } + + template< typename ForwardIteratorT > + iterator_range + find_backward( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N) const + { + typedef iterator_range result_type; + + // Sanity check + if( boost::empty(m_Search) ) + return result_type( End, End ); + + // Instantiate find functor + last_finder_type last_finder( + m_Search.begin(), m_Search.end(), m_Comp ); + + result_type M( End, End ); + + for( unsigned int n=1; n<=N; ++n ) + { + // find next match + M=last_finder( Begin, ::boost::begin(M) ); + + if ( !M ) + { + // Subsequence not found, return + return M; + } + } + + return M; + } + + + private: + iterator_range m_Search; + int m_Nth; + PredicateT m_Comp; + }; + +// find head/tail implementation helpers ---------------------------// + + template + iterator_range + find_head_impl( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N, + std::forward_iterator_tag ) + { + typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + input_iterator_type It=Begin; + for( + unsigned int Index=0; + Index + iterator_range + find_head_impl( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N, + std::random_access_iterator_tag ) + { + typedef iterator_range result_type; + + if ( (End<=Begin) || ( static_cast(End-Begin) < N ) ) + return result_type( Begin, End ); + + return result_type(Begin,Begin+N); + } + + // Find head implementation + template + iterator_range + find_head_impl( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N ) + { + typedef BOOST_STRING_TYPENAME boost::detail:: + iterator_traits::iterator_category category; + + return ::boost::algorithm::detail::find_head_impl( Begin, End, N, category() ); + } + + template< typename ForwardIteratorT > + iterator_range + find_tail_impl( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N, + std::forward_iterator_tag ) + { + typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + unsigned int Index=0; + input_iterator_type It=Begin; + input_iterator_type It2=Begin; + + // Advance It2 by N increments + for( Index=0; Index + iterator_range + find_tail_impl( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N, + std::bidirectional_iterator_tag ) + { + typedef ForwardIteratorT input_iterator_type; + typedef iterator_range result_type; + + input_iterator_type It=End; + for( + unsigned int Index=0; + Index + iterator_range + find_tail_impl( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N, + std::random_access_iterator_tag ) + { + typedef iterator_range result_type; + + if ( (End<=Begin) || ( static_cast(End-Begin) < N ) ) + return result_type( Begin, End ); + + return result_type( End-N, End ); + } + + // Operation + template< typename ForwardIteratorT > + iterator_range + find_tail_impl( + ForwardIteratorT Begin, + ForwardIteratorT End, + unsigned int N ) + { + typedef BOOST_STRING_TYPENAME boost::detail:: + iterator_traits::iterator_category category; + + return ::boost::algorithm::detail::find_tail_impl( Begin, End, N, category() ); + } + + + +// find head functor -----------------------------------------------// + + + // find a head in the sequence ( functor ) + /* + This functor find a head of the specified range. For + a specified N, the head is a subsequence of N starting + elements of the range. + */ + struct head_finderF + { + // Construction + head_finderF( int N ) : m_N(N) {} + + // Operation + template< typename ForwardIteratorT > + iterator_range + operator()( + ForwardIteratorT Begin, + ForwardIteratorT End ) const + { + if(m_N>=0) + { + return ::boost::algorithm::detail::find_head_impl( Begin, End, m_N ); + } + else + { + iterator_range Res= + ::boost::algorithm::detail::find_tail_impl( Begin, End, -m_N ); + + return ::boost::make_iterator_range(Begin, Res.begin()); + } + } + + private: + int m_N; + }; + +// find tail functor -----------------------------------------------// + + + // find a tail in the sequence ( functor ) + /* + This functor find a tail of the specified range. For + a specified N, the head is a subsequence of N starting + elements of the range. + */ + struct tail_finderF + { + // Construction + tail_finderF( int N ) : m_N(N) {} + + // Operation + template< typename ForwardIteratorT > + iterator_range + operator()( + ForwardIteratorT Begin, + ForwardIteratorT End ) const + { + if(m_N>=0) + { + return ::boost::algorithm::detail::find_tail_impl( Begin, End, m_N ); + } + else + { + iterator_range Res= + ::boost::algorithm::detail::find_head_impl( Begin, End, -m_N ); + + return ::boost::make_iterator_range(Res.end(), End); + } + } + + private: + int m_N; + }; + +// find token functor -----------------------------------------------// + + // find a token in a sequence ( functor ) + /* + This find functor finds a token specified be a predicate + in a sequence. It is equivalent of std::find algorithm, + with an exception that it return range instead of a single + iterator. + + If bCompress is set to true, adjacent matching tokens are + concatenated into one match. + */ + template< typename PredicateT > + struct token_finderF + { + // Construction + token_finderF( + PredicateT Pred, + token_compress_mode_type eCompress=token_compress_off ) : + m_Pred(Pred), m_eCompress(eCompress) {} + + // Operation + template< typename ForwardIteratorT > + iterator_range + operator()( + ForwardIteratorT Begin, + ForwardIteratorT End ) const + { + typedef iterator_range result_type; + + ForwardIteratorT It=std::find_if( Begin, End, m_Pred ); + + if( It==End ) + { + return result_type( End, End ); + } + else + { + ForwardIteratorT It2=It; + + if( m_eCompress==token_compress_on ) + { + // Find first non-matching character + while( It2!=End && m_Pred(*It2) ) ++It2; + } + else + { + // Advance by one position + ++It2; + } + + return result_type( It, It2 ); + } + } + + private: + PredicateT m_Pred; + token_compress_mode_type m_eCompress; + }; + +// find range functor -----------------------------------------------// + + // find a range in the sequence ( functor ) + /* + This functor actually does not perform any find operation. + It always returns given iterator range as a result. + */ + template + struct range_finderF + { + typedef ForwardIterator1T input_iterator_type; + typedef iterator_range result_type; + + // Construction + range_finderF( + input_iterator_type Begin, + input_iterator_type End ) : m_Range(Begin, End) {} + + range_finderF(const iterator_range& Range) : + m_Range(Range) {} + + // Operation + template< typename ForwardIterator2T > + iterator_range + operator()( + ForwardIterator2T, + ForwardIterator2T ) const + { +#if BOOST_WORKAROUND( __MWERKS__, <= 0x3003 ) + return iterator_range(this->m_Range); +#else + return m_Range; +#endif + } + + private: + iterator_range m_Range; + }; + + + } // namespace detail + } // namespace algorithm +} // namespace boost + +#endif // BOOST_STRING_FINDER_DETAIL_HPP diff --git a/contrib/src/boost/algorithm/string/detail/formatter.hpp b/contrib/src/boost/algorithm/string/detail/formatter.hpp index 9fd16e2..c071822 100644 --- a/contrib/src/boost/algorithm/string/detail/formatter.hpp +++ b/contrib/src/boost/algorithm/string/detail/formatter.hpp @@ -1,119 +1,119 @@ -// Boost string_algo library formatter.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2003. -// -// 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) - -// See http://www.boost.org for updates, documentation, and revision history. - -#ifndef BOOST_STRING_FORMATTER_DETAIL_HPP -#define BOOST_STRING_FORMATTER_DETAIL_HPP - - -#include -#include -#include -#include - -#include - -// generic replace functors -----------------------------------------------// - -namespace boost { - namespace algorithm { - namespace detail { - -// const format functor ----------------------------------------------------// - - // constant format functor - template - struct const_formatF - { - private: - typedef BOOST_STRING_TYPENAME - range_const_iterator::type format_iterator; - typedef iterator_range result_type; - - public: - // Construction - const_formatF(const RangeT& Format) : - m_Format(::boost::begin(Format), ::boost::end(Format)) {} - - // Operation -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) - template - result_type& operator()(const Range2T&) - { - return m_Format; - } -#endif - - template - const result_type& operator()(const Range2T&) const - { - return m_Format; - } - - private: - result_type m_Format; - }; - -// identity format functor ----------------------------------------------------// - - // identity format functor - template - struct identity_formatF - { - // Operation - template< typename Range2T > - const RangeT& operator()(const Range2T& Replace) const - { - return RangeT(::boost::begin(Replace), ::boost::end(Replace)); - } - }; - -// empty format functor ( used by erase ) ------------------------------------// - - // empty format functor - template< typename CharT > - struct empty_formatF - { - template< typename ReplaceT > - empty_container operator()(const ReplaceT&) const - { - return empty_container(); - } - }; - -// dissect format functor ----------------------------------------------------// - - // dissect format functor - template - struct dissect_formatF - { - public: - // Construction - dissect_formatF(FinderT Finder) : - m_Finder(Finder) {} - - // Operation - template - inline iterator_range< - BOOST_STRING_TYPENAME range_const_iterator::type> - operator()(const RangeT& Replace) const - { - return m_Finder(::boost::begin(Replace), ::boost::end(Replace)); - } - - private: - FinderT m_Finder; - }; - - - } // namespace detail - } // namespace algorithm -} // namespace boost - -#endif // BOOST_STRING_FORMATTER_DETAIL_HPP +// Boost string_algo library formatter.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// 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) + +// See http://www.boost.org for updates, documentation, and revision history. + +#ifndef BOOST_STRING_FORMATTER_DETAIL_HPP +#define BOOST_STRING_FORMATTER_DETAIL_HPP + + +#include +#include +#include +#include + +#include + +// generic replace functors -----------------------------------------------// + +namespace boost { + namespace algorithm { + namespace detail { + +// const format functor ----------------------------------------------------// + + // constant format functor + template + struct const_formatF + { + private: + typedef BOOST_STRING_TYPENAME + range_const_iterator::type format_iterator; + typedef iterator_range result_type; + + public: + // Construction + const_formatF(const RangeT& Format) : + m_Format(::boost::begin(Format), ::boost::end(Format)) {} + + // Operation +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + template + result_type& operator()(const Range2T&) + { + return m_Format; + } +#endif + + template + const result_type& operator()(const Range2T&) const + { + return m_Format; + } + + private: + result_type m_Format; + }; + +// identity format functor ----------------------------------------------------// + + // identity format functor + template + struct identity_formatF + { + // Operation + template< typename Range2T > + const RangeT& operator()(const Range2T& Replace) const + { + return RangeT(::boost::begin(Replace), ::boost::end(Replace)); + } + }; + +// empty format functor ( used by erase ) ------------------------------------// + + // empty format functor + template< typename CharT > + struct empty_formatF + { + template< typename ReplaceT > + empty_container operator()(const ReplaceT&) const + { + return empty_container(); + } + }; + +// dissect format functor ----------------------------------------------------// + + // dissect format functor + template + struct dissect_formatF + { + public: + // Construction + dissect_formatF(FinderT Finder) : + m_Finder(Finder) {} + + // Operation + template + inline iterator_range< + BOOST_STRING_TYPENAME range_const_iterator::type> + operator()(const RangeT& Replace) const + { + return m_Finder(::boost::begin(Replace), ::boost::end(Replace)); + } + + private: + FinderT m_Finder; + }; + + + } // namespace detail + } // namespace algorithm +} // namespace boost + +#endif // BOOST_STRING_FORMATTER_DETAIL_HPP diff --git a/contrib/src/boost/algorithm/string/detail/predicate.hpp b/contrib/src/boost/algorithm/string/detail/predicate.hpp index bd95d40..5acf3cc 100644 --- a/contrib/src/boost/algorithm/string/detail/predicate.hpp +++ b/contrib/src/boost/algorithm/string/detail/predicate.hpp @@ -1,77 +1,77 @@ -// Boost string_algo library predicate.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2003. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_PREDICATE_DETAIL_HPP -#define BOOST_STRING_PREDICATE_DETAIL_HPP - -#include -#include - -namespace boost { - namespace algorithm { - namespace detail { - -// ends_with predicate implementation ----------------------------------// - - template< - typename ForwardIterator1T, - typename ForwardIterator2T, - typename PredicateT> - inline bool ends_with_iter_select( - ForwardIterator1T Begin, - ForwardIterator1T End, - ForwardIterator2T SubBegin, - ForwardIterator2T SubEnd, - PredicateT Comp, - std::bidirectional_iterator_tag) - { - ForwardIterator1T it=End; - ForwardIterator2T pit=SubEnd; - for(;it!=Begin && pit!=SubBegin;) - { - if( !(Comp(*(--it),*(--pit))) ) - return false; - } - - return pit==SubBegin; - } - - template< - typename ForwardIterator1T, - typename ForwardIterator2T, - typename PredicateT> - inline bool ends_with_iter_select( - ForwardIterator1T Begin, - ForwardIterator1T End, - ForwardIterator2T SubBegin, - ForwardIterator2T SubEnd, - PredicateT Comp, - std::forward_iterator_tag) - { - if ( SubBegin==SubEnd ) - { - // empty subsequence check - return true; - } - - iterator_range Result - =last_finder( - ::boost::make_iterator_range(SubBegin, SubEnd), - Comp)(Begin, End); - - return !Result.empty() && Result.end()==End; - } - - } // namespace detail - } // namespace algorithm -} // namespace boost - - -#endif // BOOST_STRING_PREDICATE_DETAIL_HPP +// Boost string_algo library predicate.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_PREDICATE_DETAIL_HPP +#define BOOST_STRING_PREDICATE_DETAIL_HPP + +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// ends_with predicate implementation ----------------------------------// + + template< + typename ForwardIterator1T, + typename ForwardIterator2T, + typename PredicateT> + inline bool ends_with_iter_select( + ForwardIterator1T Begin, + ForwardIterator1T End, + ForwardIterator2T SubBegin, + ForwardIterator2T SubEnd, + PredicateT Comp, + std::bidirectional_iterator_tag) + { + ForwardIterator1T it=End; + ForwardIterator2T pit=SubEnd; + for(;it!=Begin && pit!=SubBegin;) + { + if( !(Comp(*(--it),*(--pit))) ) + return false; + } + + return pit==SubBegin; + } + + template< + typename ForwardIterator1T, + typename ForwardIterator2T, + typename PredicateT> + inline bool ends_with_iter_select( + ForwardIterator1T Begin, + ForwardIterator1T End, + ForwardIterator2T SubBegin, + ForwardIterator2T SubEnd, + PredicateT Comp, + std::forward_iterator_tag) + { + if ( SubBegin==SubEnd ) + { + // empty subsequence check + return true; + } + + iterator_range Result + =last_finder( + ::boost::make_iterator_range(SubBegin, SubEnd), + Comp)(Begin, End); + + return !Result.empty() && Result.end()==End; + } + + } // namespace detail + } // namespace algorithm +} // namespace boost + + +#endif // BOOST_STRING_PREDICATE_DETAIL_HPP diff --git a/contrib/src/boost/algorithm/string/detail/replace_storage.hpp b/contrib/src/boost/algorithm/string/detail/replace_storage.hpp index 13f4e08..db35e4c 100644 --- a/contrib/src/boost/algorithm/string/detail/replace_storage.hpp +++ b/contrib/src/boost/algorithm/string/detail/replace_storage.hpp @@ -1,159 +1,159 @@ -// Boost string_algo library replace_storage.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2003. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP -#define BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP - -#include -#include -#include -#include -#include - -namespace boost { - namespace algorithm { - namespace detail { - -// storage handling routines -----------------------------------------------// - - template< typename StorageT, typename OutputIteratorT > - inline OutputIteratorT move_from_storage( - StorageT& Storage, - OutputIteratorT DestBegin, - OutputIteratorT DestEnd ) - { - OutputIteratorT OutputIt=DestBegin; - - while( !Storage.empty() && OutputIt!=DestEnd ) - { - *OutputIt=Storage.front(); - Storage.pop_front(); - ++OutputIt; - } - - return OutputIt; - } - - template< typename StorageT, typename WhatT > - inline void copy_to_storage( - StorageT& Storage, - const WhatT& What ) - { - Storage.insert( Storage.end(), ::boost::begin(What), ::boost::end(What) ); - } - - -// process segment routine -----------------------------------------------// - - template< bool HasStableIterators > - struct process_segment_helper - { - // Optimized version of process_segment for generic sequence - template< - typename StorageT, - typename InputT, - typename ForwardIteratorT > - ForwardIteratorT operator()( - StorageT& Storage, - InputT& /*Input*/, - ForwardIteratorT InsertIt, - ForwardIteratorT SegmentBegin, - ForwardIteratorT SegmentEnd ) - { - // Copy data from the storage until the beginning of the segment - ForwardIteratorT It=::boost::algorithm::detail::move_from_storage( Storage, InsertIt, SegmentBegin ); - - // 3 cases are possible : - // a) Storage is empty, It==SegmentBegin - // b) Storage is empty, It!=SegmentBegin - // c) Storage is not empty - - if( Storage.empty() ) - { - if( It==SegmentBegin ) - { - // Case a) everything is grand, just return end of segment - return SegmentEnd; - } - else - { - // Case b) move the segment backwards - return std::copy( SegmentBegin, SegmentEnd, It ); - } - } - else - { - // Case c) -> shift the segment to the left and keep the overlap in the storage - while( It!=SegmentEnd ) - { - // Store value into storage - Storage.push_back( *It ); - // Get the top from the storage and put it here - *It=Storage.front(); - Storage.pop_front(); - - // Advance - ++It; - } - - return It; - } - } - }; - - template<> - struct process_segment_helper< true > - { - // Optimized version of process_segment for list-like sequence - template< - typename StorageT, - typename InputT, - typename ForwardIteratorT > - ForwardIteratorT operator()( - StorageT& Storage, - InputT& Input, - ForwardIteratorT InsertIt, - ForwardIteratorT SegmentBegin, - ForwardIteratorT SegmentEnd ) - - { - // Call replace to do the job - ::boost::algorithm::detail::replace( Input, InsertIt, SegmentBegin, Storage ); - // Empty the storage - Storage.clear(); - // Iterators were not changed, simply return the end of segment - return SegmentEnd; - } - }; - - // Process one segment in the replace_all algorithm - template< - typename StorageT, - typename InputT, - typename ForwardIteratorT > - inline ForwardIteratorT process_segment( - StorageT& Storage, - InputT& Input, - ForwardIteratorT InsertIt, - ForwardIteratorT SegmentBegin, - ForwardIteratorT SegmentEnd ) - { - return - process_segment_helper< - has_stable_iterators::value>()( - Storage, Input, InsertIt, SegmentBegin, SegmentEnd ); - } - - - } // namespace detail - } // namespace algorithm -} // namespace boost - -#endif // BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP +// Boost string_algo library replace_storage.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP +#define BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP + +#include +#include +#include +#include +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// storage handling routines -----------------------------------------------// + + template< typename StorageT, typename OutputIteratorT > + inline OutputIteratorT move_from_storage( + StorageT& Storage, + OutputIteratorT DestBegin, + OutputIteratorT DestEnd ) + { + OutputIteratorT OutputIt=DestBegin; + + while( !Storage.empty() && OutputIt!=DestEnd ) + { + *OutputIt=Storage.front(); + Storage.pop_front(); + ++OutputIt; + } + + return OutputIt; + } + + template< typename StorageT, typename WhatT > + inline void copy_to_storage( + StorageT& Storage, + const WhatT& What ) + { + Storage.insert( Storage.end(), ::boost::begin(What), ::boost::end(What) ); + } + + +// process segment routine -----------------------------------------------// + + template< bool HasStableIterators > + struct process_segment_helper + { + // Optimized version of process_segment for generic sequence + template< + typename StorageT, + typename InputT, + typename ForwardIteratorT > + ForwardIteratorT operator()( + StorageT& Storage, + InputT& /*Input*/, + ForwardIteratorT InsertIt, + ForwardIteratorT SegmentBegin, + ForwardIteratorT SegmentEnd ) + { + // Copy data from the storage until the beginning of the segment + ForwardIteratorT It=::boost::algorithm::detail::move_from_storage( Storage, InsertIt, SegmentBegin ); + + // 3 cases are possible : + // a) Storage is empty, It==SegmentBegin + // b) Storage is empty, It!=SegmentBegin + // c) Storage is not empty + + if( Storage.empty() ) + { + if( It==SegmentBegin ) + { + // Case a) everything is grand, just return end of segment + return SegmentEnd; + } + else + { + // Case b) move the segment backwards + return std::copy( SegmentBegin, SegmentEnd, It ); + } + } + else + { + // Case c) -> shift the segment to the left and keep the overlap in the storage + while( It!=SegmentEnd ) + { + // Store value into storage + Storage.push_back( *It ); + // Get the top from the storage and put it here + *It=Storage.front(); + Storage.pop_front(); + + // Advance + ++It; + } + + return It; + } + } + }; + + template<> + struct process_segment_helper< true > + { + // Optimized version of process_segment for list-like sequence + template< + typename StorageT, + typename InputT, + typename ForwardIteratorT > + ForwardIteratorT operator()( + StorageT& Storage, + InputT& Input, + ForwardIteratorT InsertIt, + ForwardIteratorT SegmentBegin, + ForwardIteratorT SegmentEnd ) + + { + // Call replace to do the job + ::boost::algorithm::detail::replace( Input, InsertIt, SegmentBegin, Storage ); + // Empty the storage + Storage.clear(); + // Iterators were not changed, simply return the end of segment + return SegmentEnd; + } + }; + + // Process one segment in the replace_all algorithm + template< + typename StorageT, + typename InputT, + typename ForwardIteratorT > + inline ForwardIteratorT process_segment( + StorageT& Storage, + InputT& Input, + ForwardIteratorT InsertIt, + ForwardIteratorT SegmentBegin, + ForwardIteratorT SegmentEnd ) + { + return + process_segment_helper< + has_stable_iterators::value>()( + Storage, Input, InsertIt, SegmentBegin, SegmentEnd ); + } + + + } // namespace detail + } // namespace algorithm +} // namespace boost + +#endif // BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP diff --git a/contrib/src/boost/algorithm/string/detail/sequence.hpp b/contrib/src/boost/algorithm/string/detail/sequence.hpp index 8c8bd97..dc47409 100644 --- a/contrib/src/boost/algorithm/string/detail/sequence.hpp +++ b/contrib/src/boost/algorithm/string/detail/sequence.hpp @@ -1,200 +1,200 @@ -// Boost string_algo library sequence.hpp header file ---------------------------// - -// Copyright Pavol Droba 2002-2003. -// -// 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) - -// See http://www.boost.org/ for updates, documentation, and revision history. - -#ifndef BOOST_STRING_DETAIL_SEQUENCE_HPP -#define BOOST_STRING_DETAIL_SEQUENCE_HPP - -#include -#include -#include -#include -#include - -#include - -namespace boost { - namespace algorithm { - namespace detail { - -// insert helpers -------------------------------------------------// - - template< typename InputT, typename ForwardIteratorT > - inline void insert( - InputT& Input, - BOOST_STRING_TYPENAME InputT::iterator At, - ForwardIteratorT Begin, - ForwardIteratorT End ) - { - Input.insert( At, Begin, End ); - } - - template< typename InputT, typename InsertT > - inline void insert( - InputT& Input, - BOOST_STRING_TYPENAME InputT::iterator At, - const InsertT& Insert ) - { - ::boost::algorithm::detail::insert( Input, At, ::boost::begin(Insert), ::boost::end(Insert) ); - } - -// erase helper ---------------------------------------------------// - - // Erase a range in the sequence - /* - Returns the iterator pointing just after the erase subrange - */ - template< typename InputT > - inline typename InputT::iterator erase( - InputT& Input, - BOOST_STRING_TYPENAME InputT::iterator From, - BOOST_STRING_TYPENAME InputT::iterator To ) - { - return Input.erase( From, To ); - } - -// replace helper implementation ----------------------------------// - - // Optimized version of replace for generic sequence containers - // Assumption: insert and erase are expensive - template< bool HasConstTimeOperations > - struct replace_const_time_helper - { - template< typename InputT, typename ForwardIteratorT > - void operator()( - InputT& Input, - BOOST_STRING_TYPENAME InputT::iterator From, - BOOST_STRING_TYPENAME InputT::iterator To, - ForwardIteratorT Begin, - ForwardIteratorT End ) - { - // Copy data to the container ( as much as possible ) - ForwardIteratorT InsertIt=Begin; - BOOST_STRING_TYPENAME InputT::iterator InputIt=From; - for(; InsertIt!=End && InputIt!=To; InsertIt++, InputIt++ ) - { - *InputIt=*InsertIt; - } - - if ( InsertIt!=End ) - { - // Replace sequence is longer, insert it - Input.insert( InputIt, InsertIt, End ); - } - else - { - if ( InputIt!=To ) - { - // Replace sequence is shorter, erase the rest - Input.erase( InputIt, To ); - } - } - } - }; - - template<> - struct replace_const_time_helper< true > - { - // Const-time erase and insert methods -> use them - template< typename InputT, typename ForwardIteratorT > - void operator()( - InputT& Input, - BOOST_STRING_TYPENAME InputT::iterator From, - BOOST_STRING_TYPENAME InputT::iterator To, - ForwardIteratorT Begin, - ForwardIteratorT End ) - { - BOOST_STRING_TYPENAME InputT::iterator At=Input.erase( From, To ); - if ( Begin!=End ) - { - if(!Input.empty()) - { - Input.insert( At, Begin, End ); - } - else - { - Input.insert( Input.begin(), Begin, End ); - } - } - } - }; - - // No native replace method - template< bool HasNative > - struct replace_native_helper - { - template< typename InputT, typename ForwardIteratorT > - void operator()( - InputT& Input, - BOOST_STRING_TYPENAME InputT::iterator From, - BOOST_STRING_TYPENAME InputT::iterator To, - ForwardIteratorT Begin, - ForwardIteratorT End ) - { - replace_const_time_helper< - boost::mpl::and_< - has_const_time_insert, - has_const_time_erase >::value >()( - Input, From, To, Begin, End ); - } - }; - - // Container has native replace method - template<> - struct replace_native_helper< true > - { - template< typename InputT, typename ForwardIteratorT > - void operator()( - InputT& Input, - BOOST_STRING_TYPENAME InputT::iterator From, - BOOST_STRING_TYPENAME InputT::iterator To, - ForwardIteratorT Begin, - ForwardIteratorT End ) - { - Input.replace( From, To, Begin, End ); - } - }; - -// replace helper -------------------------------------------------// - - template< typename InputT, typename ForwardIteratorT > - inline void replace( - InputT& Input, - BOOST_STRING_TYPENAME InputT::iterator From, - BOOST_STRING_TYPENAME InputT::iterator To, - ForwardIteratorT Begin, - ForwardIteratorT End ) - { - replace_native_helper< has_native_replace::value >()( - Input, From, To, Begin, End ); - } - - template< typename InputT, typename InsertT > - inline void replace( - InputT& Input, - BOOST_STRING_TYPENAME InputT::iterator From, - BOOST_STRING_TYPENAME InputT::iterator To, - const InsertT& Insert ) - { - if(From!=To) - { - ::boost::algorithm::detail::replace( Input, From, To, ::boost::begin(Insert), ::boost::end(Insert) ); - } - else - { - ::boost::algorithm::detail::insert( Input, From, ::boost::begin(Insert), ::boost::end(Insert) ); - } - } - - } // namespace detail - } // namespace algorithm -} // namespace boost - - -#endif // BOOST_STRING_DETAIL_SEQUENCE_HPP +// Boost string_algo library sequence.hpp header file ---------------------------// + +// Copyright Pavol Droba 2002-2003. +// +// 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) + +// See http://www.boost.org/ for updates, documentation, and revision history. + +#ifndef BOOST_STRING_DETAIL_SEQUENCE_HPP +#define BOOST_STRING_DETAIL_SEQUENCE_HPP + +#include +#include +#include +#include +#include + +#include + +namespace boost { + namespace algorithm { + namespace detail { + +// insert helpers -------------------------------------------------// + + template< typename InputT, typename ForwardIteratorT > + inline void insert( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator At, + ForwardIteratorT Begin, + ForwardIteratorT End ) + { + Input.insert( At, Begin, End ); + } + + template< typename InputT, typename InsertT > + inline void insert( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator At, + const InsertT& Insert ) + { + ::boost::algorithm::detail::insert( Input, At, ::boost::begin(Insert), ::boost::end(Insert) ); + } + +// erase helper ---------------------------------------------------// + + // Erase a range in the sequence + /* + Returns the iterator pointing just after the erase subrange + */ + template< typename InputT > + inline typename InputT::iterator erase( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator From, + BOOST_STRING_TYPENAME InputT::iterator To ) + { + return Input.erase( From, To ); + } + +// replace helper implementation ----------------------------------// + + // Optimized version of replace for generic sequence containers + // Assumption: insert and erase are expensive + template< bool HasConstTimeOperations > + struct replace_const_time_helper + { + template< typename InputT, typename ForwardIteratorT > + void operator()( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator From, + BOOST_STRING_TYPENAME InputT::iterator To, + ForwardIteratorT Begin, + ForwardIteratorT End ) + { + // Copy data to the container ( as much as possible ) + ForwardIteratorT InsertIt=Begin; + BOOST_STRING_TYPENAME InputT::iterator InputIt=From; + for(; InsertIt!=End && InputIt!=To; InsertIt++, InputIt++ ) + { + *InputIt=*InsertIt; + } + + if ( InsertIt!=End ) + { + // Replace sequence is longer, insert it + Input.insert( InputIt, InsertIt, End ); + } + else + { + if ( InputIt!=To ) + { + // Replace sequence is shorter, erase the rest + Input.erase( InputIt, To ); + } + } + } + }; + + template<> + struct replace_const_time_helper< true > + { + // Const-time erase and insert methods -> use them + template< typename InputT, typename ForwardIteratorT > + void operator()( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator From, + BOOST_STRING_TYPENAME InputT::iterator To, + ForwardIteratorT Begin, + ForwardIteratorT End ) + { + BOOST_STRING_TYPENAME InputT::iterator At=Input.erase( From, To ); + if ( Begin!=End ) + { + if(!Input.empty()) + { + Input.insert( At, Begin, End ); + } + else + { + Input.insert( Input.begin(), Begin, End ); + } + } + } + }; + + // No native replace method + template< bool HasNative > + struct replace_native_helper + { + template< typename InputT, typename ForwardIteratorT > + void operator()( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator From, + BOOST_STRING_TYPENAME InputT::iterator To, + ForwardIteratorT Begin, + ForwardIteratorT End ) + { + replace_const_time_helper< + boost::mpl::and_< + has_const_time_insert, + has_const_time_erase >::value >()( + Input, From, To, Begin, End ); + } + }; + + // Container has native replace method + template<> + struct replace_native_helper< true > + { + template< typename InputT, typename ForwardIteratorT > + void operator()( + InputT& Input, + BOOST_STRING_TYPENAME InputT::iterator From, + BOOST_STRING_TYPENAME InputT::iterator To, + ForwardIteratorT Begin, + ForwardIt